Google Summer of Code 2017 Wrap Up

This year I had the privilege of participating in the Google Summer of Code 2017. This was my second time consecutively participating in the program. Just in case you don’t know the the Google Summer of Code or GSoC for short:

Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from university.
… As a part of Google Summer of Code, student participants are paired with a mentor from the participating organizations, gaining exposure to real-world software development and techniques. Students have the opportunity to spend the break between their school semesters earning a stipend while working in areas related to their interests.

I got selected to work with the BEAM community which is a group of projects that run on the Erlang VM. Within the BEAM umbrella community I got to work with the Barrel project which backs the Barrel database, a modern document-oriented database in Erlang focusing on data locality (put/match the data next to you) and P2P.

I also happened to have had the great opportunity of being mentored by Benoit Chesneau who is the creator of the Barrel database and the popular Python WSGI HTTP server Gunicorn which I had learned about when Instagram was using it.

My task was to build a Barrel plugin which pushes Barrel events (creation, updates and deletion of documents within the database, etc) to RabbitMQ so that other applications can subscribe to these events as part of a loosely coupled system. Another application of this system is to use these events published via RabbitMQ for database replication.

Getting into this project I had learned the Erlang programming language and contributed to the Zotonic project which is an Erlang web framework/CMS but I had not gotten experience with some tools in the Erlang ecosystem like Rebar which is a popular Erlang build tool and the Common Test Framework which is used for testing. Never had experience with these tools because on previous projects they were already setup but on this project I had to set them up myself which led to lots of learning and hair pulling. Also for the first time I had to build Erlang from source in order to enable dirty schedulers which is a requirement for Barrel. Blog post on building Erlang with dirty schedulers enabled is coming soon.

With lots of mentoring, three months and 45+ commits later (merge commits not counted)there is a working plugin that does the task.

This was a great opportunity during which I have learned a lot and much appreciation goes to Google and my mentor who created time to guide me on some novice mistakes when he had more pressing stuff to attend to. I really do appreciate it. Thanks!

What Next?

I am currently searching for a remote Erlang job in which my new found skills can be of help. I have had a great time with Erlang and will love to keep working with it. As concerns open source I have been doing it and will continue contributing to it. Also plan to hang around the Barrel community and continue maintaining this project.

Below is a list of the commits I made to the project during the GSoC period: