IPPC Design Docs / Software Request and Justification - Python, Django, Git

Subject: Software Request and Justification - Python, Django, Git
Author: Simon Griffee, International Plant Protection Convention (IPPC/AGP) Webmaster
Last Update: Friday, 29 April 2011 at 11:38:58
URL: http://hypertexthero.com/ippc/work/reports/software-request-and-justification-python-django-git.html

Executive Summary

We request the Python programming language, Django web framework (“For perfectionists with deadlines”) and Git distributed version control system to be installed on the test and eventually production servers running www.ippc.int.

This setup will allow us to develop better websites more quickly with less code and lower maintenance costs. Eventually we want to deploy www.ippc.int, www.phytosanitary.info, www.apppc.org and other plant protection sites and applications using this setup and share code and lessons learned with the rest of FAO.

The software we request:

Software Requested

Justification

Throughout the development of www.ippc.int a lot of technical debt has been acquired:

“One of the important implications of technical debt is that it must be serviced, i.e., once you incur a debt there will be interest charges. If the debt grows large enough, eventually the company will spend more on servicing its debt than it invests in increasing the value of its other assets. A common example is a legacy code base in which so much work goes into keeping a production system running (i.e., “servicing the debt”) that there is little time left over to add new capabilities to the system. With financial debt, analysts talk about the “debt ratio,” which is equal to total debt divided by total assets. Higher debt ratios are seen as more risky, which seems true for technical debt, too.”
Paying Down Your Technical Debt

Using a modern Model-View-Controller (MVC) software development platform will allow us to do better, more agile web development, improve our coding standards so that our code is easier to maintain for us and for future developers who inherit the codebase, and provide better websites and utilities more quickly for IPPC/FAO. We can use this system concurrently with the existing system without breaking things due to one of Django’s core design philosophies: loose coupling:

A fundamental goal of Django’s stack is loose coupling and tight cohesion. The various layers of the framework shouldn’t “know” about each other unless absolutely necessary. For example, the template system knows nothing about Web requests, the database layer knows nothing about data display and the view system doesn’t care which template system a programmer uses. Although Django comes with a full stack for convenience, the pieces of the stack are independent of another wherever possible.
Django Design Philosophies

An example:

…But I also understand that you may already be a PHP expert, Java guru, etc. and you don’t want to take the time to learn Python just to get a nice admin interface. The beauty of this setup is that your data is just a standard PostgreSQL or MySQL database, and there’s absolutley no reason you can’t connect to it from whatever language you prefer to use for writing your app’s business logic. Have at it! Even if you only use the Django admin during development and build your own front-end to your data for the long, it’s still a great way to get at your data with very little effort and even less time.
Django Admin for Your PHP App

Python, Django and Git are proven, popular tools used by many of the best web developers in the industry to build websites quickly using new or existing open data sets. We would like to use some of the best tools for our job, too!

A few examples of websites and applications that use Django:

More detailed information about the software requested:

Python

Python is a programming language that lets one work quickly and integrate systems effectively. One can learn to use Python and see almost immediate gains in productivity and lower maintenance costs.

Python highlights:

Django

Django is a ‘Model-View-Controller’ (MVC) web framework written in Python. The MVC software architecture concerns the separation of different layers of a program: the data, the logic that occurs around that data when a user interacts with an application, and the presentation of that data to the user. Using an MVC architecture results in better organization and code reuse, which means less repetition and higher efficiency, i.e. more productivity and less maintenance cost.

Django highlights:

Git

Git is distributed version control system focused on speed and real-world usability on large projects. Made by Linus Torvalds, Git has the single most active developer community among the open source version control systems.

Git’s highlights: