Entries from April 2010 ↓

Release Often

Over the last week, I have made five software releases of my packages:

  • django-gitcms: This has grown into a real reusable framework. The old adage of it’s reusable if you reuse it is true. Setting up pythonvision.org (still in Beta) led me to fix a lot of bugs.
  • pymorph: This is almost ready to be called 1.0. It still needs more testing. So, if you find bugs, let me know.
  • mahotas: More image processing in Python. This is implemented in C++, so the code is fast (compare the watershed implementation to that in pymorph: 10x faster).
  • jug: Mostly performance improvements in the last round.
  • milk: I had called this 0.1-alpha, 0.1-beta1, … Now, it’s just 0.1. It also includes a wrapper around the traditional libsvm code (instead of my port). After doing it, I realised that my port is much faster, though (because of the tighter integration with numpy).

It used to be that preparing a software release was a lot of work (build tar.gz file, upload it, test it, announce it,…). Now, in the Python world it’s a matter of python setup.py sdist upload). It makes it so much easier and anyone who is using pip can just get the newest version immediately.

Linux distributions still live the old release world where even small packages (such as the ones above) still need to go through a big process before making it into the main trunk. What would a Linux distribution with a release process that was as simple as python setup.py sdist upload look like? Add in unit tests and you should have a nice rolling release distribution.

Follow me on twitter: @luispedrocoelho

New Version of Django GITCMS

Django-gitcms is finally getting to be a real framework instead of just the basis for my personal website.

I am doing a new website (on Python for computer vision) and using django-gitcms. This has forced me to make sure that the framework makes it easy to build different websites with it. It also led me to fix a lot of installation bugs. Right now pip install django-gitcms should get you a working system.

For an example, check the example-website/ directory, which should work after:

  1. python manage.py syncdb to create the database.
  2. django-gitcms-load-content to populate it.
  3. python manage.py runserver

Should just work (otherwise email me).