Browsed the code a little bit and my overall impressions are the while the code quality is good, it's a shame that it seems to be tightly coupled to doing a database as the backend. I was hoping to fork Ghost, or even better just provide a plugin for it, that uses static file creation instead of a db backend but looking at the code this looks like it's going to be a bit of work to do. I'll probably still do it but it would have been nice if the db stuff had been abstracted a little further out
Ghost is super cool and I love the UI, but I also find that having a persistent database limits some of the portability. And, depending on what's in the database, it might mean that developers can't use their favorite tools (like Sublime Text, etc.) to author content, develop and design templates, etc.
This is a bit of a shameless plug, but I figure it's relevant to this topic. I just put up blog post introducing my new project, Grow (http://about.grow.io/blog/all-i-want-to-do-is-build-a-web-si...). Grow overlaps with Ghost in some ways, but attempts to be a full-fledged, modern file-based CMS and is not designed just for blogs alone. I've been following all the replies in this thread to get a better idea on what people are looking for, and I think I've nailed it.
Basically, the way I've architected Grow is the whole system is file-based: content is stored in Markdown or YAML files, templates are stored as Jinja2 templates, separate from the content.
When you start up a Grow server for development, essentially what amounts to a super lightweight in-memory index is created from the file structure, and that allows your site to be generated (including pages that leverage complicated queries or access content through taxonomies).
This design keeps everything incredibly portable (zero-configuration development AND zero-configuration deployment) – which is one of the values that I hold to be very important. Anyway, the project is still super young (and my blog post is light on technical details, but I'm working on it), so I'm interested in getting any early feedback.
I find it odd that you feel put off by the single choice of database, while also arguing that users shouldn't mind being tied to databases in general. Surely using SQLite when your setup is better suited to PostgreSQL is a less harmful trade-off than the case where files would have been better suited to your system/requirements.
I suppose. I have never understood an aversion to databases in general (though I do understand the general concept that the filesystem is, in a sense, a perfectly fine database for many purposes).
If you're a dev, forking Ghost and replacing the DB with something else isn't an insurmountable task.
Your prep work in isolating the database work may even be something the Ghost people themselves would be interested in merging, as it's just good design to do so (if they hadn't already).
I completely agree, if you decide to do it and need any help PM me. With something lightweight like this it would definitely be a lot better with a simple file system instead of a whole database that you need to set up and deal with. I have done something similar before in PHP, but the Ghost front end is really nice.
The difference between 'CMS' and 'publishing tool' is semantic. Ghost is connected to a database, allows you to create content and manage assets, and if you read through the discussions in their forum it's clear many people are already excited to use Ghost not just to blog, but to create websites.
That's not to say they will become Wordpress, but just to point out that content management is in fact part of what Ghost is created to do.
Been watching Ghost for a while and ever since I saw it get so much funding I thought to myself; with those pledged features I could do this alone, better, faster. Since then I have been sidetracked with a closed source somewhat-overlapping project but now that Ghost is out I plan to steal some ideas people actually like from it and continue building my own platform. Kinda makes me chuckle in that they got payed to do this and yet their feature set is still so underdeveloped, for a blogging platform of all things.
I think now that you've made your point I may abstract models to the point where the database can be either MariaDB or a bunch of JSON files/SQLite. Its tricky because I build databases for performance and scalability over flexibility.
To give you an idea of what I mean, Wordpress makes me cringe in the way they handle their tags, categories etc. and the sheer amount of SQL queries and joins for a simple front page. I make at most 2 queries for the front page (excluding sidebar, which would be cached), the user session authentication and the articles. I make no queries if I can help it ( Caching in node.js is so fun ). Categories are always in memory, along with user roles, settings etc.
It's really quite glorious having a readily available memory store. I'm getting around ~500 queries per second to my front page in apachebench, which would normally have about 7-10 queries to the database.
I agree, you guys are right. Was in a kind of shitty mood when I wrote that and now I'm kicking myself for coming off like the egotistical bitter dick that I know I am. :p. HN deserves less Reddit type smugness.
The whole Ghost thing I should have mentioned is IMO a pretty sweet concept and not at all a bad followthrough. Their marketplace, partnerships, capital etc. make them a much better contender than my team could be.
You laugh at them, but they actually have a product out and it's good enough that you plan to steal features/ideas rather than work out your own from scratch?
Honestly, a better Wordpress is something that the majority of people with a reasonable understanding of web development and database design (or hey, with a NoSQL store, maybe not even that! /troll) could do in a weekend. However, as you've said, we all have other things to do, but more importantly, it's the free upgrades and transfer of liability that make Wordpress enticing. I'm sure there are plenty of developers out there (myself included) that are happy to say "there's a bug in Wordpress that we'll need to patch" vs. "there's a bug in my code that we'll need to patch".
That is simply not true. You could not write a whole CMS with plugin-api, template system, image manipulation, user roles, auto-installer (and auto updater of plug-ins and entire install), comments system, image galleries, media manager as well as a administration backend (that mind you not only needs to work, but also needs to be designed visually) as well as a high quality default theme.
Where do you guys get off saying such things? It's a completely absurd statement. Of course you can't do that.
You're right. I wasn't really thinking about building my own platform; more thinking about building a CMS that did what I needed it to do. The plugin API would take some work, but a templating system, image manipulation, user roles, auto-installer, comment system, and media manager are all very easy to implement, if not provided to you for free by PHP or an existing library (ImageMagick, for example).
The WordPress community is rivaled by none and that makes it a hard option to pass up on a budget.
edit: This isn't to say I prefer WordPress over something like Ghost. What I do prefer is something stable with a healthy community. I wish Ghost as well as others like it the best of luck in getting there.
A community has to start somewhere. Ghost is a brand new platform but I'd be surprised if a strong, active community didn't grow relatively quickly. It's gained 800 stars on GitHub in the space of about 3 hours.
It's what many people with a reasonable understanding of web development and limited experience of writing a CMS think.
It's a well-trodden rite of passage for many web developers to end up writing a CMS or three from scratch (which are always limited, clunky, and unmaintainable) - until they get sick of getting caught out by edge cases on things like multiple editors in race conditions, CSRF on forms, scheduled revisions, password reset flows, user synchronisation, localisation etc.
That may be a great learning experience for a developer but expensive for businesses that end up having to migrate and re-platform after a year or two. It's really hard (and dull) to create a good CMS, and even then the considerations go beyond technical as this is a piece of business infrastructure. Why do you think Wordpress has so little competition even though it's a large and valuable market?
In my experience running two rather massive WordPress installs the vast majority of one's bugs will not be found in WordPress, but in ones extensions of it. The liability argument applies well to UI/UX, however.