I've been accepted into Google Summer of Code 2013 as a student participant. Over the course of the next three months, I will be working with the GNU Mailman project, which was accepted under the umbrella of the Python Software Foundation.
My project involves designing and implementing a public facing REST API for Postorious - a web UI for Mailman, which is used to control various aspects of Mailing lists. I'm hoping to learn various aspects of creating APIs and what things should be kept in mind, what conventions to use, etc. The project will mostly be done in Django, along with TastyPie, which is a framework on top of Django that can be used to implement REST.
I will have a few challenges in this project. The API can't be implemented in a traditional way, since Postorius is not a traditional CRUD app. The data that it uses does not come from a database, but from calls to the Internal Mailman API. So implementation details will be more complicated than simply dropping in TastyPie and expecting it to work.
In addition, there will probably be a model redesign. Mailman Core does not care about the relationship between various entities like User, Member, List. These relationships have to be modeled in Postorius. The current models are somewhat sufficient, but they can be improved. Only once the relationship has been established, can I begin to work on exposing various aspects of the API itself.
Right now, according to Google's timeline, is the Community Bonding Period. I will mostly be busy preparing for my exams. My exams end about the same time as the bonding period, but I will most likely be free a few days before that. I will use that time to discuss various aspects of the design decision with the Community, including model redesign and testing.
That's it for now. Until next time. :)