Recently I’ve been reviving 2 years old Django application (myplaces) (from version 1.5.5 to latest version 1.9) and I was very unpleasantly surprised how tedious it was. As Django evolved some features got deprecated and removed and must have been replaced in the code. And it’s not only Django but also other contributed libraries are evolving as rapidly. In my application I was using django-rest-framework, which changed so significantly in version 3, that I cannot use it in my application without basically rebuilding the whole application.
Some of the changes might be necessary, but many where just cosmetic changes in names ( mimetype -> content_type, etc.), which I do not see as much of value add. Even core python still keeps bit of naming fuss in favour of backward compatibility ( for instance string.startswith, string.endswith made it till ver.3, even if they are not in line with PEP008 – python naming standards).
But it’s not only about changes of interface between versions (there is a fair process to deprecate features so when one follows development, it’s relatively easy to stay up to date), but it’s mainly all concept of the Django. Django was created more then 10 years ago, when web development was focused around servers and everything happened there. But situation changed radically ( as I have written some time ago). Now a lot of things is happening in the browser and you can have complete applications running there (recently I discovered this cool application, which is running almost completely in the browser, it’s just using a stream of events from the server). Accordingly servers now are used more to provide APIs to browser applications or to route real time communication to/from/between browsers. Continue reading Farewell Django