Contribute Media
A thank you to everyone who makes this possible: Read More

Working for FOSS can make you a better programmer: Insights into my Outreachy internship with Fedora


Outreachy program offers three-month internships for people from groups underrepresented in tech. Interns are paid a stipend of $5,500 and have a $500 travel stipend available to them. Interns work remotely with mentors from Free and Open Source Software (FOSS) communities on projects not limited to just programming but also user experience, documentation, illustration and graphical design.

I am currently interning with Fedora under the Outreachy program, where my task is to is to develop administrative tools for the 389 Directory Server, an enterprise class LDAP (Lightweight Directory Access Protocol) server, used in businesses globally to authenticate and identify people. LDAP is a standard application protocol for accessing and maintaining distributed directory information services over an Internet Protocol (IP) network. I am helping Fedora improve the Directory Servers Python command line tools. In addition to this, the team at Fedora is also investigating into integrating existing C code with Rust (watch here: Integrating Rust with existing C) to improve performance and maintainability. Hence, I am also working on establishing proof of concept for using Rust instead of C and also using Rust with existing C.

I started with fixing bugs in the Directory Server and it enabled me to get more understanding about LDAP concepts, since LDAP has a steep learning curve. My first task was to add the command line support for automember plugin to the Directory Server. Automembership allows a static group to act like a dynamic group, for adding new members to the group. Different automembership definitions create searches that are automatically run on all new directory entries. The automembership rules search for and identify matching entries and then explicitly add those entries as members to the group. I started by added the classes (Auto Membership Plugin, Auto Member Definition, Auto Member Definitions), methods and the tests for these classes and methods (Pull Request). Then I added the support for automember by command line which included creating, removing, editing and showing the automember definitions. This included writing the tests as well. By the end of this task, I learnt about Python decorators, lazy evaluation in Python, using pytest testing tool and writing command line parser and arguments using the argparse library. (This will be shown with live coding and screenshots).

I am currently working on another task which involves building an LRU cache in Rust which stores C allocated strings and can retrieve them. This project will be built using the meson build system. I will also provide tests and asan builds. This task will act as a proof of concept for investigating if meson can replace autotools as the Directory Server build system. During this task, I hope to learn about build systems, LRU caching concept and Rust types and safety.

As you can deduce from my tasks and the key learnings, doing this Outreachy internship with Fedora is helping me to stand at the forefront of technology, learning about LDAP, Python and Rust (polyglot!), which will definitely enable me to become a better programmer and a collaborative community member for Fedora. And I hope to inspire other underrepresented people in tech with my talk about the Outreachy internship and my progress.

in __on sabato 21 aprile at 14:45 **See schedule**


Improve this page