Outreachy Internship Wrap-up
Wrapping up my Outreachy Internship with Debian
My internships with the Debian js-team has been so eventful and gracefully intense that hardly did I realize 13 weeks are already gone :) . This, of course does not in any way breach the intensity of my involvement with Debian, but rather means I could now take up more general packaging tasks than just those specific to my Internship projects. This is rather an unbounded liberty to explore and excel as Debian maintainer ๐๐บ.
Conquering My Initial Fears
When I started contributing to Debian, my initial intention was to get involved in the most mentally challenging opensource project . I wasn't thinking about getting selected as an intern because I joined a bit late, I just wanted to learn and conquer my fears about linux.
Coming from a windows os background, I was used to doing everything through GUI, everything linux looked too high-handed for me. I had attempted learning Docker and Containerization a few times but failed.
When I started contributing under Debian js-team, everything was all about command line, and I had no problem accepting the new way of doing things as that was what I wanted to do. Debian took me steps ahead and placed me on a totally different mental horizon, I'm now in love with command line usage and I hardly do anything through the GUI except browser and vscode editor. These demistyfied things a lot for me and made me fall in love with the whole linux thing. The last time I tried to learn Docker , everything was now clear and enjoyable and lovely ๐ค๐ฅฐ. Being in love with the whole linux thing means everything else began to look simpler. Most of the things I found difficult in my stack as a Javascript Developer are now easy ๐
My Mentors are Incredible!
When I eventually got selected as an intern with Debian, I had a new fear of how I could thrive as a newbie in this community of extremely experienced linux developers. My mind was filled with uncertainties, but I had a little courage that having updated and uploaded ( sponsored ) new Debian packages, I got this ๐ช๐. My mentors and the js-team at large came to my rescue, there were extremely helpful. Many thanks Pirate Praveen, Akshay Dinesh, Nilesh, Yadd, and every other members of the Debian js-team. The extent of your help cannot be put in words, all I can say is thank you, and keep being awesome โค๏ธ
A Key Factor I Must Mention
In as much as I always desire exploring source codes of small APIs ( redux for instance ), I couldn't have in a thousand years attempted to explore that of yarn or npm which are so big. In order to control yarn to our needs by extending it through the plugin we're building, I had to really dive deep into the source code of yarn berry, yarn classic and npm . These were key to my little success in writing a plugin that ultimately manages your packages - salsa.debian.org/js-team/yarn-plugin-apt . The important icing on the cake is that this ( yarn source exploration ) enabled me to understand the architecture of a package manager, and hence will now use yarn like a pro - from the viewpoint of the authors ๐ . This also boosted my confidence and helped me understand a lot of advanced node concepts, and exposed me to some amazing packages I will probably be using in my susequent nodejs projects.
Boosted Confidence in Opensource Contributions
In the course of this project, I've forwarded a few patches which were accepted by the upstream maintainers . This means I've had the opportunity to contribute to other opensource projects in this period ( for instance - Contributor #6
) .
These have kind of given me a sense of membership within the opensource ecosystem.
The confidence is high ๐, I will now continue forwarding patches and making contributions to many other opensource projects.
Skills I learned
- Packaging and updating packages for Debian and linux in general
- Creating and managing patches to Debian packages
- Advanced Typescript usage
- Writing a package manager
- Writing a robust yarn plugin
- How yarn works
- Linux command line essentials
- Containerization ( LXC and Docker )
Project Progress Report
We architectured the plugin to provide 4 base commands:
yarn apt
yarn apt install
yarn apt copy
yarn apt link
For details on the options to these commands and their usage information, check the documentation.
So far the initial implementations of the first 3 commands are complete, we're working towards building the apt link
command and enhancing the apt install
command as highlighted in this issue
Next Steps
Upon the completion of the plugin and production optimizations, I intend to get actively involved in Debian packages maintainance and also take system administration courses/ tutorials. My goal is to ultimately become a Debian Maintainer and then Debian Developer ๐, and I know it is possible with the amazing people we've got in the js-team โค๏ธ