Outreachy Internship Wrap-up

Outreachy Internship Wrap-up

Wrapping up my Outreachy Internship with Debian

ยท

4 min read

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 โค๏ธ

ย