Start of the GSOC and choice of technology
After coming back from the incredible S&P conference, I’m now in my second week of developing the Fingerprint Central project for the Tor organization! The repository has been launched and the code can be found HERE on GitHub. My first status report is HERE.
Django?
In my proposal for the GSoC, I wrote that I planned on using the Django framework for the whole project even if I had no prior experience with it. In order to prepare myself for the coding period and to make sure that Django is flexible enough for I wanted to do with it, I decided to give it a go and follow a tutorial on it.
First and foremost, the documentation on the official website of the Django project is really detailed and the tutorials are a well-paced warm-up for the basis of Django. Everytime I had a question on a specific point or mechanism of the framework, I could find the answer easily in a couple of clicks.
Then, Django feels like a breath of fresh air when dealing with model’s modification.
I struggle on AmIUnique every time I’m adding an attribute because the model has to be updated and it is tedious for me to get my hands inside the MySQL database to add the correct columns without breaking the complete database. As my first true website, I didn’t fully exploit the persistence APIs like Hibernate to manage my objects.
On the other hand, Django offers a complete model migration system that lifts a lot of obstacles when dealing with a SQL database. From the model that you define, Django will automatically update the structure of your database thanks to a simple “migration” command.
You don’t even need to deal with the type of data inside the database since Django will take care of it for you.
However, as great as Django is on that particular point, there is no official support for NoSQL databases inside Django. After some discussion with my mentor, we chose to switch to Flask which is currently powering the new version of Panopticlick.
Flask
Flask is “a lightweight Python web framework based on Werkzeug and Jinja 2”.
Coming from development with the Play framework, I found my bearings really quickly with Flask since different concepts are shared between the two frameworks like templates. Switching from Java to Python was not a problem for me and the great documentation on Flask and its templating engine made the project’s launch a really smooth experience for me. Adding new features to the project also feels relatively painless for the moment thanks to an outstanding community support and a strong base of extensions.
That’s it for me this week on what constitutes the core of Fingerprint Central. If you want the exact details on everything that is included in the project, consult the README on the main page of the repository. Stay tuned on my blog for updates on my progress! I’m eagerly waiting to have the core set of features finished so that I can get into the nitty-gritty of the fingerprinting part!