Hacker News new | past | comments | ask | show | jobs | submit login
Ghost Launches to The Public (ghost.org)
475 points by jallardice on Oct 14, 2013 | hide | past | web | favorite | 261 comments

Taking a look at their "idea" page, I found myself nodding along with most of their bullet points (or shrugging and saying "not exactly my preference, but I can see why you'd want that"), until I hit:

  Ghost would have cut-off points with major versions, 
  allowing core developers to remove old code from the 
  codebase and evolve the platform to allow it to improve. 
  No one expects an app written for OSX 10.4 Tiger to work 
  on OSX 10.8 Mountain Lion.
Oh, hell no. Backwards compatibility is way more important than some shiny new feature. When I upgrade my software, I expect it to work better, not break. If I have a working plugin from 5 years ago, why should I have to fight with some pointless API redesign just to get it to work again?

In the real world, people need compatibility more than they need whatever cleanup you're able to do by breaking compatibility. Heck, in many cases you can get both by doing your rewrite but leaving a compatibility layer on top that gives you the compatibility that you need.

I'm so sick of trendy "modern" frameworks like Rails that break compatibility every 5 minutes, and listing breaking compatibility as a major feature is a huge turnoff.

How about focusing on spending the pre-1.0 releases iterating and designing a really good API that will be amenable to backwards compatible extensions, and then sticking to that API and backwards compatible extensions to it for the forseeable future?

How long do you expect upgrades to work before a break in compatibility?

The difference between 10.4 and 10.8 is seven years. That doesn't seem like an outrageous amount of time to break compatibility.

How long do you expect upgrades to work before a break in compatibility?

Forever? At least the linux kernel has an explicit goal of never breaking userspace. That doesn't mean other parts of userspace don't break themselves, but the linux kernel has as a development goal to never break binary compatibility for userspace.


Okay, but would you really be that pissed off if a Linux application from 1991 didn't run on your latest install of your favorite flavor of Linux?

It's important to remember that the Kernel is a very small piece of the puzzle that decides whether your 1991 binary works on a system today. The real kicker is whether the glibc versions match, whether X11/Motif will still be around for a while, etc.

But I still admire the kernel for their stance even if it can't solve every compatibility problem.

If you are coding against a well documented and thorough API, why should the year matter?

My last computer retired - 1 month ago. It was more than 5 years old, running Windows XP. XP is still very popular and I would expect it to still be supported and it's 12 years old. Where did you get your 7 year magic number from?

You can't talk about Windows XP like it's a single, fixed point in the release cycle. XP was released in 2001, giving you your 12 year number, but there were also major service packs released in 2002(SP1), 2004(SP2) & 2008(SP3). The last release of XP was only 5 years ago - more recently than OS X 10.4

Of the new software that still claims XP compatibility, much of it requires SP3.

SP 3 is free (Service Packs) and it's just because the .Net framework requires SP3.

So actually, XP = XP SP3.

Yes, it's free but that doesn't mean it's painless. Going to SP2 and SP3 broke backwards compatibility with some drivers and software. It increased the RAM/CPU requirements for running the OS comfortably. They weren't just harmless stacks of collected bug fixes.

Microsoft products receive 5 years mainstream support and 10 years extended support. XP is currently supported for organisations who purchased extended support, but only because there was extraordinary demand for it. It ends in just under 6 months from now.

Unless you're a large organisation paying a lot of money, you aren't likely to get 5 years of support for a particular version of most products.

http://support.microsoft.com/lifecycle/?LN=en-gb&C2=1173 http://www.microsoft.com/en-us/windows/endofsupport.aspx

There's a difference between end of support and end of backwards compatibility.

The 10.4-10.8 is in reference to OS X, and ~7 years is the amount of time between 10.4 (April 29, 2005) and 10.8 (July 25, 2012).

Especially for a young project, I think this is ok. You don't want it to be set in stone too early. Once there is an established ecosystem around Ghost, there will be a lot more pressure to keep it stable.

Even better than that is pressure to keep addons/plugins/whatever up to date.

I think there's some good precedence for that with Firefox who (still?) deliberately broke all their extension compatibilities on every release, and contrary to that Wordpress who've led to a fully automated exploit ecosystem.

I don't know about Firefox doing that on purpose, but the addon that I've written (Link Exposé) has seen several releases of firefox (19.* to 24.*) without having to do an (api) "update". It's written using the new jetpack SDK (now "Add-on SDK") - and there is a commitment to keeping that api stable.

Nope, this is exactly what happened to Wordpress. As a senior Wordpress developer who deserted the platform after giving up, I can safely comment on your views:

#Supporting older versions is a pain. Supporting all features in older versions AND newer versions to work together is an even bigger pain. Example: Wordrpress.

#Compatibility for older version leads to bloated code, with too many legacy variables, too many points of failure. Example: Wordpress.

#Evolution of any software requires that it discards old ideologies and embraces the newer ones. The ones that don't do, tend to drift away from the main goals. Example: Wordpress.

Wordpress was started with the exact same intention as Ghost and yet, what you are left with now is a half-baked unstable CMS, and a half-baked blogging platform that breaks old plugins with each upgrade.

If you want to embrace progress, then you must embrace C.H.A.N.G.E. And this is not just for software.

That's hilarious, it's a major feature I want from a blog and I came to the comments to advocate. It's one of the best things about Drupal, for instance.

I want a frozen codebase that only worries about critical security updates.

In the real world, you will break your site by adding new plugins every few months. The site will break. I get a stable codebase and I sit on it.

Development causes bugs! Milestone releases are what I want.

> In the real world, people need compatibility more than they need whatever cleanup you're able to do by breaking compatibility.

Here's the thing: if you're a user that needs compatibility don't upgrade! (not an option with most blogs) If you're always adding new functionality and plugins to your blog, things will break. If your business needs constant new web technology updates, use a real CMS and fix them when they break. They will break, they always break.

Compared to WordPress, which touts backward compatibility as a strength, yet still manages to break itself in some way, shape, or form with every new release?

Me and everyone I have talked to in the WP dev community have exactly the opposite experience.

I have used plugins that haven't been updated for four years without any issues.

Are you sure there's no security issues introduced since those plugins were last updated?

I'm not necessarily comparing to WordPress. What I'm saying is that they should be going in the other direction; towards better backwards compatibility.

Of course, one way to achieve this is less reliance on add-ons, so you have less API surface to expose. Having a usable WordPress install relies so heavily on add-ons that it's kind of pointless to consider WordPress alone.

> In the real world, people need compatibility more than they need whatever cleanup you're able to do by breaking compatibility.

Time and time again, rolling software has proven to be more secure than static releases. A plugin from five years ago that hasn't been maintained in that time is probably going to hurt you a lot.

Rolling software is better achieved with better backwards compatibility than it is with constantly breaking API changes.

When you have constantly breaking API changes, and then someone has an essential plugin that's unmaintained, then they're a lot more likely to stay with your old, buggy, insecure base package, rather than finding someone who knows how to update their plugin (remember, most users aren't programmers, and most have installed plugins for a reason).

What you do is try to minimize the API surface that plugins have so it's easy to maintain backwards compatibility, and minimize the impact that older plugins can have by keeping them reasonably well isolated.

You say this, but I can't remember the last time an old unmaintained but reliable plugin has burned me. Likewise with old extensions and libraries.

I'm not much of a wordpress user, so alas can't provide good wordpress examples, but this is really a software in general thing. Run a Linux box? How many times have you upgraded OpenSSL in the last five years?

Hopefully a lot.

> A plugin from five years ago that hasn't been maintained in that time is probably going to hurt you a lot.

Unless it just does some simple, or basic thing. In which case, you're still hurt. But in a different way....

For that matter, most apps written for Tiger should work on Mountain Lion, with the important exception of PowerPC apps - but that was a matter of maintaining library support for an entire architecture, and anything written for the Intel release of Tiger is fine.

The other way around is different, of course, as as a huge number of new APIs have been added since then.

You must not own any Apple products. I have friends with the first Macbook Pro who can't use OSX 10.7+.

Should Apple not have gone to a 64-bit operating system because of hardware like the first MacBook Pro, with a 32-bit processor and RAM that maxed out at 2GB?

I buy a new Mac every year so I'm up to date. I'm about deprecating old stuff, you can't carry legacy software/hardware/products over forever.

This is the reason why my own blog is static files of Markdown for the content, combined with a tiny blog engine, all in the same git repo - I just don't want to deal with the pain of some upgrade suddenly breaking stuff I've come to depend on.

I'd be curious - what do u use, and why? I've been meaning to look into getting my own blog restarted, but just haven't gotten down to the question of which static site generator to use.

More than $300,000 was raised on Kickstarter for Ghost, so after seeing this public release of Ghost I was really surprised. It is so simple, I could have paid a developer $500 to make it with more features.

The Ghost admin panel doesn't allow editing themes, the post doesn't have buttons that allow you to quickly format posts, there are no SEO options/plugins, there is no theme editor that allows editing of themes, no sidebars, no multi-user creation, no e-mail to post, etc. Too many features are missing and this is very simple. WordPress is better, there just is no debate on this right now.

This is the first public release, to get feedback. They already stated (on their own blog) that an improvied admin panel, themes, plugins, etc. will come but it will take some time.

Also, we are talking ~37k lines of code, not exactly something you can write in a week or two for $500.

37k lines of code? And what we have finally? Tiny blog engine without categories support? Fuckin javascript.

I'm pretty sure that's actually the point of Ghost. To strip away all the features that make WP bloated, and bring it back to simple blogs.

Wow. An actual critique of Rails??? +1!!!

I've been looking forward to this release. Not because I want the blogging platform, but to take a look.

In the node world, it's easy to find reference code on libraries and modules, but I always fail to find a source of some practices further developed than todo lists. It is not about the code (which as far as I have looked is Ok), but about tying technologies and practices together.

Here, we got a node express backend with handlebars as the templating engine, defined grunt tasks, some unit tests and backbone on the client.

I am really looking forward to keep diving as the project progresses!

Check out issacs npm-www[0] too. I found it helpful for trying to learn how to get things done sans express.

[0] https://github.com/isaacs/npm-www

I used this a bit :). I think everyone should make their own frameworks from scratch so they know exactly how it all works.

By the end of it you might, like me, just continue with your own framework (when you can of course).

> Here, we got a node express backend with handlebars as the templating engine, defined grunt tasks, some unit tests and backbone on the client.


Sorry, I couldn't resist. I'm something inbetween disgusted and amused by this soup of JS libraries and buzz words. I feel like I'm gonna vomit while laughing.

Yes, libraries have names. Names are meant to represent and be used to refer to these libraries. The same could apply to any web project in any language:

Here, we got a python flask backend with mustache as the templating engine, defined fabric tasks, some unit tests and backbone on the client. CPU sensitive tasks are handled by Celery or RQ, on Redis or RabbitHQ.

Maybe you would prefer:

Here, we got <Insert your language here> , with no templates, some bash scripts to build the project, no unit tests and a half-assed mess of javascript spaghetti code tied together on the client.

I must ask, if you do build websites, how do you (or if you do):

- Use a framework

- Use templates

- Minify and build assets

- Test your code

It's been many years since we have moved from frameworks that do everything, to small libraries that do one thing and to it well, sometimes opinionated or not. For me, choice is better.

It is always a good pass time to look how people build their projects, compare it on how you are doing it, and decide if you can learn something from that. I might be wasting my time, and your comment was just an opportunity to bash on a language or community. I could not care less, as I have no cards on this game. Just use whatever works for you.

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.


the db is sqlite by default, and its stored in content/ with your themes and other stuff (?)

so you just backup your content directory ;d

Using a database should really not be a deal-breaker... you should evaluate it on other factors.

My gripe is that it appears tied to SQLite, and I can't use Postgres. Oh well, wasn't planning on using it anyway.

Shouldn't be tied to SQLite (the underlying query builder/orm support Postgres), it's just not "officially" supported yet.

So in theory putting in the correct connection config should allow you to use Postgres.

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).

I just like Postgres, that's all.

I haven't written node code before, so correct me if I'm wrong. The package.json file indicates MySQL as an optional [1] :

    "optionalDependencies": {
        "mysql": "2.0.0-alpha9"
And this guide [2] seems to indicate that PG support is possible.

[1] https://github.com/TryGhost/Ghost/blob/master/package.json

[2] http://www.howtoinstallghost.com/how-to-install-ghost-on-her...

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 default database is SQLite, which is a file and doesn't need to be setup or dealt with :)

And needs to lock when saving, so you can't have multiple users saving at once. It only works for single authors.

Fine for a default though. As long as you can switch it later.

Just curious, why not go with Jekyll if you want something lightweight and static?

I want the Ghost admin interface.

Second on PM'ing for help. I have been interested in node.js CMS's and this has been the most promising one. I have not dug into the code yet.

> I have been interested in node.js CMS's and this has been the most promising one.

But it is /not a CMS/. It's a blogging platform, and it set out to not become what Wordpress has turned into (a CMS).

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.

How do I PM someone on hacker news?

You don't.

Maybe you can try looking into one profile.

Yeah, my bad, I assumed you could. send me a message on twitter. @thecolorblue.

I was planning on doing this as well. If you do it, where might it appear on Github?

Have you looked at prose.io?

Seems to be tied to GitHub which is not what I want.

Have you tried http://logdown.com/demo ?

As nice as the editor looks, I doubt many hackers are going to pay to use a tool to blog about programming.

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.

Your post comes off very egoistical. Ghost has actually delivered. I would hold off on your self glorification until you do the same.

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?

I understand a taxonomy overhaul for WordPress - one that thankfully doesn't require joins - to be "in the works." Should also allow term meta to become a reality. http://make.wordpress.org/core/2013/07/28/potential-roadmap-...

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.

I see those comments mostly coming from people that used wordpress once in 2005 and never touched it since.

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).

But it's also the community.

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.

It's great to see how Kickstarter helped also "stabilize" the development of Open Source software (another example is Django Migrations project [0] which has been discussed here a couple of times already). It helped Ghost provide something on a much higher and usable level than most other Open Source projects did, which should have positive impact on the user/community adoption. I'm speaking here about collaboration with Digital Ocean, Rackspace and Envato, as well as the marketing campaign by Kickstarter before this release. DOcean, RackSpace and Envato alone will generate pretty high traffic and build up the community, especially if Envato (with Tutsplus/Nettuts) starts doing something similar as for Laravel [1][2][3], and provide free developer introduction to the platform.

Glad to see this, hope it will keep up the expectations.

[0] http://www.kickstarter.com/projects/andrewgodwin/schema-migr...

[1] http://laravel.com/

[2] http://net.tutsplus.com/tag/laravel/

[3] https://tutsplus.com/course/laravel-essentials/

I think it's the idea in general, not the specific platform. Joey Hess was able to successfully run his own crowdfunding campaign with custom written software.


I agree about the crowdfunding idea; very often I find myself saying/attributing "Kickstarter" when I really mean "crowdfunding" :)

Thanks for the Git-Annex link - didn't know he ran a campaign on his own after doing it on Kickstarter.

What would you say is the biggest difference compared to Svbtle and Medium?

From a first glimpse:

Plus: - Good design, simple to use, friendly colors. - MIT license. - Well done support forum.

Minus: - Features should be more clear. - I might be mean but when I read "Just a blogging platform", I automatically read "Just a(nother) blogging platform." - Better replace the laptop+wodden table+moleskine+coffee stock image with something better. Everyone is using that stuff right now. If you want to be different, better look different. - Why the name "Ghost"? Maybe it has some meaning? - Git Link way too hidden.

Good job!

"What would you say is the biggest difference compared to Svbtle and Medium?"

Svbtle and Medium are hosted (and as a result, controlled-by) a 3rd party. You host Ghost yourself, giving you complete control over the platform. I think a better comparison would be probably be to Wordpress.

You can host Ghost yourself. You can also use their hosted service, which funds the non-profit that develops Ghost.

I'm choosing between this and Medium, and the user-facing design (at least the theme demo'd on their blog) looks similar.

I'd like to hear a comparison (though happy to throw wordpress in the consideration pool too)

That's not comparing apples-to-apples. Ghost is to Wordpress what Medium is to Facebook.

Medium is 'locked in.' Basically, if you want to make money from your articles or get decent analytics you're stuffed.

If you're choosing between Ghost and Medium, and would like something that is hosted, I recently released Silvrback (https://www.silvrback.com). It has the simplicity of Medium, while giving you control over your own brand.

Ugg. I really like where you were going with that, but you lost me at this: "People shouldn't spend any time configuring a server for a blog."

Maybe some people shouldn't be spending any time configuring a server for a blog, but I have been increasingly working to take back control of my data and it's related services. That means I want to be able to install things on a server of my choosing. This also means FOSS wherever I can possibly put it. I would even happily pay for the FOSS, but the thing I hate the most about medium, svbtle, and the others, is that I can't use the platform where I want to and I don't see gpl/mit anywhere.

I understand that your intention is the hosted segment, but I really think you could gain a lot more traction by going to a one time price, FOSing the code, and still offering a paid hosting service for those that want it.

Maybe it's just because the older I get the more I am aligning with RMS.

Yeah, you're right. There's always going to be a group of people that want to configure everything themselves and setup their own servers. I'm not really targeting this group with silvrback. Open source ghost would be the best route for you.

However, there are a number of people looking for hosted solutions so they don't have to waste any time with config issues. This is where Silvrback comes in. Also, Silvrback should really only be compared to the hosted version of Ghost (which isn't out yet). Comparing it to open source isn't really possible.

"Comparing it to open source isn't really possible."

I don't really understand this line of reasoning. You are running code on your servers, are you not? Your code is either closed or open. (closed) How is comparing it to open source not possible?

Just not possible in the sense that a hosted solution has the expectation that everything is managed for you. An open-source solution requires you to do the work of setting it up, configuring, handling traffic spikes, backups, etc...

I see your intention now, but you are using the words in the wrong context with the wrong definition. There are plenty of hosted open source products that require little to no setup.

If you are targeting people who don't want to configure anything why are you using markdown?

I would have expected you to use something like TinyMCE. Markdown is like coding for non-programmers.

You should respond to your emails ;)

I apologize if I've missed an email. The last couple of weeks have been really hectic for me. Please send it to me again.

Got it.

> Why the name "Ghost"?


'Why the name "Ghost"?'

I'm speculating wildly here, but maybe because the blogging platform becomes invisible, like a ghost. A similar approach to LaTeX for word processing. And also perhaps because of the writing theme, as in ghost writing.

It took a bit of effort as the code is unstable, but I've managed to create a pretty interesting Dockerfile[1]. Just run a git clone, git submodule init, and then docker build from within that directory. That will then allow you to have an instance to test and play around with.

I also have an instance up and running[2] if you want to play with it. Messing it up doesn't matter to me as I will just docker run a new one. Have fun.

Username: nstinemates@gmail.com

Password: demodemodemo

1: https://github.com/keeb/Ghost/blob/add-dockerfile/Dockerfile

2: http://stinemat.es:49429/ghost/

edit: One of you lovely gentle souls decided to change the demo password. Thanks for making me have to `docker stop` then `docker run` a new one and inconveniencing me for all of 2 seconds.

Link updated.

Using "nick" as username gives me: "invalid e-mail".

ah - nstinemates@gmail.com is the login then. I'll edit.

Seems like they changed it again

Oh well. At this point I'll just point to the Dockerfile and say run that :) It takes less than a minute!

Or if you want a private instance I will make no guarantees about just send me a note. I'll be happy to provide it on a subdomain of your chosing.

What are the best practices for deploying a node.js app from git on Ubuntu behind nginx? I'm sure someone has a blog post on that but "Ghost" makes it a bit difficult to google for.

In case anyone's looking, this PPA[1] seems to come recommended and has an up-to-date node.

[1] https://launchpad.net/~chris-lea/+archive/node.js/

This is a good guide which explains the best technique I've found, and which I'm currently using in production for the startup I work for:


Basically Nginx is used as a reverse proxy to serve requests from a pool of Node.js processes, each with its own internal port. So you would set up the Node.js app to run internally on ports 8080, 8081, 8082, and 8083 for example. (If you have a quad core server this assures that under extreme load each processor can be fully utilized by one single-thread Node.js process). Then Nginx serves requests on port 80 by fetching the response from one of those four internal ports in round robbin fashion.

If one of the processes crashes due to a bug or you want to specifically restart it so that a new code update takes effect in production then Nginx will automatically remove it from the pool while it is down and then add it back when it comes back online. When you are pushing out code updates you can cycle each process one at a time to do a zero downtime deploy.

The other cool thing that you can do with Nginx reverse proxies is use the proxy_cache as a robust cache layer to almost completely remove stress from your blog under high load.

Honestly for a basic personal blog this technique probably isn't really necessary. You could just run it through Forever on port 80 with no Nginx and forget it, but if you expect tons of traffic, or if you want high 99% uptime, or if you just want to have some fun configuring a server then the technique I explained above is how you do it. It takes some fiddling to get Nginx configured properly and that tutorial I linked actually leaves out some details of the upstream server configuration but its pretty easy to figure out from the Nginx documentation.

I used this[1], and it worked great. Setup my blog in 30 minutes or so.

[1] http://0v.org/installing-ghost-on-ubuntu-nginx-and-mysql/

If you're looking to deploy to a larger platform (AWS scale deployments) check out the JuJu charm for node apps - https://juju.ubuntu.com/docs/howto-node.html

I am using Dokku

Which in this case would make things a little more difficult cause Ghost uses SQLite and Dokku can't deploy apps which use it because of default Node.js Heroku buildpack which prohibits SQLite usage. You can patch a buildpack though.

For example in my fork of Dokku I replaced Heroku buildpacks with plain Dockerfiles to define both a stack and a runtime dependencies — https://github.com/andreypopp/upaas

How are you liking it? It's very handy for launching apps, for sure, but I'm wondering how you can configure services (e.g. how do I set up redis persistence or nginx directives or postgres backups?).

I personally use Docker

Well, I tried taking a look at it, but the setup is kind of funky.

* [edit] Download link seems to have been fixed.

* Cloned the repo instead and set everything up. Cloning the submodule for the theme didn't work due to some rights issue. Cloned it by hand then.

* Setup was pretty easy otherwise, even though I'm using the development version.

* [edit] Nevermind. You can signup without the mail sender beeing setup, just not recover the password it seems. Notifications per mail are also disabled. Should have read more carefully.

* No direct link to the interface on the blog index (or am I blind?). Have to add /ghost by hand.

* Rest seems pretty nice, though barebone. No comment system, why? The only benefit to static blogs that is left is the online editor.

If you're developing software that needs to be installed, then please read the parent post. Too many software install guides are pointers (such as install x, or install y), but fail to provide step-by-step instructions. And this results in people finding your install "funky", or whatever. But not easy, painless, simple...

For all of its flaws, documentation is an area that Microsoft does very well. IMO, many companies and projects would be better served by step-by-step guides.

The following are the commands I used to setup Ghost on Ubuntu Linux 13.04 x64. The only assumption below is that you have git setup already.

# switch to root so you don't have to sudo repeatedly

sudo -i

# Install node (user private install).

cd; mkdir packages; cd packages; wget http://nodejs.org/dist/v0.10.20/node-v0.10.20-linux-x64.tar.... gzip -dc node-v0.10.20-linux-x64.tar.gz | tar xf -

echo 'PATH=~/packages/node-v0.10.20-linux-x64/bin/:$PATH' >> ~/.profile; source ~/.profile

which node

# Install ruby and gems

apt-get install ruby

gem install sass; gem install bourbon

# Install Python

apt-get install python python-virtualenv

easy_install Pygments

# Clone Ghost (assumption: you already have git installed/setup)

git clone git@github.com:TryGhost/Ghost.git

cd Ghost

git submodule update --init

npm install -g grunt-cli

npm install

grunt init

npm start

# Open Ghost

Open a browser to http://localhost:2368/ to view the blog or open to view the admin UI.

Or you can just use my Dockerfile[1]

1: https://github.com/keeb/Ghost/blob/add-dockerfile/Dockerfile

I had a different funky experience. I at first struggled, then paid attention to what I was doing, and then got it set up and running quite smoothly.

Path A: Warts and Brew: * Mac OSX 10.9 * latest homebrew

    1. brew install npm && brew install node.js
    2. gem install bourbon && gem install sass
    3. Then: Do the Installation / Setup instructions here: 

... because: you have to install some ruby templates and such .. please note that you should also have done 'gem instal sass' step above, before you do step #3 ..

I found it works quite well if you get through that setup. I'm impressed enough to have been using it as an app for the last day or so .. its got a nice interface. I'd love to have time to hack up more templates.

Plan B: The easy route: vagrant Well, another great use for vagrant. Works very smoothly as well: https://github.com/TryGhost/Ghost-Vagrant

It uses a similar build process to what you and I are already used to, so in a way it is indeed easy. Despite that the git version is not something the average user should use.

The download link seems to have been fixed so I'll take a look at the packaged version. I reckon it requires nothing more than unpacking and installing the dependencies.

Of course there are installers as well which probably require no user input at all.

Does Homebrew work on 10.9? Have you seen any problems?

Haven't found any issues, this is a brand new MBP though, fresh install as of about two weeks ago, and no hiccups so far..

I just downloaded the Bitnami stack instead of going through the login process. Bitnami seems to have added some bloat to themselves, however: they used to provide you with a straight VM image; now they have an installer and what seems to be a self-contained VM. The cynical part of me assumes that something in this stack is phoning home and perhaps making me part of some evil botnet, but hopefully not ;).

While signing up is mentioned several times on their page it doesn't seem to be required in any way to run your own version. I hope the broken download is just a bug. Signing up just so you can download the package would be pretty annoying.

Oh, I just figured that sign-up was required from reading the copy:

> Open Signup on Ghost.org The most important piece of news, of course, is that Ghost.org is now open for signups from everybody. Get over there, create your account, grab your username, download Ghost, and check out the forums.

The top comment only confirmed my suspicions.

Trying to install it fails on sqlite3 for me (Windows 8). Too bad; wanted to check it out quickly, but if the firs thing you do starts throwing errors, I'm not really tempted to continue fiddling.

15923 error sqlite3@2.1.16 install: `node build.js` 15923 error `cmd "/c" "node build.js"` failed with 1 15924 error Failed at the sqlite3@2.1.16 install script. 15924 error This is most likely a problem with the sqlite3 package, 15924 error not with npm itself. 15924 error Tell the author that this fails on your system: 15924 error node build.js 15924 error You can get their info via: 15924 error npm owner ls sqlite3 15924 error There is likely additional logging output above. 15925 error System Windows_NT 6.2.9200 15926 error command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "--production" 15927 error cwd C:\Users\Nick\Downloads\ghost-0.3.2 15928 error node -v v0.8.16 15929 error npm -v 1.1.69 15930 error code ELIFECYCLE 15931 verbose exit [ 1, true ]

Update Node to the latest stable version and you should have no more problems.

That did the trick :) Might be good to add some pre-condition where you tell the user to update to a supported version of node before attempting to install :)

Repository available on GitHub: https://github.com/TryGhost/Ghost

Ghost looks great and I'll likely end up using it for a couple of projects but..

"We have successfully created the world's first fully functioning blogging platform built entirely with JavaScript."

Really? The world's first entirely JavaScript blogging platform? Google turns up plenty, albeit not quite as polished.

It's tricky to argue labels. To me (right or wrong) platform suggests support, active development, community, backing, a reason to believe that development will continue and something you can build on. Of course, you can call platform whatever you like though.

Ghost has many (all?) of the above, and that's relatively rare in any ecosystem (PHP, Ruby, Python, whatever) for a young project. If this project can continue building momentum, then it would truly be unique in general and certainly in the JS ecosystem.

ETA: When I say tricky throwing around labels, I mean one thing can mean one thing to me and something else to you. I guess semantics would be the short word for that.

Perhaps that level of polished is part of what comprises "fully functioning".

I know that the hosting service is not the platform, but i found the terms of service to be a bit onerous. They require full legal names, for one and I don't understand this part:

"you have, in the case of Content that includes computer code, accurately categorized and/or described the type, nature, uses and effects of the materials, whether requested to do so by Ghost Foundation or otherwise"

There's also the combination of reserving the right to take down any content for any reason. That's fine for a free service, but unacceptable for a paid one, particularly one that claims that it needn't give refunds.

I really like the idea of having images for popular hosting providers like Digital Ocean and Rackspace; this should lower the entry level difficulty tremendously. I wish Discourse would do something similar, as I believe it would spread the adoption very quickly.

You can use the BitNami installers to install them anywhere, including the hosting providers you mention. BitNami also supports Discourse

Wow I didn't know that, thank you!

> Digital Ocean are one of the most popular VPS hosts in the world

Where is the proof of this? Any hard data on customer account numbers or growth?

There are lots of solid VPS providers out there. I don't see why Digital Ocean gets so much hype.

Currently, they are 21st in the world for web facing computers[1]. The growth has been pretty good, too.

[1] http://trends.netcraft.com/www.digitalocean.com

You can run discourse by issuing an command on any Linux host: https://index.docker.io/u/srid/discourse/

Awesome! I've been following John O'Nolan's project since it was announced on Kickstarter. I even started writing my own version which is up on GitHub[1]. Just signed up and I'm looking forward to the future of this project. Just incase anyone else is looking for the source code, it's here: https://github.com/tryghost

[1] - https://github.com/joeblau/bl0g

Anyone got a list of features? This page doesn't tell us much.

Edit: http://www.ghost.org/features/

Looks like markdown+looks stylish. Not sure what else.

This is the firs I've heard for ghost. Here's the Kickstarter page for anyone else looking for more info:


Anyone remember Specter? Very simple blogging engine with elasticsearch backend.


I don't think it's out to replace Wordpress like Ghost is trying to do though.

Looks nice. Hate to shit on their sandwich, but the main question I'm asking is "why would I use this and not Wordpress?"

SO many reasons, many of which boil down into the following sentiment:

- Wordpress has become a over-convoluted behemoth, with a needlessly complex structure that is not overly extensible. It is a pain to develop for/with/around.

I think everyone can appreciate the very tangible effect that Wordpress has had on the web. However, it is currently in the rather painful throws of a transition from blogging platform to CMS, and has been for quite some time.

There are number of other reasons:

- You want to avoid PHP.

- You don't need most of the feature bloat that comes along with Wordpress.

- You want to use Markdown.

- You want to try something different.

With all due....

You say "SO many reasons", but at best you have 4, of which only one seems to hold any weight. Avoiding PHP is not something the average blogger would care about, bloat = features and most normal people like features, trying something different is woolly at best, which leaves wanting to use markdown. Do that many people really want to use markdown?

Are you 100% sure this isn't just an anti thing like anti MS, anti facebook, and now anti wordpress?

Ok - let me try a different tact:

You mention that bloggers won't care about platform choice, feature bloat or trying something new. Fair enough. Something bloggers would care about is blogging.

Ghost is a simple, focused, blogging platform which is entirely focused on this purpose. As a victim of it's own success, this is not something Wordpress can reasonably claim to be any longer.

Wordpress is a full blown CMS, a title which comes with it's own set of advantages and disadvantages.

I would argue that there is room in the market for both the "Jack-of-all-trades" approach, and the focused, "bare-bones", approach.

Furthermore - my comment was initially in response to an assertion that there were no reasons to be excited about Ghost. I would suggest that, even if they are not reasons you care about, this is untrue.

At the end of the day it comes down to a personal choice of tools. I need a screwdriver; sure, I could use my pen-knife (which also has a torch, bread knife & tweezers), but it might be slower / more fiddly; or I could use a screwdriver.

Wordpress isn't the right tool for me anymore.

The OP did not say there were no reasons. The OP merely asked why should he/she use it.

You claimed "SO many reasons", which implies lots and lots of reasons, especially with "SO" in capitals, but you you only listed 4, most of which IMHO were weak, and really only there to puff up the main reason which is that you don't like WP. In fact, in this new tact of yours, you just go on to criticism WP.

But, all you can say to sell this product is that is has less features than WP, and, well, its not WP. But WP works, and works well. So, unless one has a huge problem with WP, which millions of users seem not to have, I'm still don't see much of an answer to the OP's original question, "why should I use this and not WP?"

And of course its personal choice. There are already many alternatives already out there to WP. Most of them as light as this product is, there for already filling the gap for something bare bones. Yet, people make that personal choice to use WP, in their millions.

One big reason people would go for feature rich WP is future proofing. Would be a bit of a mare to use this, then discover you needed more features in the future and have to ditch it for WP, or similar. On top of that the massive user base gives rise to a massive amount of support knowledge. Always a comfort.

Finally, I have to say, if a hacker type in the web business wants something bare bones, what one earth is one doing with blogging software at all? Surely bare bones would be straight HTML with a sniff of CSS? Don't even need a database, and let evil google do the searching. In is most basic form, blogs are just blocks of text linked up. Im pretty sure most people here could rattle up a serviceable blog site in less than a day. I know I could, and I'm crap.

You know, well done to the people who did the work and what not, but Im not seeing any massive positive reason to use it over WP. In fact, in some ways I see it as a risk. What if I want to expand in the future, and this simply cant have the same level of support information. Which is a shame.

> Are you 100% sure this isn't just an anti thing like anti MS, anti facebook

You mean being anti things that you have very good reasons for being anti? I suppose it is like that.

Looking for those good reasons, which thus far no one has out lined. So far we just have a dislike of being feature rich, or in other words the usual generic throwaway of "bloatware". And some waffle about "setup", which is also an ill-defined throw away.

And, really, is it not clear Im implying that there is a lack of good reason, and that this all sounds like a knee jerk hate thing?

Really, so far, there is no positive reason to use this except some people like the idea of something with less features.

Seriously, what is so good about this? Remember I started by asking what the "So many reasons" are, and so far people are simply saying that its not WP, which was one of the 4 given already.

Hardly a ringing endorsement. Right now, use WP. In the future you might want the extra features, right?

There's an old saying about good design being when you have nothing more to take away, rather than nothing more to add.

Wordpress is a fine product. I've used it in the past. It's complete overkill for what I want to do with it. They want to become a CMS - that's fine, but I wouldn't run a simple blog on Wordpress any more than I'd run it on Joomla or *Nuke or Drupal.

I want a space to write that supports markdown, looks decent, isn't PHP (an objectively terrible language that I have no desire to seriously learn), and is light enough to run on my microserver.

> And, really, is it not clear Im implying that there is a lack of good reason, and that this all sounds like a knee jerk hate thing?

Yes, of course it was clear. Since my post wasn't, I'll state it more clearly: I found it highly amusing that when trying to think of companies that no-one would have a reason to dislike, you chose Microsoft and Facebook.

Simply using their products would provide a few pages to start with :-)

Wordpress is incredibly bloated. If you've ever tried to make a semi-large blog with it you'll know exactly what I mean. This is literally just a setup and run blog.

Wordpress used to be that but it's turned into a huge CMS that's trying to do 2000 things at once. Jack of all trades and master of none if you will.

> This is literally just a setup and run blog.

Wordpress isn't? Unless things have changed you install it and start adding blog posts.

Not really no. I mean you can but Wordpress's admin page feels like you are fighting just to post something. Wordpress is no longer really targeted at people that want to get a blog up and running and just that.

That's what ghost is. It's a blogging system without all the added bloat and horrible API's to go with it.

Wordpress's admin page feels like you are fighting just to post something.


  1) Log into admin area (usually /wp-admin)
  2) Click "Posts" on left sidebar (first icon on the top)
  3) Write
  4) Submit
Is the current iteration of wordpress different from this workflow? Is Ghost different?

Hell, if you're logged in, you'll see a bar at the top of the screen with "+ New" on every single page of your site.

Yes I have. No I don't.

What do you mean by "setup and run"? The work setup is extremely elastic. WP is setup and run. So is a particle accelerator, as is a fridge.

I usually would agree with you, but I think the web has changed since wordpress was created. If nothing else, there is room for usability improvements.

Which are?

For someone who has never used wordpress before, it can be hard to get started. Understanding the difference between a tag and a catagory. navigating the menu. Compare it to tumblr. Tumblr has a much better user experience.

It is possible that we don't know yet (at least fully). If the community never tries other things it is unlikely to ever find out.

You couldn't possible be claiming that the Wordpress interface is the pinnacle of UX research and advancements. Its fine. Just fine.

Avoiding PHP is what sold it to me.

Sure anyone and their pet hamster could develop for Ghost and get what they want out of it, however, clients know Wordpress, non-technical account manager type people know Wordpress, inane managers know Wordpress, developers know Wordpress, people that draw pretty pictures in Photoshop and call it design know Wordpress and even my Dad knows Wordpress. I have not heard any of them want to 'avoid PHP' (they only know it is Wordpress in most cases), they don't complain about 'feature bloat' (they don't have the full admin login, just author rights), they are happy with WYSIWYG (and haven't a clue what Markdown is) and finally, they want something they know rather than something completely different!!!

So it is down to network effects. Everyone knows Wordpress and the famous five minute install.

I love php. I also love developing Wordpress themes and plugins. I'm not sure you're making a convincing argument.

Then again, Markdown would be neat to work with, but in the end I'd just rather use html if I need to markup something. And I do like trying new things.

Plenty of ways to try Markdown within Wordpress: http://wordpress.org/plugins/tags/markdown

I develop with PHP regularly and absolutely love the strides the community has been making with Composer, the PSRs & frameworks like Laravel.

I have also built tooling, plugins & themes for wordpress. I personally found it to be a frustrating experience: like I had been lobbed back to the days of PHP 4 when I thought all the PHP haters might have had a point (I wish to be emphatic - I don't think this anymore).

From a development perspective:

- The "loop" is bad design - with no regard for separation of concerns and maintainability.

- The lack of namespacing means you have to go through a dance, working around Wordpress's idiosyncratic structure, in order to build around Wordpress effectively.

- I personally don't think much of their documentation.

Agreed. WordPress is hardly difficult to extend or build for.

Also, the ORM appears to have a Postgres backend, which I like a lot better than being locked into MySQL like with Wordpress.

So, it's novel?

I don't believe that is a bad reason for trying something. Committing resources to using ghost in a mission critical environment would be demonstrably silly - however being well informed of the tools available to you and their suitability to purpose is just good sense.

I don't disagree. I think the greater point here is that many people are irrationally choosing to switch to Ghost because "it's better" without really know why it is better. "Because it's not PHP" is the most irrational response I've ever read....

Good marketing showing how to solve problems most perceive they have...

I regret putting that in my original comment because I believe people take that to mean that I am PHP "hating" (I don't know what that even means). I set the record straight in another comment here: https://news.ycombinator.com/item?id=6547794 .

I use PHP extensively and think it has come a hell of a long way over the last couple of years. My meaning with the orignal point of "avoiding PHP" was more in the spirit of platform considerations.

You may, for whatever reason, not want to include PHP as part of your system architecture. By being written in JS, Ghost offers an alternative in terms of platform (where something like Drupal, or Dropplets would not).

I don't discredit you for your hate :)

The problem I have is why on earth is this an important feature set?

> You may, for whatever reason, not want to include PHP as part of your system architecture.

But why? why? why? Why it does it matter if it's called PHP or JavaScript or GabeSpeek (made up). As long it works and it's maintainable, why on earth does this make any rational person's (not saying you specifically) list of features?

Operating in a larger infrastructure where various components are set in stone and/or not available to them? In a shared hosting esque environment (granted they almost all have PHP by default) it is not impossible to imagine a situation such as this.

One thing that I can see right away that I like is working with themes. Other comments point out the WP bloat. I don't care about bloat as long as the software is easy to install and generally stays out of my way after that (the bloat stays hidden) but one area Wordpress can get to be a bit messy looking is the themes.

If Ghost is easy to theme and the templates easier to read / build / maintain then that's a big plus for me. I may not want to touch any code on the thing, but I would certainly want to do work on the templates.

I feel like Wordpress has too much bloat. It's a full featured CMS now and all I want to do personally is have an organized blog that I can post on. Right now Jekyll is what I've been using which works pretty well, but because ghost is not just a static site, it can do a bit more.

I'm really impressed with the buy-in they've got from other companies regarding it. I wonder how they achieved that.

I would love to see an easy way to publish this to gh-pages on Github.

Are the posts stored in a db or are they generated HTML?

Ghost uses SQLite by default, but the ORM allows for other databases seamlessly.

It's awesome that it has an ORM - but ever since I have started using Octopress, which is based on Jekyll, is the more I realize that we don't need a DB for 'just blogging'.

Plain, old, generated HTML works perfectly. Plus it is very easy to host.

If this is something you guys can implement, I would suggest looking at it.

Your hosting will be MUCH simpler, cheaper, more profitable (even though you say you are running a non-profit), general footprint will be smaller, and pages will load quicker.

That's just my $0.02.

I love what I see here, but I can't bring myself to going back to a db-powered blog from Octopress.

The day you guys implement something similar, you will have 1 more user though!

Either way....awesome execution and congrats on everything you guys have done. Love it so far.

I'm a half-way house person when it comes to CMSes and databases. I don't think raw content needs to go in the database, it can happily live on the file system (assuming a sane permissions regime) and you can delegate version management to git.

However I feel metadata and other structured data belongs in the database for the usual reason: to support unforeseen future queries. That is, to make plugins and widgets easier to develop and better performing (vs, for example, iterating over every post or every comment to perform some calculation).

> is the more I realize that we don't need a DB for 'just blogging'.

That works for you and me (we're using jekyll here) but not for people that want timed releases and an online editor. Comments will need some sort of database as well, so you'll have to rely on disqus or similar if you're running a static blog.

Ahhh....you are right. Good point.

Comments (outside of Disqus), timed-releases and online editor. Interesting. I can see that.

Why can't you do static generation from an online editor?

Because you need to write somewhere. Now, you can write to the filesystem if you really really want to, but only if there is a writable FS somewhere - so e.g. not on heroku - but in any case writing to the FS and then serving that document is a whole can of worms.

Actually what I want ideally is the admin interface to be a Node app. For drafts use sqlite. For scheduling use sqlite. When I hit publish I want it to generate static assets.

The blog itself I don't need to be served by the Node app, Apache or Nginx can do that fine.

> For scheduling use sqlite.

Well, scheduling and static generation require a cron job that writes the static asset at the predefined time. It all gets complicated from here. You can write the static asset when it's first accessed for example and from there on serve the static file, but that requires a database/storage as well, so you're basically back to square one.

I'd not restrict myself to sqlite here either, but that's a minor nitpick.

Why does it require a database? Ghost has a Markdown editor and presumable stores posts in the database as markdown, just write the markdown to the file system instead of a database? I'm really not seeing any requirement for a database here.

Well, yes, you can write to the filesystem, that's why I'm saying "database/storage". See, heroku for example does not provide you with a writable filesystem and it's also easier to share a database over a couple of hosts than a filesystem. Also, if you want to schedule, you'll need to store the scheduling information somewhere. You can add it to the file itself, just as jekyll does but then you'll have to open all docs just to see if they need scheduling. Or you write a schedule-file, but by the time you're doing that you're effectively building a database. Why not go and use a "real" database adapter and use sqlite for all basic setups since basically, sqlite is a specially formatted file with a library providing useful abstractions on top.

You can. I've done this using a different web editor based on CodeMirror: https://github.com/rascalmicro/red

I do suspect that Xylakant may be right elsewhere in this thread when she points out that it's not possible on Heroku, but I'm not sure.

Anyway, I would love to see Ghost use a pile of static Markdown files rather than a database for posts. Then, in a couple of years, when I want to use something else, I can take my pile of Markdown files and move along.

One problem I have with static HTML basic CMSes for non-personal publishers is that it can be a pain to migrate markup or templates if not rendered client-side.

If you've got thousands of pages, publishing a HTML change could require re-building of all static pages, which means it can be painful maintain once you get to a certain scale.

Hmm, isn't this name caught by trademark law in the UK? Ghost is almost certainly a trademark of Symantec; wouldn't this fall into the same trademark category?

Let's hope that there'll be no problems such as this and it'll solved in good spirit some day.

We wouldn't want problems like this haunting the project in future.

More likely it will be a specter over the entire project for years to come.

Booooooooo (But I laughed anyway)

A demonstration of how we (I?) judge projects and people via the wrong criteria; as I watched the video, this is what went through my mind:

* "Oh, a New Zealand accent. One of us! I hope this is really awesome and I want to try this out already."

* "Oh, he says he was in charge of WordPress interface design for two years. Using WordPress causes me pain. I expect this product to be painful."

"Oh, he says he was in charge of WordPress interface design for two years. Using WordPress causes me pain. I expect this product to be painful."

Wait, what?

WordPress' backend may be a mess, but it's CMS interface is the only one I've ever trained a non-technical person on that they liked or seemed to be able to use right away. I worked at a marketing/dev shop for years and have probably trained 40-ish non-techy clients (usually small marketing teams of 3-4) on customized CMS installs. WordPress' dashboard was by far the best when it came to power/usability ratio.

A lot of people feel their data is exceptional, and so meta data is where I see "custom" hurt content creation the most: Whereas WordPress has a neatly rolled meta data extensions into "Custom Fields" many CMS degrade into a morass of form fields.

People should be wary of custom built CMS UIs, not only because most people have learned a UI like WordPress or Tumblr.

> "Oh, he says he was in charge of WordPress interface design for two years. Using WordPress causes me pain. I expect this product to be painful."

Sadly, this is too common of a fallacy in judgment, and one that seems most non-fallacious on its face. But whether we want to admit it or not, sometimes output and achievements are highly impacted -- even dependent -- on the organization and institution than the individual. So someone highly successful at Apple retail, for example, may flounder at JCPenney's (http://dealbook.nytimes.com/2012/11/12/a-dose-of-realism-for...).

So it goes both ways. It's wrong to argue that someone who was great at once place will necessarily be great at another. And conversely, someone who's work turned out awful at one place (either by poor management or design-by-committee), may flourish in different circumstances

I don't think anyone is invulnerable to this. The only (partial) salvation is to be aware of it, take it with a (big) grain of salt, and try to overcome it with factual reasoning when making decisions.

WP owes most of it's success to the UI, it is the very reason it became so popular. It continues to this day to sooth and empower end users, so much so that the actual users often think they are developers, that is what you call a successful interface. WP lead the way with UI more so than any platform, much like Apple, they realize the importance of UX.

If you think the UI is painful that I don't have a lot of faith in your ability to objectively judge interfaces especially in the context of history.

What's so fascinating about the momentum that gathered behind Ghost and it's funding campaign was that they selling the feature-set in part, but maybe in even larger part, the fact that it wasn't WP. My sense was that people backed it as much out of a sense of "sending a message to David" as they did wanting something better.

I would recommend splitting out the monolithic Gruntfile.js into individual config and task files. It makes it easier to read, in my opinion. I've put together an example here: https://github.com/badsyntax/gruntfile

Off topic, but someone please explain to me what Grunt does that is so special? It seems like it's re-inventing Make for no good reason.

Is the registering on ghost.org for hosting a blog on that page, or to obtain the prepackaged zip files the README at github talks about? In other words, to host ghost myself, do I need to register at ghost.org or do I have to clone the github repo?

Eventually you'll be able to their hosted service, but for now when you register you just get access to a source download for self-hosting and access to their forums.

Registering is for hosting a blog. Code is available on Github.

After briefly looking over documentation, it seems that Ghost doesn't support post types like links, asides, images, etc. Or did I overlook something? If else, future implementation?

I see many user have some hard time setting up the Node.js / npm environment before being able to get Ghost up and running.

I would expect the editor of Logdown much better to use. It reads Github Flavored Markdown, has code highlighting, drag & drop image upload. And it's an online service, so you don't need to deal with the server stuffs. Much easier to use.


I've installed ghost to my raspberry pi and have...

> ghost@0.3.2 start /var/www/servers/www..dyndns.org/pages/ghost

> node index

Ghost is running...

Listening on

Url configured as: http://my-ghost-blog.com

Ctrl+C to shut down gives me an unable to establish a connection error (btw, I'm ssh-ing into my pi on the lan).

and also where I am meant to access my admin account setup.

Any idea what went wrong?

If anyone finds this on google, and is having the same problem...

Because I was ssh-ing into the pi, in the config file, I had to change the localhost address to my pi's address on the lan. Then access it via that lan address with the suggested port.

What is it with web pages / blogs and their wild tendencies with using 18px+ fonts for the body text? I can read something like a third of the text off the screen as compared to for an example HN?! Ridiculous that I have to be habituated to using the zoom feature in Firefox to simply read a page instead of looking at one and a half paragraph like is the case on Ghost.org

I can't take anyone seriously who uses fonts to display icons (it doesn't work when you turn off foreign fonts!)

Sadly, nowadays thats pretty much everyone. If you want me to care about you (apparently/marketwise you don't), then get your design right. Tip: Design is not looking pretty. Design is this question: Does it work?

I can't take anyone seriously who does not uses fonts to display icons,

Turn off foreign fonts (?) maybe 0.001% of web users do that.

I think the case for supporting retina screens + very fast load times far outweighs the amount of users that turn off foreign fonts (it baffles me why you would)

Um, surely that is an edge case? I haven't disabled foreign fonts, and haven't had issues from any clients either? Are there any statistics on this?

Fonts to display icons reduce HTTP overhead and scale, looking great on retina screens.

I feel this is a lot like how people used to object to websites that required JavaScript because they had it switched off... If you're going to use the web at all, you're probably going to need to change your setup so icon fonts work, because it's only going to get more common.

Why would you turn off foreign fonts?

There are some very good reasons why you'd want icons in a font. For example, font rendering is well supported by all browsers and very configurable through CSS, and if the default font size is increased for accessibility reasons the icons can also scale.

Is disabling fonts the new disabling Javascript and/or HTML emails? Something done by overly paranoid uber-nerd types and completely ignored by 99% of typical users.

I will reply to all collectively:

> Why would you turn off foreign fonts?

Because I don't want foreign fonts. They are usually either just bad (e.g. worse than my OS font) or render badly.

> It's an edge case, 0.0000001%, ....

You are not downwards compatible. It's an edge case because you make it one by deciding on web "standards" by thoughtlessly applying these short-sighted idioms.

It's a tradeoff, just like not supporting users on IE9- or with JS disabled.

Using sprites instead of fonts to support users with foreign fonts disabled means degrading the product for some other users. Building a polyfill means not spending the time improving something else.

Why do you consider "support everyone" to be obviously better than "build a better product for a subset of users"?

I feel like the undending debates around this issue (most often regarding JS) exist because some people on HN look at it through a business angle where #2 can make complete sense, while some others look at it through a Web ideals angle where anything but #1 is heresy.

Edit: To be fair, the Web ideals remark doesn't seem to apply to you. You rather seem to consider than being pretty is way less important than supporting more people. But why? Being pretty has been increasingly important this past decade, and especially so regarding blogs where being pretty is one of the few differentiators.

> Why do you consider "support everyone" to be obviously better than "build a better product for a subset of users"?

Blogs are my newspapers, thats why. For me accessibility and downwards compatability outweigh the "product" a lot. I have a low-end smart phone for which most "products" are ununsable. Why do people throw away expensive hardware that woks perfectly fine? Because the modern software doesn't run on it.

Take for example the opposite: http://blog.fefe.de

That is a product that meets my demands: I can read on any device, using multiple clients. I could read this page with a dual-core as well as with a gameboy. Serve TTF font's, maybe I rather use bitmap fonts? Doesn't matter.

I could read that blog using Mosaic, lynx, w3m... kindle displays... It also works fine for braille terminals.

I guess I am more interested in powerful systems than the pityful products of the App-bubble. After all I am a programmer.

Why was I downvoted for that?

> No one expects an app written for OSX 10.4 Tiger to work on OSX 10.8 Mountain Lion.

That's truly sad.

Why is that? I think you're misled by OSX's numbering system, which uses .x where other operating systems might use whole numbers. In fact, I misestimated myself...I thought each dot-version represented a year, with Tiger being 4 years old.


However, Tiger is actually 8 years old. I don't think obsolesence in eight years is too horrible.

I always felt node.js needed a Rails or a Django before it needed a layer on top of that. i.e. a content-oriented MV-whatever framework.

By my understanding node.js is rather low-level to be a good platform for content-driven sites. Is this inaccurate?

Nice! I see it's using nodejs/express. Great to have another large nodejs webapp out there publicly -- I wonder if there's any generally useful tech inside Ghost.

> I wonder if there's any generally useful tech inside Ghost

One of the nicest things about it (aside from the use of node and express, which is very nice IMHO) is that it's open source so you can start looking through the code to find out.

Ghost got launched to the public, but how come I didn't get an email after signing up on there list. Seems like that would be an important place to make an announcement.

How people find energy to create yet another blogging platform.

Man, I was all excited for some open source ghosting software.

Warning; the zip-file explodes into a mess, make sure to extract it into a directory (unzip -d ghost-0.3.2 ghost-0.3.2.zip).

Is there a caching layer built in or how does it make sense to create a blogging platform with the performance of NodeJS?

Possibly a silly question, but can a non-profit get acquired? If so, how does that work?

After 30 minutes all i can say is

Build failed [sqlite3]: 1 npm ERR! weird error 1 npm ERR! not ok code 0

A link from the project's homepage to the source code in github would be great.

"too many blogging platforms, not that many quality content providers."

Meh, database, pass. I liked the idea of Jekyll of writing markdown and compiling it to static HTML so I wrote Snow to see if it was possible in .NET, now just refactoring and adding features. Markdown and Static files for a blog is the way to go.

It would be neat if there were import/export plugins for WordPress. Import plugins for Jekyll are a killer feature IMHO (can't really force myself to accept using Disqus for comments though, which makes me like Ghost).

Just noted that there is a WordPress to Ghost plugin: http://wordpress.org/plugins/ghost/ and that you can export a JSON dump of your Ghost blog from e.g. http://localhost:2368/ghost/debug/ (not otherwise linked from the admin).

Will Symantec's trademark lawyers be a threat here?

Very, very interesting. There are a lot of to be announced in there, especially pricing. But as this is opensource I thank the creators of this and will hope to contribute.

anyone do a security audit?

been using this for a while

things i've noticed so far (.3.0):

- no dash yet

- no view posts by category feature

- no list top 10 most recent posts

- kind of confusing or redundant mvc abstraction

i hacked up a view posts by category and a template swap by hostURL in a few hours but the code is really abstracted. it will probably make sense later when all the features are implemented though.


- easy to install

- love the editor

- love the admin

- templates are handlebars and easy

i've been following this for ~6 months now and am stoked to use it. congrats on your release. can we please have a CMS style feature were we can edit some static pages to go into our blogs! PLZ!

Hey ... I've been playing with Ghost now for a few hours and wondering if you've gotten any new templates set up, or have tips for template tweaking? I'm a newcomer to bourbon and sass ..

yea ive made a few templates

i recommend just copything the casper folder and renaming it. (content/themes/casper)

make your own stylesheet and comment theirs out (it, styles, everything). theirs is screen.css.

you can comment out the ghost included {{body_class}} and {{ghost_foot}} by changing them to {{!body_class}} and {{!ghost_foot}}

after that its just 3 files, default.hbs which is a global template (so its like the html head body tags), and then they insert the body at {{body}}

the body comes from index.hbs or post.hbs, which will be index.hbs: 6 article summaries in a list with a page at the bottom. and post.hbs which will just show 1 post.

the data in the post and index hbs files (handlebars templates) has stuff like {{eachpost}} {{post}} which is all you really have to keep out of those files

Looking at the client side code makes me wonder why people would ever use Backbone. It's so abstracted, mixes DOM manipulation into views. I should re-write it with Angular! :)

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact