PTS rewrite in Django
---IN PROGRESS---
Clément Schreiner
Contact/Email: mailto:clement@mux.me - irc://irc.oftc.net/clemux
Background: I am a 21-year-old student in computer science at University of Strasbourg (France).
I am familiar with free software, as an user since 2004, and a developer since 2010: I have made occasional contributions to the Weboob framework, which allows easy interactions between console or graphical applications and various websites.
I have participated to the 2012 Summer of Code, working on debexpo. You can read my final report to get an idea about what I did.
Thus, I have experience with team work, VCS, bugtrackers and mailing lists. My last summer of code taught me a lot about the Debian process and how to interacting with packages in python. Because I revamped the plugin architecture, I have rewritten all QA tests plugins and learned how to retrieve data from the BTS, debtags, lintian, etc.
My work has not yet been merged with the live http://mentors.debian.net because of various problems with the existing codebase I had to work around, but I am currently helping rewrite the whole application with Django.
Project title: PTS rewrite in Django
Project details:
I will be using celery for asynchronously retrieving data from external programs or other websites, and for scheduling tasks of retrieval that cannot be completely dynamic.
One of the most challening part of this project is to write a robust plugin architecture for easily defining information sources (how to retrieve the data, and how to display it on the web pages). It must be flexible enough to allow Debian derivatives to write their own plugins and seamlessly integrate their own tools into their PTS instance.
- Email Interface
- import information from emails into the database (receive_news.py)
- forward emails depending on regexp (dispatch.pl)
- interface with users (control.pl)
- handle bounces (bounces_handler.py)
It could be useful to find or write a small library for defining forwarding rules like we do for url routing with django (project to look into: http://lamsonproject.org/ )
- API
- provide an equivalent to the former SOAP API for legacy
- provide new APIs (JSON, REST, ...), if possible and needed
- Plugin Architecture
- plugins define information sources: emails, RSS feeds, JSON APIs, apt's repository, etc.
- they provide django templates and orm models
- they can provide celery tasks when useful
- Web pages for accessing the packages' information
- define 'mount points' for inserting data from the plugins' template
- Design
- I will be using bootstrap for the design of the application. It could be interesting to develop base templates and CSS that could readily be used and extended by other Debian django webapps.
- API
Synopsis: The Package Tracking System is currently a collection of scripts written in perl, python and shell, with static webpages generated from XML and XLST templates. Although it does its job correctly, it is becoming difficult to maintain and improve. At the same time, an increasing number of Debian projects are switching to the Django web framework, which could allow future sharing of code among them. It is thus a great time to make the same move for the PTS.
Benefits to Debian
Deliverables:
Project schedule:
Exams and other commitments: thanks to the gsoc being one month later this year, my exams will be over and I'll be free of any other commitment the entire summer.
Other summer plans: None
Why Debian?: I have been a user of
- I am not applying to other summer of code projects.