A new Django content management system
github.com
github.com
- Tests: stung by some of the (very reasonable) criticisms after launch, we worked hard to increase our test coverage - https://coveralls.io/r/torchbox/wagtail
- Docs: still a way to go, but our documentation is much better, and now includes an editor's manual: http://docs.wagtail.io/en/latest/editor_manual/
- Translations: we were delighted by the immediate response of translators, whose work we're managing through the excellent Transifex: https://www.transifex.com/projects/p/wagtail/
- Installation: we reduced dependencies (including Sass instead of LESS, and plain JS instead of Coffeescript, so we could drop npm); we made Redis and Elasticsearch optional; we wrote one-liners for Debian and Ubuntu; we improved the installation docs; third parties contributed Docker images.
- UI: we've continued to refine the interface, with feedback from our own clients as well as helpful strangers. In 0.3 we added the 'edit bird', a toolbar allowing logged-in users to add and edit pages from the site's front-end.
- Modularisation: Wagtail now supports alternative backends for image processing (currently PIL and Wand), searching (currently Elasticsearch and SQL) and content embedding (currently OEmbed and Embedly).
- Compatibility: we're working on Python 3 and Django 1.7 support. We've recently added tox to help us test multiple versions for thoroughly.
We're also adding features, but slowly and carefully. A form-builder and scheduled publishing should be released imminently.
We're very grateful for everyone's interest and contributions, even if it's just a harsh word on HN!
I worked with Django for about 4 years of my life, maybe more if we consider some proof-of-concept projects. Every single 'framework on top of the framework' (with the exception of Django REST Framework) I've tried has been 'almost perfect', but that little delta between what you have and perfection is impossible to bridge. Just the dependency hell introduced by some of the projects is reason enough to give up.
If all you want is a simple CMS with support for some markup and adding images/videos, you can throw that together using Django, the Markdown module and one of the myriad upload plugins in a couple of days. You want to provide RSS? Use the built-in feed system. You'll spend more time reading the documentation and tweaking the settings file than putting the whole thing together yourself.
- a fast, intuitive content authoring experience
- preview / submit / moderate / publish workflow
- a UI which scales to very large numbers of authors, pages, images
- powerful full-text search in the front- and back-ends
- strong support for image handling (e.g. animated gifs via Wand) and media embedding (OEmbed or Embedly)
As an agency, these points are all pretty much requirements for the sites we build. We couldn't find anything else which gave us these as well as allowing us to build models and templates in plain Django, and we had a client - the Royal College of Art - who agreed to let us open source Wagtail on the back of what we developed for them.
Sorry, I didn't mean my comment to come through as criticism to this particular project. I meant it as a more of a warning to people who might be tempted to use such a complex system for something like running a small few entries in their website. Chances are the effort to integrate it would be bigger than just writing a minimalistic thing in the existing codebase.
I agree that systems like these have a place if what you want is something akin to Drupal (but with a nicer codebase.)
That alone makes you slightly 'an island apart' as I now face the challenge of either:
a) build my own CRUD for parts of the system that aren't directly related to the CMS (products, crm etc etc)
or b) rely on integration with your admin - which I'm guessing isn't as extensible or mature as Django's
If Wagtail even attempted to smooth the differences between the two (i.e. a custom skin and some customizations to the default admin to make them more similar) then it might be a bearable compromise.
Can someone help me understand why I should prefer one over the other?
(Having said that, the rich text editor is in Wagtail really is rich and can support inserting images from the image library and links to documents in the document library, as well as oEmbed stuff, so it has some wriggle room).
The two schools of thought ("each page is designed ahead of time with structured content in mind" vs "each page is a collection of content objects") have their adherents. Personally I prefer the Wagtail and Mezzanine approach, but the right answer depends on what the client needs and the nature of your relationship with them.
> But having built content-managed websites for 14 years we have strong opinions about the editor experience and how a CMS should work and be structured, and we need to manage a more rapid pace of development than we can achieve by contributing to existing projects.
.. and your editor does in fact look really nice, but what are the structural differences to mezzanine, why is it not just another backend for Mezzanine? That would be a question your landing page or README.md should answer in my opinion. Maybe you could also add Wagtail to the grid on https://www.djangopackages.com/grids/g/cms/ ?
At a high level, I can see how there might have been a bit of friction in trying to implement Wagtail on top of Mezzanine. Mezzanine's features, admin interface, and content model are fairly tightly integrated (I hope I'm not misrepresenting Mezzanine here, I think that this is an affirmative goal of the project). It provides a lot for the developer and the site admin out of the box—usable templates, basic page types, a blog, an image library. On the other hand, Wagtail core offers surprisingly little—the wagtaildemo project is a nice starting point for some basic content types, but it's just another user of the Wagtail API.
For me, the killer features of Wagtail are: deep integration with ElasticSearch, a moderation based workflow, content revision tracking, document library. It's feature list is like a love letter to institutional clients. However, that's a lot of code that is not integral to Mezzanine, and I don't think it fits with the maintainer's philosophy of "it's integrated, but not a kitchen sink." [Note: I made up this quote.]
To both maintainers, nice work, and thanks.
The areas where Wagtail departs most significantly from Mezzanine - the editor experience, moderation based workflow, content revision tracking - aren't features which can be easily tacked on to another system. Our goal is the best possible user experience for content management, and I don't think it's feasible to build that as a skin for the Django admin. In terms of structural differences, django-modelcluster [1] is a key part of what makes this user experience possible:
[1] https://github.com/torchbox/django-modelcluster
Thanks for the CMS grid link. We'll add Wagtail to it.
As I see it, Django CMS's philosophy is to pass on as much flexibility as possible to the editor in terms of page layout. Wagtail takes a more 'prescriptive' approach where the page content has to fit a particular data model (such as an event page that has a start/end date, list of speakers and so on) - which means a little less freedom for editors, but on the flipside, it gives the site creator a lot more control over page layout and design, makes it easier to repurpose that data, and goes a long way to making the editor UI friendlier (since it's a case of 'fill in the gaps' rather than a blank canvas).
Now - turns out that the Drupal interface is still a bit confusing for people that don't care for tech. Plus, I'm having to host it on my own server. Can anyone recommend a really simple CMS I could replace it with, preferably for something I could host for free?
With a content management framework (such as PW), so much has already been done for you that you start to wonder why you will ever need an application framework. Of course, application frameworks are very useful but CMFs are not to be missed out on. I just finished writing a project management system using ProcessWire and it's been a lot of fun. Like building-with-Legos fun. I hope to see clones or variants appear in other languages as I'd happily give them a try as I expand my CS education.
Run it, expand the URL written in the top box (not sure why it's not working properly).
Add /admin to the URL and log in with hnews/hnews for the admin area.
I realise that the concept of a generic CMS implies DB backed with bespoke content types. However, it would be nice to know whether there are any 'first-class-citizen' types (user, profile, blog post, etc.), how pages are built or constructed (static html export? dynamic templates?), how edited content is stored and how / whether I might intermingle CMS edited content with UGC content.
This kind of information would be much more interesting to me than learning that the thing is "Beautiful", "Light" and "Agile".
The project site is really focused on potential clients, but you're right that the documentation should be clearer about these basics. The README lists a 'feature' as 'Configure content types through standard Django models', which hopefully makes sense to Django developers; essentially you configure your own content types as Django models and register them as pages, where they inherit tags, slugs, publication dates etc. Users are standard Django users and can be augmented with profiles if you want. The wagtaildemo project [1] includes blog posts as a fully worked-up content type, but you don't have to include these in your project. Pages are constructed on the fly, and Wagtail is Varnish- / Squid-friendly if you have lots of traffic. FWIW we're working on a static HTML export feature which could be used for archiving or publishing to S3 etc. Edited content is stored in the database. You can intermingle CMS and UGC content - students at the Royal College of Art are uploading their own work alongside the content managed by the site's administrators, for example.
Plus it's really beautiful, light and agile :)
Just as a ref, here's a CMS intro that focuses on the content model and workflow: https://github.com/SpontaneousCMS/spontaneous#features-curre...
I'm cautious about overloading the rich text editor with too many features - things like tables, say, would be better handled as an explicit part of the page model / template rather than kept in an opaque blob of HTML - but I can appreciate the need for more formatting options.
https://github.com/torchbox/wagtail/commit/860c3e036f2df1596...
Thanks for the feedback!