Hi, I'm Matthias

I am a founding partner of Feinheit AG and Die Bruchpiloten AG. Find me on GitHub, Mastodon, LinkedIn or by email.


feincms may still be relevant


In the following text “feincms” denotes the feincms-family of tools. Just to reiterate, new projects should use feincms3.

About 10 years ago there existed a few Django-based CMS. If someone didn’t already know which to choose, the following three systems were seen as reasonable choices1:

The landscape has changed. Wagtail hasn’t been the new kid on the block anymore for a long time.

I have been following the development of those CMS more or less closely over the years and am convinced that all of them are good choices for starting new projects.

We’re still using feincms at Feinheit; or more often django-content-editor and feincms3, especially for new projects. Since the development of the feincms 1.x line has slowed down to maintenance mode and the community of feincms3 is really small you might ask why we’re still sticking with those tools – we’re certainly asking it ourselves from time to time.

feincms3 / django-content-editor interface

Here’s a list of reasons why feincms is still relevant:

  • There’s only one autogenerated administration interface to maintain and explain to users – the stock Django administration interface. It works really well and since it’s maintained by the Django community it has received a steady stream of (small but important) improvements over the years. feincms has always been in the position to profit from those improvements immediately since it does not come with its own administration interface.
  • feincms is generally very stable. Especially the django-content-editor / feincms3 combination consists of very little code3, which allows us to easily use the latest and best version of Django and other packages.
  • Django makes it straightforward to manage the database content and structure. If you’ve ever imported content from a different CMS you know how tidy a database managed by Django can be, a stark contrast to the JSON blobs or PHP serialization results used by other content management systems. feincms doesn’t invent its own database structure either but allows continuing this success story into the realm of flow content.
  • feincms does not insist to take over the whole site, and can be used to manage parts only. feincms also allows integrating other models and apps without much boilerplate.
  • feincms exposes its building blocks and the foundation, making it relatively easy to use the same content in different ways.

The Designing Connected Content book gave me a way to better formulate these thoughts. I’d recommend it to everyone who sometimes has to defend using Django instead of “nicer” CMS such as Wordpress.

feincms will probably never get back to being one of the major Django-based CMS. That’s alright (no, really!) but I hope that it keeps its place in the toolkit of a few Django developers.

If you have to build a blog or cms alongside a django project (ie. entreprise blog), django-content-editor from @suppensud is a nifty, minimal and unobtrusive package to manage and dnd custom content blocks

by @providenz on Twitter

  1. I hope I do not step on too many toes with this formulation. 

  2. Wayback machine link, the current website redirects to this blog. 

  3. SLOCCount counts 88‘039 lines in Wagtail, 73‘022 lines in django CMS, 45‘306 lines in Mezzanine, and just 4012 lines in feincms3 and django-content-editor; all values including tests, in current Git repositories as of 2020-09-16. Not including dependencies; they would skew the results even more given that e.g. django-treebeard has 10 times more code than django-tree-queries