| I know both systems and will not fight for one or the other. I will try to summarize the most annoying points in both systems. Many things in WordPress are brilliant, and none of the Django content management systems got that right. Every WordPress user can very quickly learn to actually manage their content with taxonomies (categories, tags, or custom made ones), and then build e.g. a menu or special pages for a category very easy out of that categorizations. This is brilliant. Also the hook system is great, so easy to add and combine pieces of code, one of the reasons for that enormous amount of plugins (of course not all of them are of good quality, ahem). Also the extremely easy extension via custom post types and custom fields allows to build a lot of things very quickly. Try to build dynamic models with Django - a major limitation that is seldom talked about, but very important. This is one of the most boneheaded Django dead-ends that I have hit - how can a system that is build for dynamic content generation make it so hard to dynamically define and generate models? There are some approaches, but you are getting into 'fight-the-system-mode' with all of them, because that boneheadism is build into the basic design of Django. Of course, the code base of WordPress is very old and a constant source of trouble, if you are depressed, go and read some WP code, you will have fun, I swear! But it must be said that it is really great how the WP devs keep up backwards compatibility - you can run and update the system for years without worries, this is very important for a cms! Django devs did not understand that. So many people are lagging behind with updating their Django apps / projects, because the django devs missed this most important point! So many changing things, stupid little things, but breaking and mutating like a radioactive godzilla, you see the results in a universe of incompatible django apps. They missed completely that it is a good thing to "never break user space", really a problem here. Do not change the API! Thanks god they started to do that LTS thing now, so there is some hope now that serious enterprise business will take a look at Django. Luckily WordPress now has automatic updates, so admins do not have to panic so much. Biggest problem, of course, is that annoying dependency on MySQL, I hate it, and I also hate the catastrophic generation of sql queries - and do not even try to look at the mysql query log when you install the super-bonehead-ultra plugin by mister uberhaxor! But caching is mandatory anyway, or even better, export to static pages. Do not even put that WP on the internet - let authors write to an isolated environment and export all the pages into a static cache after updates. Do not allow comments. If only all these great WP ideas were implemented on top of Django, that would be perfect. But all the existing Django CMS are extremely far away from the easy WordPress usability. Like WP was made by artists and all the Django CMS made by bureaucrats. Wagtail has some future, but is still missing many, many features, also I see some problems with the content model, having to define a new model for each new type of content will not work in the long run - they are hitting that annoying Django design limitation here - it is not a framework build for dynamic models (eat that absurdism!). There must be something inherently wrong with Django that it seems not to be possible to build a feature-rich CMS that tops WP easily - everything that exists is extremely beyond the state of the art, unfortunately, and I wonder if that has some reason connected to Django. Any PHP project would have millions of plugins after such a long time (working and compatible) - meanwhile you can be happy if you find a Django app that works out of the box with the latest Django release, lots of bitrot. Even the demo apps sometimes do not work, try to run the mezzanine 'drum' hacker news clone. This must be a management problem, but I do not understand these things, however that problem exists and it is annoying. You are riding high he Django train, but fall deep with non-working apps all the time, this can be even worse than the WP plugin hell. WordPress is technically inferior, but there are so many brilliant ideas in there. Django, technically superior in any way, still misses anything like WP, none of the CMS come close to the WordPress experience. In other words: there is still room for innovation! Just compare for yourself, looking at any of the Django CMS in 2016 will be like a time travel back to 2010. Today I hope that some people will re-implement WordPress with Elixir and the great Phoenix framework. The Django Channels project will not be enough to survive that. |
- < 5 minutes to organise cheap hosting - automatic updates - zillions of themes - someone else can fix it when it goes wrong
I hope Daniele and his colleagues at Aldryn will help with quick cheap Django hosting (they do Wagtail too!). But I'm not sure that Wagtail or Django CMS will ever be the right choice for this use-case. Of course you _could_ build a WordPress equivalent in Django, using postmeta-style key-value tables that abuse relational database theory but allow plugins to define their own content types, and maybe someone should. Our effort is going into building a CMS which helps implementers of non-trivial sites do the 'right thing': keep their content structured, clean, related, filterable. Create once publish everywhere!
There's a lot to learn from WordPress but I don't think 'dynamic models' are the answer for situations where you have more than one developer (there's no guaranteed parity between developer and production environments) or lots of relations (postmeta-style tables have ugly joins, weak integrity checks, poor performance).