Contributing to nmstate as Outreachy Intern

Contributing to nmstate as Outreachy Intern

Hello everyone! I was selected as an outreachy intern for 2020 and during my tenure I contributed to nmstate under Fedora organisation as a part of the Outreachy Internship Program. Outreachy is three months paid remote internship program for the under-represented group. Their main goal is to support everyone who wants to get into tech and get them more involved with open source. Organisations like Linux kernel, Apache, CNCF, Fedora, Mozilla, and many more take part in this program and the internship projects may include programming, user experience, documentation, data science or community event planning, and many more. An experienced mentor from each community helps each intern in successfully completing their internships. More information about the eligibility criteria, the timeline, and time commitment can be found on their website. The most important thing for any beginner is to know that there is no experience required to apply as well as to work on their project. It’s a very good opportunity for anyone to get industry-level exposure and start their career.

About the project

As mentioned on the project repository

Nmstate is a library with an accompanying command-line tool that manages host networking settings in a declarative manner.

The networking state is described by a pre-defined schema. Reporting of current state and changes to it (desired state) both conform to the schema.

NMState is aimed to satisfy enterprise needs to manage host networking through a northbound declarative API and multi-provider support on the southbound. NetworkManager acts as the main (and currently the only) provider supported.

On the other hand, the nispor(Network Inspector) project is designed to providing a unified interface for Linux network state querying. Basically, nmstate uses nispor to provide the interface. Nispor is a native rust/c/python API and a command-line tool that queries Linux network state.

Goals to achieve

There are users that want to configure Wireguard and Wifi interfaces using Nmstate/Nispor. In order to solve this issue, I worked on implementing the wireguard on nmstate using NetworkManager and Nispor. After wireguard support is completely done. We will try to add Wifi support as well to Nmstate and Nispor.

For newcomers

Nmstate is a very newcomer friendly community. Anyone working in the field of networking or even with basic knowledge can start with the project. The community is so warm and welcoming and everyone is ready to help. All you need to do is drop a hi! in IRC channel(#nmstate) with your introduction and how you want to proceed and I am sure someone will be there to help you out. The two most important thing that caught my attention when I started out was that everything is so well documented and the codebase is quite descriptive and my mentor(goes by ffmancera on IRC) sent me some really resourceful study material for me to understand the project in a deeper sense. These things really help me kickstart my contribution.

After contributing for months now, I can see myself grow from a person totally clueless at the beginning to somebody who can now complete my tasks on my own. I learned so many new terms and coding practices. There is a lot I learned in just these three months few of them being:

  • Software can be both extremely tough and rewarding. Planning is really important, and that is not just making a time schedule with parts of the project. Research into potential roadblocks and allocating space for them is essential as well.
  • Working as part of an inclusive community makes a lot of difference- both in terms of motivation for and quality of work.
  • Sometimes schedules and tests don’t work out the way they should. It is okay, just make sure to ask for help if you are stuck.

The most important thing - Asking questions. This one has taken a lot of courage battling imposter syndrome. It is easy to feel like you are asking too soon or are wasting your mentors’ time asking questions but that's a totally contradictory school of thought that my mentor had. He told me to ask all the questions and doubts I have had in mind. Although I still feel very shy, I can at least ask questions to my mentor, so yay! :P

I had an impression that Outreachy is majorly about building software- now I realise it is more about building a software community that is diverse, inclusive and welcoming. Thank you for lending me your ears. :D