Perhaps this "rethinks the CMS" from a performance perspective, but it certainly doesn't rethink the CMS from the end-user point of view -- they still need to manage content using an admin area that is different than the front-end of the site (thus breaking their mental model of what the website is and how it works).
If you want to see a CMS that rethinks the end-user interaction, take a look at Concrete5 -- http://www.concrete5.org/ (built in technically boring but easy-to-deploy-on-cheap-hosts php), or Webvanta -- http://www.webvanta.com/ (closed source so not sure what it's built in).
I have found it much easier to train non-technical clients who don't already have blogging/wordpress experience with Concrete5 than any other CMS I've used in the past.
I actually dislike in-place editors. As a writer of posts, I actually prefer to edit and write text outside the context of a webpage. There's too much visual distraction - images elements, ads, columns, etc that end up cluttering the editing workspace. Concrete5's model of using overlays also screams distraction to me. Why not just use a clean admin interface? It's also better for professional writers who don't need to know the minutia of which column and which part of the site the text is going into.
Concrete5 might be easier for people who want to build websites, but in-place editing just doesn't work for people who only want to write and put together actual content.
True -- a dedicated writing interface makes much more sense for blog where you are adding new content that is similarly-formatted on a daily basis. But if you're building a marketing or informational site for a business, a traditional CMS makes a lot more sense.
fyi, Webvanta is built with Ruby on Rails, and a bunch of other stuff... It is a designed as a SaaS system and uses a cluster of servers running various things (nginx, clustered MySQL, and a few others). As noted above, there's some more details on the technology we use at www.webvanta.com/technology.
I love reading posts like this. As a long time PHPer, I've pretty much exhausted my learning with the language. I rather enjoy it, and I'll probably always develop in it, but this post makes me seriously want to consider investigating Erlang.
You might be interested in trying out Nitrogen[1] first. Zotonic builds on it, but picks a lot of the tools for you, so you might be interested in the basic approach first, especially if you're learning the language.
It is easy enough to start programming Erlang with Zotonic.
Every module is a completely independent gen_server, allowing you to add whatever functionality you want.
Zotonic also uses standard Webmachine resources, when you want then you can skip all functionality of Zotonic and just add whatever code you want to add or experiment with.
I would agree with that. If you want to learn Erlang, then I would also recommend Nitrogen first. It's at a lower level, so you would probably be exposed to more Erlang (as opposed to learning about Zotonic)
More basic as in working straight from the Erlang REPl, sure. Web programming is no way to learn a language, if you ask me. But I wouldn't go down much further in the web stack if you're coming from a PHP background, as it's nice to have something done quickly (And from my limited experiments with Nitrogen, you soon get some pretty neat results).
I've been running this for a few months now and have been having a lot of fun toying with it. The built in WebSocket stuff is really cool, and the template language is easy.
To achieve this performance we made some rather big changes to Webmachine. Basho will be looking into incorporating those changes into the mainstream Webmachine code.
Having worked with Webmachine, I'm really excited to see these big changes - does anyone know what they are?
- Pluggable dispatcher, as the original webmachine copies all dispatch rules for every request. This gave us the greatest speedup as a Zotonic server typically has hundreds of dispatch rules.
- Removal of all process dictionary use. This makes testing easier and also gave a nice speedup.
- Use proplists instead of dicts for small dictionaries.
- Use a memocache for the resource callback functions.
- Removed the use of parametrized modules, this enables us to copy less data (and gives simpler code).
- Added support for protocol upgrades (for Websockets)
Our dispatcher also accepts regular expression checking on uri parameters. And it uses a different approach to vhost handling, allowing a redirect to the main hostname (which is needed when you set browser cookies).
Altogether these optimizations make quite a big difference, removing over 1ms from every request.
if you're interested you can clone zotonic's webmachine from deps/webmachine in the zotonic hg repo.
we sent these changes to basho (justin sheehy) but up until now they never took a look at it although they promised it. We're still hoping they include the changes however.
Neat ... bad name though. I keep reading it as Zoonotic - which is not something they want to be associatied with (http://en.wikipedia.org/wiki/Zoonotic).
Actually Zotonic is called after isotonic. We also publish the CSS framework Atatonic. Keeping our names similar.
Besides that, Erlang has some history to name projects after diseases. For example Mnesia, the build-in database, which was called Amnesia before general release.
If you want to see a CMS that rethinks the end-user interaction, take a look at Concrete5 -- http://www.concrete5.org/ (built in technically boring but easy-to-deploy-on-cheap-hosts php), or Webvanta -- http://www.webvanta.com/ (closed source so not sure what it's built in).
I have found it much easier to train non-technical clients who don't already have blogging/wordpress experience with Concrete5 than any other CMS I've used in the past.