diff --git a/static/content/posts/gsoc/my-gsoc-proposal.md b/static/content/posts/gsoc/my-gsoc-proposal.md new file mode 100644 index 0000000..22ba72d --- /dev/null +++ b/static/content/posts/gsoc/my-gsoc-proposal.md @@ -0,0 +1,359 @@ +--- +title: "New Build System and improving CI/CD workflow" +date: 2023-03-30 21:14 +tags: [gsoc, fossology, proposal] +category: gsoc +description: It has been 2 years since I was a Google Summer of Code Student. It was an outstanding opportunity and I really enjoyed working on the project. Not only that, but it added numerous skills to my resume and polished many others. Today I want to make my proposal public, that helped me get selected. +image: "/images/tools-build-comparision.webp" +--- + +## Current Build System and Workflow + +It has been 2 years since I was a Google Summer of Code Student. It was an outstanding opportunity and I really enjoyed working on the project. Not only that, but it added numerous skills to my resume and polished many others. Today I want to make my proposal public, that helped me get selected. + +### Build System + +FOSSology’s build system is based on multilevel Makefile that work together to +provide a build infrastructure for the project. Although make is a robust build +system, but it is too outdated and slow compared to modern build systems. Although +build configurations are not supposed to be updated as often as source files, +there are few noticeable problems with make. + +* Configuration is mostly hard-coded, i.e., if needed to use different tools or add source files, the Makefile needs to be updated +* All the dependencies and libraries have to be added manually by writing configuration for each of them +* Although the FOSSology project currently supports Linux only, if in the future it has to be ported to other platforms, make won’t be able to support it. Hence, it is not future safe. + +### Workflow (Continuous Integration) + +FOSSology project has been using open-source tier Travis CI for all its continuous +integration and deployment needs. GitHub launched its CI/CD system some years ago, +and it has become a standard for CI/CD. Travis CI does the work but provides significantly +fewer features when compared to GitHub Actions. + +* It has been observed that Travis CI is noticeably slower than GitHub Action for a similar configuration +* Travis CI lacks the tight and seamless integration of GitHub Actions with other GitHub Services, some of them are the ability to integrate and communicate with GitHub apps, auto-manage to pull requests and issues, better support for Dockerized builds. + +## Why a New Build System(CMake)? + +There were many possible candidates for a new build system for the FOSSology project. +Each has its pros and cons. After numerous comparisons and the ability of the new +build system to integrate well with the existing system, CMake seems to be the best +choice. Given below is a quick overview of different build systems and their execution times. + +![Configure and Build time comparision](/images/tools-build-comparision.webp) + +Here, CMake (Make & Ninja) performs better than average compared to other tools. +The criteria for choosing CMake were not only performance, but many other factors. + +* The build system should be easily available on all supported distros - Cmake supports _UNIX, MS Windows (MSVC, Borland, Cygwin, MinGW) and Mac OS X, and more_ +* It should be easy to install – CMake is available via all popular package managers and repositories +* Should improve build speed – In general, CMake always outperforms bare metal make systems. +* The learning curve is not too steep – CMake is not very hard and neither too easy to learn. For common projects, it is easy to learn. + +### CMake Perks + +* No other dependencies apart from the C/C++ compiler +* Includes a testing framework (CTest) +* Includes a multipurpose packaging solution (CPack) +* Migrating from Make to CMake is easier compared to other build systems +* Can generate platform-specific build configuration; hence the same script can be used for multiple platforms +* All modern C/C++ IDEs have inbuilt support for CMake or via a plugin (Visual Studio, XCode, CLion) +* Can load dependencies automatically from the internet or local file system +* Source and build folders are separate by default in CMake, this avoids bloating the source folders and accidentally deleting important files. + +### Comparison of CMake and Make syntax + +#### Make Syntax + +```makefile +CXXFLAGS = -I../include -I. + +SRC := $(wildcard *.cc) +DEP := $(patsubst %.cc,%.d,$(SRC)) +OBJ := $(patsubst %.cc,%.o,$(SRC)) + +all: $(PROGNAME) + +$(PROGNAME): $(OBJ) ../lib/$(LIBNAME) + $(CXX) $(CXXFLAGS) $^ -o $@ + +%.d: %.cc + $(CXX) -MM $(CXXFLAGS) $< | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@ + +ifneq ($(filter clean,$(MAKECMDGOALS)),clean) +-include $(DEP) +endif + +clean: + $(RM) $(DEP) $(OBJ) $(PROGNAME) +``` + +#### Corresponding CMake File + +```cmake +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) + +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} source) +add_executable(hellocmake ${source}) +target_link_libraries(hellocmake LINK_PUBLIC libhellocmake) +``` + +### How to (c)make the move? + +#### Step 1: Determine the total number and types of Makefiles to migrate + +We will determine the required time for the whole migration and the number of respective +CMake scripts to be written. In general, CMake scripts have fewer lines than Make +scripts for the same task. However, the top-level CMake configuration can be very +complex depending on how many configurations we want to create. + +* There are [168 Makefile](https://github.com/search?q=Makefile+repo%3Afossology%2Ffossology+filename%3A%22Makefile%22&type=Code)configurations as of now in FOSSology Project +* Types: Build, Install, Test, Uninstall, Coverage, Clean, Package, and other sister types + +#### Step 2: Start migrating Makefiles one agent/directory at a time + +The FOSSology project’s build system follows a bottom-up approach. That means all +the child directories need to be built first to build their parents. Since most +of the agents in FOSSology are independent programs, their CMake config can be +written separately. I have created a sample project to demonstrate the Make and +CMake syntax and build process. It also demonstrates the cross-platform ability +of CMake. The project can be accessed here: [https://github.com/avinal/make-cmake](https://github.com/avinal/make-cmake) + +#### Step 3: Create the Top-Level CMakeLists.txt to link all the libraries + +The top-level CMakelIsts.txt will be complex and most of the work, as well as testing, +will be done during this phase. In the initial stage, I plan to create just the +minimum to at least build the whole project in one go without any bells and whistles. + +#### Step 4: Add required configurations (Install, Package, Test) + +Once the top-level CMakeLists.txt is building the project without any problems. +We will now add the required configurations such as install, package, test, uninstall, +and other configurations. + +#### Step 5: Test the new Build System + +It is almost done, we may start testing our shiny build system. Checking every +single configuration for errors and loopholes. This step will also make use of a +new CI/CD system for testing purposes. Thus, simultaneously migrating the CI from +Travis CI to GitHub Actions. + +## Improving the CI/CD workflow + +With the new build system, the FOSSology project will get a new CI/CD too. There +were several tasks proposed for improving the workflow of FOSSology. I have completed +many of them already. Given Below is an overview of the tasks proposed and their status. + +* Syntax Check ([#1919](https://github.com/fossology/fossology/pull/1919)) +* Static Code Analysis ([#1919](https://github.com/fossology/fossology/pull/1919)) +* Copy/Paste Detector ([#1919](https://github.com/fossology/fossology/pull/1919)) +* PHP Codesniffer ([#1919](https://github.com/fossology/fossology/pull/1919)) +* Docker Tests +* C/C++ agent tests +* PHPUnit tests +* GitHub Page Release ([#1917](https://github.com/fossology/fossology/pull/1917)) +* Implementing Caching in workflows +* Implement source install (reference[#207](https://github.com/fossology/fossology/issues/207)) +* DOC, Commit, and PR guideline checks + +### How will the workflow improve? + +We are migrating the whole workflow to the GitHub Actions platform, in general, +GHA provides better integration and builds time. + +#### Step 6: Migrate the C/C++ agent tests and PHPUnit Tests + +By this time, we have already migrated our build system to CMake and thus the new +workflow will be based on CMake configurations. The goal will be to add more platforms +(Debian/Ubuntu/Fedora etc.) for tests and upgrade the tools to their latest compatible versions. + +#### Step 7: Implement Source Install test for Ubuntu, Debian, and Fedora + +As of now, source install is not tested for any of the distributions, so this step +aims at adding source install testing capability to the new CI. + +#### Step 8: Implement caching in workflows and testing + +GitHub Action can store cache dependencies for a given period and thus reduces the +number of times the virtual machine has to fetch packages. This in turn reduces +the overall build time as well as reduces the load on servers. + +## Project Deliverables + +* New Build System (CMake) for the project +* New Packaging, Install and Test configuration +* C/C++ agents tests for multiple versions of GCC +* PHPUnit tests +* Docker Tests +* Cached Workflows +* Source installs tests for Debian, Ubuntu, Fedora +* Checks for Pull Requests and Commit guidelines + +## Other Deliverables + +* For track my progress as well as a resource for future contributors, I will be writing a weekly/biweekly blog. The same can be used for preparing the final GSoC report. +* Since CMake will be new for the FOSSology Community, I will document all the important topics that I will come across while migrating the build system. This will be both a handpicked resource and a reference for future contributors. +* I would love to be a part of the community even after GSoC, although the build system and CI/CD doesn’t need to be updated that often, I would like to contribute to other parts of the project. + +## Experience + +I have 3 years of experience in C/C++ programming and one year of experience with +CMake and Make. I have used CMake and Make for many of my projects, as well as contributed +to other open-source projects. Furthermore, I have created/migrated the CI/CD for +many open-source organizations to GitHub Actions, and created many personal projects +using GHA as well. + +I have been contributing to many open-source organizations since 2019. I participated +as a Technical Writer in the Google Season of Docs 2021 program under the VideoLAN +organization. So, I have a nice understanding of open-source project workflow and +contribution standards. I am well versed in Git and GitHub. + +## Tech Stack + +* CI/CD: **GitHub Actions, Travis CI** +* Build Systems: **CMake, Make** +* Languages: **C/C++, PHP, Shell Script** +* Version Control: **Git, GitHub** +* OS: **Ubuntu, Fedora, Debian** +* Compilers: **GCC, Clang** +* Containers: **Docker** + +## Proposed Timeline + +### Community Bonding (May 17th - June 6th, 2021) + +* Discussing and collaborating with fellow participants and getting familiar with the FOSSology community and projects. +* Since CMake is new for our FOSSology community, I will learn and bring in the resources so that people get comfortable with it before the coding period starts. +* Going through the codebase and plan strategies for the migration, his includes identification of various types, segregation of libraries, executables, and dependencies. + +### Coding Week 1 (June 7th - June 13th, 2021) + +* Plan the priority order of migration, and create lists for all different configurations +* Create CMake configuration for libraries. +* There are approximately 8 libraries, since configuration is not that complex, it should take no longer than 1 week to complete + +### Coding Week 2 & 3 (June 14th - June 27th, 2021)🚩 + +* If libraries are complete, migrate the agents one by one, since FOSSOlogy is based on a modular architecture, many agents can be independently migrated +* There are some 27 agents, 2 agents per day should take 2 weeks; hence I have merged these weeks. +* Time may vary for different agents to be migrated to CMake, but on average, this should take 2 weeks. +* Buffer Period + +### Coding Week 4 (June 28th - July 4th, 2021) + +* By now all the agents and libraries are migrated and presently the top-level CMakeLists.txt should be created. Since this file will be complex and will need all the child configuration to work, the testing and completion should approximately take 1 week. +* This week will also check the overall gains in terms of performance and stability of the new build system. +* This is also the minimum requirement for the build system to be said working and to add more configurations + +### Coding Week 5 (July 5th - July 11th, 2021)🚩 + +* This week will continue the development of the Top-level CMake configuration. +* More configuration will be added for Install, Test, Uninstall, Package +* If completed, testing will start and will continue for the next week +* Buffer Period + +### Coding Week 6 (July 12th - July 18th, 2021) First Evaluation + +* The build system is a very crucial element of the project; hence it must be tested thoroughly before final rolling. +* This week, I will continue the development of all required configuration and testing of the new Build System. +* By the end of this week, the new build system will be able to properly build the project and use the configurations, this also marks the end of the first phase and first evaluation. +* Buffer Period + +### Coding Week 7 (July 19th - July 25th, 2021) + +* With all the build system working, this week will be used to migrate the CI from Travis to GitHub Actions starting with the C/C++ agent’s test +* Now the C++ agent tests will be executed using the new Build System +* If completed, then the PHPUnit test migration will start + +### Coding Week 8 (July 26th - August 1st, 2021)🚩 + +* Complete the PHPUnit CI migration +* Add Docker tests +* Start implementing source install test CI + +### Coding Week 9 (August 2nd - August 8th, 2021) + +* Complete Source Install CI +* Start implementing workflow caching +* Fixing bugs and clearing backlogs +* Buffer Period + +### Coding week 10 (August 9th - August 15th, 2021)🚩 + +* Checking the build system +* Checking the CI/CD +* Completing reports and documentation +* Update the existing documentation and readme for the new build system and CI + +### Final Evaluations (August 16th - August 23rd, 2021) + +* Code and report submission + +### Milestones 🚩 + +1. All agents and libraries have now a CMake build configuration +2. Top-level CMake configuration with a stable build +3. Top-level CMake configuration with other configs i.e. install, package, test +4. C/C++ agent tests, PHPUnit test implemented in CI +5. CI/CD is complete according to the task list + +## **Pre GSoC Involvements** + +### In FOSSology + +* [feat(CI): Migrate API docs generation and deployment to GitHub Actions](https://github.com/fossology/fossology/pull/1917) [MERGED] +* [feat(CI): Migrate Static Checks and Analysis to GitHub Actions from Travis CI](https://github.com/fossology/fossology/pull/1919) [MERGED] +* [fix(make): Fix warnings in make for Ubuntu 20.04.2 LTS](https://github.com/fossology/fossology/pull/1923) [OPEN] +* [Upgrade this project from PHP 7 to PHP 8](https://github.com/fossology/fossology/issues/1920) [ISSUE] +* [Improving build system and CI/CD flow][https://github.com/fossology/fossology/discussions/1931](DISCUSSION) + +### Other Contributions + +* [VideoLAN/VLC for Android User Documentation](https://code.videolan.org/docs/vlc-android-user) [PROJECT] +* [boostorg/gil](https://github.com/boostorg/gil/issues?q=author%3Aavinal) [2 PR, 1 ISSUE] +* [embox/embox](https://github.com/embox/embox/issues?q=author%3Aavinal) [1 PR] +* [JetBrains/swot][https://github.com/JetBrains/swot/pulls?q=author%3Aavinal](1 PR) +* [jupyter-xeus/xeus-sqlite][https://github.com/jupyter-xeus/xeus-sqlite/issues?q=author%3Aavinal](1 PR, 1 ISSUE) +* [github/explore](https://github.com/github/explore/pulls?q=avinal) [2 PR] + +## My Development Environment + +* Operating Systems: Ubuntu 20.04 LTS, Windows 10 20H2 +* Editors: Visual Studio Code, Vim +* IDE: Visual Studio, CLion +* Internet Speed: 20 Mbps + +## References and Resources + +1. [A sample Make CMake project structure and comparison](https://github.com/avinal/make-cmake) +2. [CMake Reference Documentation — CMake 3.20.0 Documentation](https://cmake.org/cmake/help/latest/) +3. [A simple comparison](https://mesonbuild.com/Simple-comparison.html) of different build systems +4. [Why the KDE project switched to CMake -- and how (continued)](https://lwn.net/Articles/188693/) +5. [bksys / scons (Re: win32 port)](https://mail.kde.org/pipermail/kde-buildsystem/2006-January/000410.html) +6. [CMake vs Make](https://prateekvjoshi.com/2014/02/01/cmake-vs-make/) + +## Motivation + +Ever since I came to know about GSoC(that was in my first year), I wanted to be +a part of it. This was even before I got the idea of Open Source. Once I started +contributing to open source, I started liking it and gradually became a part. I +did Google Season of Docs 2020 under the VideoLAN organization and got a nice overview +of open-source development, communities, and programs. + +I found that the FOSSology community is very passionate about open-source contributions, +and they welcome experts and noobs alike. Other than that, open community meetings +are one of the best things I encountered in my open-source journey. I hope by being +a part of this community I will exchange skills and experiences and thus help both +the community and me. + +## Commitments + +This summer, I don’t have any classes or internships. I found this project very +fascinating, and I have already worked out a portion of this project, so this project +is my _priority_. Although the program is supposed to be part-time, I will be able +to work full time as well on weekends. I will attend all the meetings and prepare +reports on time. I am an active member of the community presently, and will continue +the streak during GSoC as well as after GSoC. + +**Thanks** diff --git a/static/content/posts/posts.json b/static/content/posts/posts.json index 861352d..c19523f 100644 --- a/static/content/posts/posts.json +++ b/static/content/posts/posts.json @@ -1 +1 @@ -[{"title":"Tekton Results to the Rescue","date":"2023-03-16 20:47","slug":"hey-tekton-results","category":"blogs","image":"/images/tekton-results-wall.webp","description":"Tekton Results aims to help users logically group CI/CD workload history and separate out long term result storage away from the Pipeline controller."},{"title":"Developing Minimal Tekton Server","slug":"lovely-dangerous-things-redhat","image":"/images/development.webp","description":"This blog is a descreptive account of the development of Minimal Tekton Server. This is highly technical in nature, so please make sure that you have sufficient knowledge about Golang, Docker, Kubernetes and TektonCD.","date":"2022-02-27 20:47","category":"development"},{"title":"I am loving it! RedHat","slug":"i-am-loving-it-redhat","image":"/images/fedora-wall.webp","description":"I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.","date":"2022-02-25 20:47","category":"development"},{"title":"GSoC'21 Final Evaluation Report","slug":"final-evaluation","image":"/images/gsoc-wall.webp","description":"This is the final report of my Google Summer of Code 2021 at The FOSSology Project. One of the major improvements over the previous build system is faster build times. CMake generates parallel build-enabled configurations for all generators.","date":"2021-08-19 23:07","category":"gsoc"},{"title":"GSoC'21 Coding Week 10","slug":"meeting-11","image":"/images/tech-wallpaper-12.webp","description":"This week I implemented CMake testing configuration and fixed most of the tests. As of now all but 5 tests are working fine.","date":"2021-08-14 22:47","category":"gsoc"},{"title":"GSoC'21 Coding Week 9","slug":"meeting-10","image":"/images/tech-wallpaper-11.webp","description":"This week I worked on CMake testing configuration. Most of the time was spent understanding the previous testing architecture.","date":"2021-08-06 22:47","category":"gsoc"},{"title":"GSoC'21 Coding Week 8","slug":"meeting-9","image":"/images/tech-wallpaper-10.webp","description":"This week I implemented CMake packaging configuration for FOSSology. The new configuration fixes issue with previous packaging configurations. It also retains the component wise installation features.","date":"2021-07-30 22:47","category":"gsoc"},{"title":"GSoC'21 Coding Week 7","slug":"meeting-8","image":"/images/tech-wallpaper-9.webp","description":"This week I implemented CMake packaging configuration for FOSSology. There were two meetings in this week and this report covers both of them.","date":"2021-07-23 22:22","category":"gsoc"},{"title":"GSoC'21 First Evaluation Report","slug":"first-evaluation","image":"/images/tech-wallpaper.webp","description":"In the first phase of GSoC 2021 at The FOSSology Project, I have completed the desired milestone. As of now, FOSSology can be installed completely via CMake and most of the components are working fine in initial testing.","date":"2021-07-14 12:29","category":"gsoc"},{"title":"GSoC'21 Coding Week 5","slug":"meeting-7","image":"/images/tech-wallpaper-8.webp","description":"This week was dedicated to perfecting CMake Installation Configuration. The installation was tested and bugs were discussed.","date":"2021-07-09 22:22","category":"gsoc"},{"title":"GSoC'21 Coding Week 4.2","slug":"meeting-6","image":"/images/tech-wallpaper-7.webp","description":"In this eighth meeting questions related to post install generation were asked. This was a short meeting.","date":"2021-07-02 22:22","category":"gsoc"},{"title":"GSoC'21 Coding Week 4.1","slug":"meeting-5","image":"/images/tech-wallpaper-6.webp","description":"In this seventh meeting question related to installing the FOSSology were discussed.","date":"2021-06-29 23:22","category":"gsoc"},{"title":"GSoC'21 Coding Week 3","slug":"meeting-4","image":"/images/tech-wallpaper-5.webp","description":"In this fifth meeting, question related to versioning and obtaining commit hash were discussed, this was a short meeting.","date":"2021-06-22 23:22","category":"gsoc"},{"title":"GSoC'21 Coding Week 2","slug":"meeting-3","image":"/images/tech-wallpaper-4.webp","description":"In this fourth meeting, a lot of questions were discussed related to the existing build system and what things we have to drop or modify.","date":"2021-06-18 23:30","category":"gsoc"},{"title":"GSoC'21 Coding Week 1","slug":"meeting-2","image":"/images/tech-wallpaper-3.webp","description":"In this third meeting, I demoed the working build system, currently building executables and libraries, a lot of queries were resolved about writing version files and attaching commits and hashes to the build.","date":"2021-06-11 23:30","category":"gsoc"},{"title":"GSoC'21 Community Bonding Week 1","slug":"meeting-1","image":"/images/tech-wallpaper-2.webp","description":"In this second meeting points over default Makefiles were discussed. Ninja can be used as an alternative for Makefiles.","date":"2021-06-04 22:30","category":"gsoc"},{"title":"GSoC'21 Community Bonding Week 0","slug":"meeting-0","image":"/images/tech-wallpaper-1.webp","description":"This meeting is the first of the recurring weekly GSoC project meetings. In this meeting the current status of progress according to the proposal was discussed and some topics related to current build system based on Make and the new build system based on CMake.","date":"2021-05-28 21:30","category":"gsoc"},{"title":"Hello CMake","slug":"cmake-basics","image":"/images/cmake-office.webp","description":"CMake stands for Cross-platform Make. Normally, a build tool like Make will parse a configuration file (Makefile) that contains all the commands required to build an artifact based on the source files and other resources inside the project.","date":"2021-05-24 23:56","category":"development"},{"title":"How I implemented WakaTime embeddable Coding Graph GHA?","slug":"wakatime","image":"/images/waka.webp","description":"If you use WakaTime to track your coding activity. You can add that to your README as a bar graph or embed it in your blog/portfolio. Just add this action to any of your repositories and there you have it.","date":"2021-02-02 21:47","category":"development"},{"title":"HRT (Hudson River Trading) Systems Internship Interview Experience","slug":"hrt-interview-1","image":"/images/hrt-singapore.webp","description":"Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt. Also, they expected a clear and concise approach.","date":"2021-01-04 21:47","category":"blogs"},{"title":"Move WSL 2 Safely to another Drive","slug":"wsl1","image":"/images/windows-wsl2.webp","description":"It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.","date":"2020-12-31 19:07","category":"development"},{"title":"Create the VLC User Documentation for one Mobile Port(Android)","slug":"gsod2020-report","image":"/images/day-of-cone.webp","description":"The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization.","date":"2020-12-01 23:47","category":"blogs"},{"title":"प्रेम रतन धन पायो","slug":"for-sunshine","image":"/images/fedora-night.webp","description":"प्रकृति की सुंदरता और कलाकारी हिमालय की कण-कण में झलकती है। प्रकृति ने प्रेम को भी हिमालय के जितना ही विशाल और अलौकिक बनाया है । ये एक अलग चर्चा का विषय है कि हिमालय पहले आया या प्रेम। मैं तो प्रेम के पक्ष में हूँ । वो हर अणु-परमाणु जिन्होंने इतने बड़ा पहाड़ खड़ा किया वो सब आपस में प्रेम से बंधे हुए हैं। ये पृथ्वी, सूर्य, चंद्रमा, आकाश-गंगा इत्यादि सब प्रेम से बंधे हुए हैं","date":"2019-09-21 15:47","category":"articles"},{"title":"The Big Red Ants","slug":"big-red-ants","image":"/images/ants.webp","description":"As I observed them making and reparing their nests, I concluded that they are laborious and intellectual. They create their nests bybinding two or more leaves (maybe up to 500) together. They stich the leaves using a stinky white substance either excreted by themselves or from trees.","date":"2012-02-27 22:47","category":"articles"}] \ No newline at end of file +[{"title":"New Build System and improving CI/CD workflow","date":"2023-03-30 21:14","slug":"my-gsoc-proposal","category":"gsoc","description":"It has been 2 years since I was a Google Summer of Code Student. It was an outstanding opportunity and I really enjoyed working on the project. Not only that, but it added numerous skills to my resume and polished many others. Today I want to make my proposal public, that helped me get selected.","image":"/images/tools-build-comparision.webp"},{"title":"Tekton Results to the Rescue","date":"2023-03-16 20:47","slug":"hey-tekton-results","category":"blogs","image":"/images/tekton-results-wall.webp","description":"Tekton Results aims to help users logically group CI/CD workload history and separate out long term result storage away from the Pipeline controller."},{"title":"Developing Minimal Tekton Server","slug":"lovely-dangerous-things-redhat","image":"/images/development.webp","description":"This blog is a descreptive account of the development of Minimal Tekton Server. This is highly technical in nature, so please make sure that you have sufficient knowledge about Golang, Docker, Kubernetes and TektonCD.","date":"2022-02-27 20:47","category":"development"},{"title":"I am loving it! RedHat","slug":"i-am-loving-it-redhat","image":"/images/fedora-wall.webp","description":"I made it to the Red Hat as a DevTools intern. This post is about onboarding and how I prepared myself for working on the actual project.","date":"2022-02-25 20:47","category":"development"},{"title":"GSoC'21 Final Evaluation Report","slug":"final-evaluation","image":"/images/gsoc-wall.webp","description":"This is the final report of my Google Summer of Code 2021 at The FOSSology Project. One of the major improvements over the previous build system is faster build times. CMake generates parallel build-enabled configurations for all generators.","date":"2021-08-19 23:07","category":"gsoc"},{"title":"GSoC'21 Coding Week 10","slug":"meeting-11","image":"/images/tech-wallpaper-12.webp","description":"This week I implemented CMake testing configuration and fixed most of the tests. As of now all but 5 tests are working fine.","date":"2021-08-14 22:47","category":"gsoc"},{"title":"GSoC'21 Coding Week 9","slug":"meeting-10","image":"/images/tech-wallpaper-11.webp","description":"This week I worked on CMake testing configuration. Most of the time was spent understanding the previous testing architecture.","date":"2021-08-06 22:47","category":"gsoc"},{"title":"GSoC'21 Coding Week 8","slug":"meeting-9","image":"/images/tech-wallpaper-10.webp","description":"This week I implemented CMake packaging configuration for FOSSology. The new configuration fixes issue with previous packaging configurations. It also retains the component wise installation features.","date":"2021-07-30 22:47","category":"gsoc"},{"title":"GSoC'21 Coding Week 7","slug":"meeting-8","image":"/images/tech-wallpaper-9.webp","description":"This week I implemented CMake packaging configuration for FOSSology. There were two meetings in this week and this report covers both of them.","date":"2021-07-23 22:22","category":"gsoc"},{"title":"GSoC'21 First Evaluation Report","slug":"first-evaluation","image":"/images/tech-wallpaper.webp","description":"In the first phase of GSoC 2021 at The FOSSology Project, I have completed the desired milestone. As of now, FOSSology can be installed completely via CMake and most of the components are working fine in initial testing.","date":"2021-07-14 12:29","category":"gsoc"},{"title":"GSoC'21 Coding Week 5","slug":"meeting-7","image":"/images/tech-wallpaper-8.webp","description":"This week was dedicated to perfecting CMake Installation Configuration. The installation was tested and bugs were discussed.","date":"2021-07-09 22:22","category":"gsoc"},{"title":"GSoC'21 Coding Week 4.2","slug":"meeting-6","image":"/images/tech-wallpaper-7.webp","description":"In this eighth meeting questions related to post install generation were asked. This was a short meeting.","date":"2021-07-02 22:22","category":"gsoc"},{"title":"GSoC'21 Coding Week 4.1","slug":"meeting-5","image":"/images/tech-wallpaper-6.webp","description":"In this seventh meeting question related to installing the FOSSology were discussed.","date":"2021-06-29 23:22","category":"gsoc"},{"title":"GSoC'21 Coding Week 3","slug":"meeting-4","image":"/images/tech-wallpaper-5.webp","description":"In this fifth meeting, question related to versioning and obtaining commit hash were discussed, this was a short meeting.","date":"2021-06-22 23:22","category":"gsoc"},{"title":"GSoC'21 Coding Week 2","slug":"meeting-3","image":"/images/tech-wallpaper-4.webp","description":"In this fourth meeting, a lot of questions were discussed related to the existing build system and what things we have to drop or modify.","date":"2021-06-18 23:30","category":"gsoc"},{"title":"GSoC'21 Coding Week 1","slug":"meeting-2","image":"/images/tech-wallpaper-3.webp","description":"In this third meeting, I demoed the working build system, currently building executables and libraries, a lot of queries were resolved about writing version files and attaching commits and hashes to the build.","date":"2021-06-11 23:30","category":"gsoc"},{"title":"GSoC'21 Community Bonding Week 1","slug":"meeting-1","image":"/images/tech-wallpaper-2.webp","description":"In this second meeting points over default Makefiles were discussed. Ninja can be used as an alternative for Makefiles.","date":"2021-06-04 22:30","category":"gsoc"},{"title":"GSoC'21 Community Bonding Week 0","slug":"meeting-0","image":"/images/tech-wallpaper-1.webp","description":"This meeting is the first of the recurring weekly GSoC project meetings. In this meeting the current status of progress according to the proposal was discussed and some topics related to current build system based on Make and the new build system based on CMake.","date":"2021-05-28 21:30","category":"gsoc"},{"title":"Hello CMake","slug":"cmake-basics","image":"/images/cmake-office.webp","description":"CMake stands for Cross-platform Make. Normally, a build tool like Make will parse a configuration file (Makefile) that contains all the commands required to build an artifact based on the source files and other resources inside the project.","date":"2021-05-24 23:56","category":"development"},{"title":"How I implemented WakaTime embeddable Coding Graph GHA?","slug":"wakatime","image":"/images/waka.webp","description":"If you use WakaTime to track your coding activity. You can add that to your README as a bar graph or embed it in your blog/portfolio. Just add this action to any of your repositories and there you have it.","date":"2021-02-02 21:47","category":"development"},{"title":"HRT (Hudson River Trading) Systems Internship Interview Experience","slug":"hrt-interview-1","image":"/images/hrt-singapore.webp","description":"Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt. Also, they expected a clear and concise approach.","date":"2021-01-04 21:47","category":"blogs"},{"title":"Move WSL 2 Safely to another Drive","slug":"wsl1","image":"/images/windows-wsl2.webp","description":"It is real pain when you have small SSD and Windows Subsystem for Linux (WSL) is growing exponentially in size. There is no easy way to move the WSL installation to another drive. Here in this blog I will discuss how to tackle this problem with bite size steps.","date":"2020-12-31 19:07","category":"development"},{"title":"Create the VLC User Documentation for one Mobile Port(Android)","slug":"gsod2020-report","image":"/images/day-of-cone.webp","description":"The project was to Create the VLC User Documentation for Android Mobile Port which was previously hosted on VLC wiki pages. The major portion of this was to start everything from scratch including chapter separation, section organization.","date":"2020-12-01 23:47","category":"blogs"},{"title":"प्रेम रतन धन पायो","slug":"for-sunshine","image":"/images/fedora-night.webp","description":"प्रकृति की सुंदरता और कलाकारी हिमालय की कण-कण में झलकती है। प्रकृति ने प्रेम को भी हिमालय के जितना ही विशाल और अलौकिक बनाया है । ये एक अलग चर्चा का विषय है कि हिमालय पहले आया या प्रेम। मैं तो प्रेम के पक्ष में हूँ । वो हर अणु-परमाणु जिन्होंने इतने बड़ा पहाड़ खड़ा किया वो सब आपस में प्रेम से बंधे हुए हैं। ये पृथ्वी, सूर्य, चंद्रमा, आकाश-गंगा इत्यादि सब प्रेम से बंधे हुए हैं","date":"2019-09-21 15:47","category":"articles"},{"title":"The Big Red Ants","slug":"big-red-ants","image":"/images/ants.webp","description":"As I observed them making and reparing their nests, I concluded that they are laborious and intellectual. They create their nests bybinding two or more leaves (maybe up to 500) together. They stich the leaves using a stinky white substance either excreted by themselves or from trees.","date":"2012-02-27 22:47","category":"articles"}] \ No newline at end of file diff --git a/static/images/tools-build-comparision.webp b/static/images/tools-build-comparision.webp new file mode 100644 index 0000000..d45fb20 Binary files /dev/null and b/static/images/tools-build-comparision.webp differ