O’Nolan, a former WordPress project lead himself , opines
that WordPress has grown up and is no longer really about
blogs anymore. It’s become a full-fledged content
management system, burdened with a lot of unnecessary
complexity for those that are just looking to manage a
blog.
WP is nothing close to a full-fledged content management system, and if it's burdened by anything, it's all the leftover cruft from the days when it was just about blogging.
I use WP every day and I'm really grateful it exists. But from my perspective, the problem is not "WP is so great at content management we need to develop something just about blogging". The problem is "Lots of people have cleverly managed to hack WP into running as a general purpose CMS because there's such a wealth of support, knowledge and extensability surrounding it".
I'be be much more interested in a new modern, flexible CMS built for that purpose from the ground up than I am about a new blogging software.
I agree, I had a bit of a laugh when he called WordPress "grown up". I suspect he was just trying to be polite to WordPress fans.
I've had to deal with a lot of ugly WordPress hacks when maintaining legacy sites, and I'm convinced that anyone who defends it simply hasn't seen anything better.
Personally, I've been using ProcessWire for the last year, and I'm very happy with it. Although it doesn't do everything that WordPress does, it's extremely clean and simple to work with.
Most of my freelance work has been "saving" fairly new WordPress sites that just haven't worked out for clients.
I think you're absolutely spot on when you say that it's mostly people who haven't seen any better. There seems to be a real cult behind the use of WordPress as a CMS, and after working with some of the developers that have delivered the first WP sites nearly every single one of them seems sold on WordPress being the only tool required to rapidly build a website.
As a tool, WordPress does work, but the plugin-driven development nature of WordPress leads to some horrendous problems, ones that were solved years ago on other platforms. It also tends to attract a large number of poor developers.
More often than not, I use Umbraco for sites that need a CMS, or Django when the site has been hacked to handle an application, almost effectively scrapping most of the existing code, and the clients are always happy and have a much faster website.
I completely agree with this. It's my go-to CMS for almost everything these days. I've yet to really hit any problems it doesn't help me easily solve.
Even a client completely changing their mind about site structure part-way through is rarely a headache these days. It just works perfectly for 90%+ of all things clients pay me to do. The final code is generally also very clean and well structured as well.
Serious question: Have you used Wordpress before? For what it lacks out-of-the-box 9 times out of 10 exists in the form of a plugin (sometimes multiple plugins). I don't see what Wordpress lacks personally other than a coherent file structure and clean codebase...
I'be be much more interested in a new modern, flexible CMS built for that purpose from the ground up than I am about a new blogging software.
Sounds like you're talking about Drupal here or ExpressionEngine which are both great and well-written content management systems. Wordpress serves many purposes, clean code doesn't matter so much at the end of the day unless you're a code purist who thinks languages and conventions matter if the end product works and is usable.
We build hundreds per year. Is it a huge pain in the ass to maintain a theme with 65 plugins that's 3 releases behind? Of course! But hey, that's part of the job.
Isn't the problem that the end of the day never comes? A site is never 'done'. It always needs to be changed and this is why 'clean code' matters. It reduces the cost of change.
I've actually contemplated the idea of doing a node CMS for use on client work. Wordpress lacks nothing, it is just a badly designed architecture with an inconsistent API (for example there are 3 different functions to display a 'loop' of posts, each one has options worded slightly differently with slightly different effects)
Some things that would be good:
1. Contenteditable from the frontend- for when the client just wants to change that one sentence on the third paragraph on the product page or whatever. http://createjs.org/ seems to be a pretty good ready made solution.
2. Repeating layouts- I design and code a repeating element (like photos on the team page or whatever), and the client has an interface to add or remove units, at which point they get updated wherever they are on the site.
3. NoSQL db. SQL is good when one is balancing the books of a large corporation, or doing a survey of the heights and wattages of every streetlight in the country, but it is not a logical solution for displaying documents on the web. It would also be really nice to have a database that could be put in revision control and deployed along with the rest of the site files, as the line between content and templates on CMS sites is a very thin one. https://github.com/felixge/node-dirty is intriguing, but I don't know if there are any unforeseen issues with this.
4. Blogging. Hopefully we could just integrate tightly with Ghost or something like it.
I posted about this last night, but this discussion is significantly more relevant to my new project, so I figured I would jump in and post again.
This is awesome because it's actually exactly something I'm building – a portable, open source, file-based CMS with a NoSQL document store, backed by Git, hosted in the cloud for social management/deployment, also runs locally. Eventually I'm planning to add easy blogging features for "non-techies" though my initial target audience is definitely professional, interactive web site developers who work with a big team.
If anyone is deeply interested in this space, I would love to learn more about your requirements and share more about my project so I can develop based on real user needs. You can also check out a data sheet I put together at http://grow.io. :)
I don't buy this argument. This is only valid if you want something exactly like WordPress that grew up like Wordpress and has all the benefits and the baggage that comes with its unique evolutionary path.
It's 2013, we have a much better understanding today of how people use the web, from how they consume to how they socialize. Many of these habits are the product of things invented between when WordPress was invented and today. With that in mind, an experienced engineer familiar with the architecture of WordPress, it's history and the web as it exists today, would be very well equipped to choose a whole host of different abstractions at lower levels, which would permit a permit said WordPress replacement to support better features more easily, where better means "fitness for use" from now into the future (5-10 years)
Define "stable", there was an arbitrary code execution flaw in Wordpress just in the last version. A smaller, more efficiently designed codebase which isn't hampered by backwards compatibility might well have fewer bugs. Wordpress is kind of a sprawling mess at this point, and it's got bad practices baked into it.
What doesn't have these problems? Rails itself was not too long ago dealing with SQL injection vulnerabilities. Like stated by lukeschlather anything as widely used as either Wordpress OR Ruby on Rails is gonna have these problems.
any cms as widely used as wordpress is going to have regular RCE vulnerabilities. Wordpress core is well-debugged, and no matter how much better engineered a replacement is, it's going to have more bugs, even security bugs, for at least a year.
A replacement would be valuable if it could provide a better templating/plugin system that reduced the opportunity for bugs in template/plugin code.
Maybe. Choose the right language and "framework" (which for WordPress is Apache), and that language may enforce enough constraints to eliminate many many of the bugs possible and common on abstractions such as Apache, MySQL and PHP.
I know Apache is not a Framework, but a webserver. Here I'm using framework to mean operating system abstraction. Apache, being file-based and not data based first, means that it is full of abstraction holes that, while right for serving files, is all wrong for serving data and instead overly exposes the operating system for this world of dynamic web experiences we currently live in. If you knew back in the early 90s that the web would be more about streaming, real-time content, you would have designed a webserver that was designed for serving static, discretely changed content in a way that took advantages of as many features and benefits of the design of the Unix/Linux operating system (stdutils, etc.)
In the end, who cares. I'm intrigued by Ghost. I signed up for access ... but I have also been intrigued by the many alternatives to WP out there - Octopress, Squarespace, Kirby, on and on. That's because I'm a hacker. But ... in the end WP is to this space as Excel is the spreadsheets. Its just too good. Has so much to offer. As long as we're talking about presenting html/css/js in a browser for non-dynamic sites, WP pretty much does everything. Its just lost its shiny|new status. Bloat? An easy and convenient insult. Truth is Excel has capabilities I will never use ... but it pleases me to know they are there if/when I need them. What gets lost in the argument that WP is so big, so capable that its not a blog engine anymore but rather a cms, is that it is entirely capable of powering just your blog with a whole bunch of features you won't use. But when you decide to do "X", you can pretty much guarantee you'll find a quality option/extension to handle it.
Its interesting to the likes of folks on HN (and I count myself among this crowd) to find new and exciting ways to do things, but if the outcome is the same ... IOW - what is truly different. It can't just be "how", but "why" and "what".
My biggest complaint about Wordpress when I first had to mess around with the codebase last year is that it is an exercise in masochism. We've moved to much better tools for HTML templating in the last 10 years, yet WordPress in 2013 is stuck with the most awkward approach I've ever dealt with.
"Most awkward"? Really? Its not nice and it definitely carries around some baggage that is a direct result of its evolutionary history, but there is always a way to get what you need. I won't defend its beauty. But i guess my questions to any WP vs. X questions would be - 1. Do you know what you need tomorrow? 2. Are you interested in getting it done or in the elegance of the solution.
TL;DR: a small team at Microsoft (modern.ie) have a site old-ie compatibility scanner that they've written in node and want to integrate into a CMS. This probably isn't a larger strategy or play at Microsoft. It might be a sign of internal change among developers there, which might change their business strategy at some point in the future, but they're definitely don't seem to be "throwing their weight around" just yet.
They already have far larger investments in plenty of other CMSes:
* Sharepoint (the goose that lays the golden eggs),
* Umbraco (which IIRC runs asp.net, iis.net, windowsazure.com, and possibly [parts of] technet and msdn),
* Orchard (which is theirs, albeit through the OuterCurve foundation, which is one of MS' OSS outreaches),
* MCMS (which is horribly old & expensive, but still out there and in use),
* A bunch of internal CMSes, and other stuff that they developed themselves to tie in with backend systems (eg CRM)
Hell, they did more with Oxite before abandoning that than they're planning with Ghost.
Maybe MS as a company want to get more into node, but that doesn't really seem in line with their larger strategy (even though they definitely are starting to embrace OSS more, particularly on the web teams) - so it's probably just likely that one team wanted somewhere that they could test out the library they've written.
the plugin wasn't what got them contributor status. The $50K they paid was. Given that accounts for fully 1/4th of the total amount raised.... I'd say its not such a pittance as a plugin.
Aah, I didn't see that in the article - I can find a kickstarter post referencing them as a partner, but didn't find anything talking about a 50k figure.
I guess that figure does represent a significant investment (their contributions to other CMSes aside), particularly at the current early stage of Ghost's development.
I've been thinking about what should replace Wordpress in the CMS space (as opposed to blogging). There are a lot of aspects of Wordpress that make it great, and a lot of things that make it absolutely terrible. I think part of its problem is that it seems intended to be a platform that non-developers can maintain themselves, while presenting features that really require a developer. As a result, it is not a suitable environment either for non-coders or coders.
I'd love to see a platform that is easily deployed on shared hosting (written in php, using mysql) but that lends itself better to version control and switching environments. It should keep configuration in plain text instead of in the database, and it should allow easy definition of node types in addition to the standards (post, page, comment, etc.). These should also be defined in plain text instead of in the database (I'm looking at you, Drupal). Meanwhile, theming should be just as easy as with Wordpress.
Anyway, it's good to see others trying to enter the blogging platform space and compete with Wordpress, but I really want to see a truly good CMS come along.
JavaScript, since it is the only thing that runs in the browser, is a much better choice since the barrier to building and maintaining a site isn't too far from the reach of a novice because only one Turing complete language is required.
With respect to MySQL. Given what WordPress does today and all the other options out there, is WordPress still the best tool for the job?
Why not Postgres or MariaDB? Or how about NoSQL options? Is there an option which would permit development to be just as easy, but that avoids the security complexity of a database exposed to code injections because it execute arbitrary code snippets?
Because almost all web hosts have php and mysql already installed. They would not necessarily be my first choice for any application, but for a widely disseminated CMS, I still think those are the best choices. I'm open to being shown I'm wrong, though.
True, but it's not hard to roll an entire self-contained bundle for which you can find a host.
Back in the 1990s, LAMP was the most widely available stack and finding reliable alternatives for which you had enough information to make an informed decision was hard. However, we are now far beyond that monoculture and there is enough information asymmetry that you don't need to choose a stack based soley on what is common and available. There is enough variety out there and the tools for deploying without having to rely on your hosting company's stack are good enough that we can have something besides LAMP become popular enough for hosting businesses and OS creators decide to include the the necessary dependencies as default.
Exactly, a new CMS should drop sequel and move to mongo or a similar document store. Being able to arbitrarily add fields to a page, enabled by a store like mongo seems like a no brainer for a CMS.
MongoDB is definitely not a no-brainer - what actual benefit is there to being able to 'arbitrarily add fields to a page'? The whole application layer has to support an arbitrary schema anyways, which is bound to be a security and config nightmare.
Look at the mysql schema of a Drupal system. Either you support arbitrary fields at the database level, or you write a ton of extra code (which will have bugs) and piles of support tables on top of your relational database. It's a waste of time and effort and adds unnecessary complexity.
I still don't think the correct solution is to just give up on the relational model and store a bunch of denormalized documents. Just because Drupal has technical debt (which is not surprising to me) doesn't mean it's impossible to model a CMS in a relational way. Can you point me to a particular part of Drupal which is well suited to the Mongo document model over relational, versus simply 'well it's relational now and they cocked it up'?
> Exactly, a new CMS should drop sequel and move to mongo or a similar document store.
Presumably, you are referring to SQL when you write "sequel"?
> Being able to arbitrarily add fields to a page, enabled by a store like mongo seems like a no brainer for a CMS.
You can do that using SQL-based databases, so its not really "enabled by mongo". With most SQL-based DBs, you may have to use a data model other than "one page is one row of one base table" to do it, but that's simple enough to do. (With Postgres, there's several ways to do it while still using a "one page is one row of one base table" model, as well, leveraging the XML, JSON, or Array types to hold the "flexible" fields.)
There have been a ton of CMS's written I think the problem is just adoption. Without mass adoption you don't get much in the way of ready extensibility. Thats one area wordpress really has the space on lockdown.
Are there any other CMSs that are actually better than WP but that haven't been adopted? I've seen some that are intriguing, but ultimately most seem to have the same problems, such as stored configuration in the DB.
I've been using ProcessWire, and it's been fantastic to work with. However, it stores user-defined template schemas in a MySQL database. Does that pose a big problem for you? I'm really curious to know what kind of troubles you've run into with configuration in the DB.
It poses a problem for deployment, collaboration, version control, etc. For instance, a new data type (not a problem in WP, but you could substitute meta fields or something) will frequently require some new code as well -- a widget, template, or whatever. Once I've built this in my dev environment, tested in the staging environment, and deployed live I will have had to set up the new data type in three different places, or written a script that does it, but most CMSs don't provide those tools, so you would be stuck hacking around with internal functions that might or might not be stable. Meanwhile, any other developers will then have to replicate the same changes in their dev environment.
Version control exists to solve these problems, but when this stuff is stored in the database it is a lot harder to consistently reicate changes. I'm sure people come up with solutions that don't involve replicating configuration in the GUI, but my point is it should be baked into the CMS.
I think Laravel 4 would be a good start for something like that, with Twig as the templating engine. Use as many existing, open source solutions as possible.
Without too much effort you can integrate composer, symfony and twig into wordpress to make it more developer friendly. Hell I have all my wordpress installations maintained through a composer script with phing integration so I can maintain my plugins, themes etc... on top of a non-modified wp instance which makes it easy to update.
It's nice for those times where you don't want to reinvent the wheel just get some content up.
Sounds a little bit like Drupal 8... Configuration in yaml, Symfony components at the core, removal of a lot of the same NIH-related cruft that's weighing down most other mature players in the CMS/CMF field.
It's just the turn of the wheel. Should Ghost succeed, odds are quite good that in about seven years, you'll be reading about how old and crufty Ghost is, held back by it's aging Node.js platform, and how some new hotness or other is coming along to give you just blogging (or whatever).
To a first approximation, every web project starts life as a "clean, simple X without all that cruft". It is the destiny of most projects to follow that with A: failure or B: becoming the next pile of sludge to inspire a "clean, simple X".
This is where statically typed code bases really shine IMHO. I've seen >10 year old Java code bases that are maintainable because of all the automated re-factoring that can be done to clean up naming inconsistencies and deprecate various mistakes. With dynamic languages cruft and little mistakes just keep building up till people give up trying to maintain it and want to start over.
Automated refactoring came from dynamic languages. Just because the popular ones lack it doesn't mean it's not done. Smalltalk's refactoring browser works very well.
I'm curious how easy it is to build automatic refactoring tools on top of a dynamic language that was not designed to support it, versus a static language that was. I reckon that the formalism enforced by static typing would provide enough vigor to greatly increase the chances that you can bolt on automatic refactoring as an afterthought. My impression is that the SmallTalk designers adopted some automatic refactoring early on because they developed their tools alongside the language and by doing so, the language informed the tools and vice versa.
Smalltalk wasn't designed to support it, it's decades older than the concept of automated refactoring. It is much easier to do in static languages, and doing so in dynamic languages requires code analysis at runtime. As it's always runtime in Smalltalk this fits naturally, it wouldn't be so in Ruby or Python where you're working on text files rather than a runtime.
There is another force at work here... If you do achieve a "clean simple X" and manage to resist over time all temptation to add cruft; if your "X" really is clean simple and above all found useful by some people, then after a while it starts to look like a dead project. No new "features". Not many bugs left to fix that bother people. Sufficient means to plug in additional/variant functionality that real users need. No need to change the codebase, and not much more to say about it. So to a non-user - perhaps evaluating it with a view to use - it looks very much like a moribund piece of work.
The continual adding of cruft is (partially, at least) driven by a need to be seen adding new Hot Sauce all the time.
The people behind Ghost didn't think that Wordpress is fine. So they set off to create something better and a bunch of other people also thought the idea would be better so they supported them. That all seems good to me.
What's even better, you might agree, is that they are not stopping anybody else from setting off to create something more complicated than blogs and crud apps.
I agree, we don't need to reinvent blogging every few years, but WordPress has moved beyond just a blogging platform, and is a full-featured CMS. Blogging is no longer the main emphasis of WordPress.
Were WordPress to refocus on blogging features, instead of adding lots of other stuff, that'd be awesome.
Why are we still writing in mark down? Fair enough, as a techie, it's just assumed you will learn another "language" and be productive. But a creative writer shouldn't have to think "how many #'s do I need to press? what's the shortcode for italics?" They just want to be free to create. But they also want to see their masterpiece coming to life in all it's glory.
We've mastered the "Word editor" and it gives immediate feedback without reaching for a reference manual, why would we (inclusive: all writers) take a step backwards?
One benefit is that it's portable: your text will be rendered properly with the correct formatting anywhere markdown is supported (github, forum comments, blog post, etc). It essentially frees you from having to worry about layout and visual styling, which shouldn't interfere with the writing process.
There's no markdown standard (although I think some implementers were talking about it) beyond the original implementation, some implementations may not even support that I believe hacker news supports a subset. It is portable in the sense that you get(probably browser portable) simple html after running it through a probably open source markdown implementation as opposed to complex word formatting formats like odf or docx.
I'm really excited for Ghost for the simple reason that it's written in Node. That means if this really takes off there will be pluggable modules that can do anything that you'd like without adding to the code base. I think it would make a lot of sense if the core team doesn't add much to the initial code base and rather iterates on the UI right and works on growing the community because that is what is going to make the project take off.
Really smart move by Microsoft, if for no other reason than tons of people are going to be saying "wait, whut, where do I install this?" soon and if deployment is first class to Azure at least they'll have a lot of new people in the door.
Also I think there's plenty of room for evolution in blogging. There are so many places that we create content now whether it be audio, photos, video or microblogging and there isn't a widely used way of curating your online self at all of these mediums. My personal website is on Syte (https://github.com/rigoneri/syte) for this very reason that it displays my social network content next to my blog posts in a way that is more coherent than just a widget.
"Compared to WordPress’s bulky editor and aging PHP code base, the difference is striking."
Well established product versus something that has not been around awhile. It has nothing to do with the language the code was written in, it is a product with a past versus a new product that has learned from preceding projects.
"an ease to writing that makes it pleasant to compose text formatted for the web...Compared to WordPress’s bulky editor and aging PHP code base, the difference is striking."
I don't know anything about WordPress's bulky editor, but how does the code base have any relevance to front end usability?
Was thinking the same. I can see what they might be getting at if you compare Wordpress + mods vs clean Ghost. I doubt once considered fully featured that Ghost would be so much more efficient as to make it a key point of differentiation, for the average small blogger anyway.
I backed Ghost on Kickstarter and I really like the idea of an ultra simple platform. I have had blogs for years on Tumblr and Blogger, but I'd certainly be open to using Nolan's work.
Same. Looking forward to getting beta access in a couple of weeks. I built a little solar powered raspberry pi node box that'd certainly benefit from a little node-based blog :-D
This already exists today: no need for funding, no need for self hosting, Microsoft is not involved in any way, beautiful typography, local storage for writing, nice profiles, stories ranking, a responsive design, made by a designer who writes code. An export to Jekyll feature is coming soon, so you can take the markdown documents to any other platform or just make a blog out of it.
Excuse me, but what exactly is this supposed to be? I took about 5 minutes to figure out the UI, there are bugs with logging back in after (accidentally) logging out, and it throws what I write in some kind of global timeline thing?
EDIT
Not to mention the fact that I WANT to self-host!
It isn't ready for a "show HN". Global timeline is there for getting exposure. It looks intimidating now, but it shouldn't. Thanks for trying it!
Self-hosting and updating an entire web app is not very realistic these days, but exporting in a ready to deploy site is a feature I'm thinking about. It isn't implemented yet.
I don't want this to have a private mode, everything is public. You can't guarantee privacy these days. My target is more towards what Medium and Svtble are doing, than WordPress.
>Self-hosting and updating an entire web app is not very realistic these days, but exporting in a ready to deploy site is a feature I'm thinking about. It isn't implemented yet.
Ah, now I get it. That would be a nice feature.
>I don't want this to have a private mode, everything is public.
Is there a preview functionality? If not, that would be an important feature.
>You can't guarantee privacy these days
That's true, but you can still give users a little privacy if you want to. I personally wouldn't want to write on that platform without a drafts/preview folder, but that might just be me.
What happens when the blogs that inevitably grow bigger than a platform need to turn into a community and something more? Surely just a blogging platform will not suffice.
How many people actually use Wordpress for just a blog, anyway? This is all reminiscent of the early blogging platforms that did one thing well but in reality most people need more than that one thing if it's something more than an area to post personal musings.
I've been using a host of static site generators for about a year now, and for the less serious blog they seem to get in the way. I'd prefer to have everything online, accessible from any computer with an internet connection. Posting quick, little thoughts is not something Jekyll or other static site generators do well.
For the more serious blog, which has infrequent and longer posts, I really like the static site generator, because it lets me keep everything together and easily deal with it locally.
This weekend I've been playing with Kirby. It's a static site generator powered by PHP that runs on Markdown powered text files but it also has an optional control panel for editing posts if you need that.
I looked at Kirby. My problem is I don't really want to pay for it. Were I to pay, I'd probably go with Statamic, which is similar to Kirby, but looks nicer.
Mostly I don't want to pay because I like the idea of open source, and having the ability to submit a fix if I find a bug appeals to me. And partially because I'm cheap.
Wordpress is plug and play on almost any webhost out there (some even have installers for it). Ghost is node.js which is barely supported by webhosting companies (you will most likely need a VPS or some specific node.js HaaS, at least).
Will this not be a huge barrier to achieve the same traction Wordpress has?
I actually think that if a project like Ghost becomes really popular it is almost guaranteed to end up with a full scale plugin system and therefore become a type of operating system despite what the founder thinks about that.
I think we do need something with an updated stack that has capabilities somewhat like WordPress. Here is an idea that I started on a while back. (Obviously not very pretty and needs a lot of refinement.) http://vimeo.com/43784316
If you can believe it, this story was originally pitched to ReadWrite. They rejected it and instead ran 10 stories about the new iPhone that day. The following link is a pic of the analytics stats on this article from today. Thanks guys, over 9000 thanks to you :-)
I'm curious how many folks have issues with WordPress from a pure user / author perspective so outside of how the code is written or a site is installed Also what are your thoughts on how responsive Automattic are to user feedback for publishers?
I've found that since WordPress switched to the current sidebar navigation over the old one (the four main headings, of which Write was first, iirc) it's a pain to write blog posts.
I'm also not a fan of the large number of additional options available for posts. I'd rather have zero options, just write text and hit post. I understand why it has all of the options, but I'm partial to simpler systems that do one thing really well, as opposed to big systems (like WP) that do lots of things acceptably.
Because they promised early beta access to Kickstarter backers. The lowest tier of rewarded backers gets access within the next week, and the codebase will be open to everyone some indeterminate short amount of time after that. I'd be surprised if it the delay was more than a month or so.
I use WP every day and I'm really grateful it exists. But from my perspective, the problem is not "WP is so great at content management we need to develop something just about blogging". The problem is "Lots of people have cleverly managed to hack WP into running as a general purpose CMS because there's such a wealth of support, knowledge and extensability surrounding it".
I'be be much more interested in a new modern, flexible CMS built for that purpose from the ground up than I am about a new blogging software.