Hacker News new | ask | show | jobs
by johnonolan 2961 days ago
Good morning HN! John from Ghost here - Thanks for all your support over the last 5 years. We wouldn't be here if it wasn't for that very first blog post hitting the #1 spot of HN and getting so much attention back in 2012. That was the very first time anyone ever heard about Ghost, and everything we've built since then has been thanks to that.
15 comments

Hey, thanks for Ghost, seriously.

I was looking to port over our homegrown django blog app into a proper blogging engine and I immediately though of Medium because of HN conditioning, and had so many problems with it, all of them boiling down to lack of control: No way to embed stuff we wanted (we wanted to embed interactive graphs and tooltips), no way to disable some bullshit features (highlight popups), no way to get our own domain name, etc.

Ghost solved all this. And on top of that, it's markdown, which makes it just fantastic. And open source. And self-hostable. And you guys run a wonderful, exemplary foundation behind it. I have nothing but admiration for what you do, and I'm proud to be a paying client for it and recommend it to anyone for company blogs (it is unfortunately expensive for personal stuff however).

My #1 wishlist for it is better image embedding/resizing/thumbnailing support (native image gallery & captions, native thumbnailing, automatic thumbnailing of hero headers for the article list view).

My #2 wishlist is Postgres support. I'm very sad you dropped support for it :(

Yeah, I was really surprised by the Postgres being dropped. I was using it and suddenly it was deprecated and removed...

I use Postgres for other things, really don't like having to have a separate MySQL setup just for ghost...

From the article:

> Developers regularly show up on Github, rage at us for something like not supporting Postgres - and then we say "ok so are you going to write and maintain Postgres support for Ghost?" and they say "of course not, I don't have time for that!" - and then occasionally they'll go on Twitter and tell all their followers to give us hell. As if organising a mob and shouting louder is the best way to get a bunch of people writing free code to do what you want.

Might be worth their while to consider using an ORM of some sort that supports PGSQL then? I know some don't like ORM's but for projects that are hosted in a diverse amount of setups / environments they make sense to me.
Other platforms have good DB abstractions (ADO.net, JDBC) though so it doesn't have to be ORM.
Whichever approach is fine, the end result is that less effort is made to directly support PGSQL in the long run, and you'd get to support any database back-end as a result. I only mention ORM's cause some have decent tooling (EntityFramework (Core), Diesel.rs, etc) which can be useful for generating schemas out of object models. Also in some cases ORMs are using DB abstraction libraries like for example Entity Framework is built on top of ADO .NET.
I eco #1 on your wish list. For the record, my company pays for the hosted version of Ghost.
What is self hostable?
Grab the code and host yourself on your own servers.
Hello John. You may want to clear up some of the language you use around open source and copyright. The blog post says "the entire product is open source and has no copyright." All open source licenses are enforced via copyright, and the license on the github repos that I spot checked are explicitly copyrighted with what appears to be the MIT license. I think the intent of the post is clear, but it currently doesn't line up with the source.
He also writes, “Anyone can do whatever they want with our code, for free.” The MIT license does allow one to do almost whatever one wants (e.g., sell a product based on a closed-source fork), so his statement may be consistent. Or it’s possible that he is actually disclaiming all copyright in the code. Or maybe he’s implying that he won’t go after license violators.

So, I guess I agree that his intent could be more clearly stated.

Congratulations on the 5th anniversary!

A question: Do you think your choice of technology stack (JavaScript, node.js) played a part in your success?

I've read many times from product creators that developers wildly overestimate the importance of choosing a language or technology stack when in fact it has little bearing on whether a product will succeed.

Do you have any thoughts on this topic?

I do! It's nuanced, and every language decision has benefits and drawbacks. Making a bet on JavaScript/Node.js 5+ years ago was a big risk - a lot of people laughed at us or chastised the decision. A lot of those people are now also rewriting their apps in JavaScript.

When it came to selecting Node, the biggest benefit was that it was notable. If we had said "HEY we're making another blogging platform in, wait for it, PHP!" -- it would likely have been significantly more difficult that the project would've been seen as noteworthy / attracted any users.

Conversely, Node is not without its drawbacks. The ecosystem is young today. It was positively infantile when we started. I don't even think there was a fully formed RSS library. In fact, from a technical point of view, most of what we've built would have been easier to achieve with other tools and frameworks.

Nowadays when we select technology, we tend to go for the oldest most reliable stuff we can find. The sort of stuff that when you have a problem and you google it, there are 5,000 people who have done it before. Because there are only SO many innovation battles you can fight simultaneously.

At one point we tried to rewrite our infrastructure using Docker/Swarm - it was a 9 month project which ultimately got completely cancelled at the last minute. Why? Turns out Docker Swarm doesn't scale above 500 instances and we needed to run about 10,000 for Ghost(Pro). We asked Docker Inc and their response was pretty much "idk lol". So now, especially with our infrastructure, we almost always select the most tried and tested technology. Boring stuff. Stuff that is very, very well understood.

The problem is, it's not cool to talk about how our infrastructure is built on very straightforward LXC containers, managed by HAProxy, connected to a cluster of MySQL servers. The tech isn't bleeding edge enough to hear about on HN, so you end up not hearing about it. But most of our best tech decisions end up being when we choose older technology.

Sorry, this got really long. Did Node.js influence our success? Yes! It made Ghost more popular and also more difficult to build. Would I change it? Definitely not.

> The problem is, it's not cool to talk about how our infrastructure is built on very straightforward LXC containers, managed by HAProxy, connected to a cluster of MySQL servers. The tech isn't bleeding edge enough to hear about on HN, so you end up not hearing about it.

And those are exactly the ones I want to hear about.

Like you I find the old, established tech choices to be good. New tech is fun to play with, but when I need to get work done and keep it running (for years) I take old every time.

Please write more on this!

Also, I like the interplay between new/risky tech in one area of your story and established in others. Pushing a manageable number of boundaries.

Woah! That information about Docker is bananas. I've worked on projects with more than 200 VMs. Talk about things that don't show up on HN: scaling issues with popular technology where you never find a solution.
Until fairly recently with docker enterprise, from what I've been able to gather Docker's official stance on Enterprise™-use has been "don't use docker, use runc, and build / orchestrate / etc it with kubernetes or something" which basically means "rewrite whatever you intend to use". (afaik this all changed with https://blog.docker.com/2018/04/announcing-docker-enterprise... )

Which is fine. "can execute binaries in isolation" and "can schedule rollouts and efficient disk/networking structures across many thousands of instances" are vastly different problems. Even "can deploy to 100s" and "can deploy to 1000s" are quite different, without something targeting 1k+ I wouldn't expect it to handle beyond a couple hundred without compounding issues.

Awesome! I love the combination of HAProxy and LXC containers. It's so great. And even better using Ubuntu's LXD(/LXC), with DNS service/auto discovery built-in. Eg, just reference myghost1.lxd in the haproxy backend config for the LXC target host.
If you’re setup as a non-profit and you reinvest all profit, what do you do if you get to the point that you are making more profit than you can reasonably reinvest? Build up a large cash reserve?
Fantastic question. So the obvious answer is grow the company, right? That's pretty much what Amazon did for 20 years. Eschew profit in favour of reinvesting in building the company as big as possible. Not really our style, we'd rather keep the company small, but there's definitely still room to grow quite a lot from where we are now.

Beyond that point, we can spend money on anything which reasonably furthers the mission of the organisation - which has many aspects but the main ones in our case revolve around creation and education for journalism and open source software.

Some pipedream ideas we throw around from time to time:

- M&A (boring/obvious answer, but valuable)

- Create either grant-funding, or sensible investment funding (like indie.vc) for other open source projects and publishers.

- Create an independent media company, reporting on issues and stories we care about (running on Ghost)

- Buy some land and build a collaborative space for us and for others to work on open source, journalism and social good projects

> Buy some land and build a collaborative space

So, a ghost town?

Great work and writeup at Ghost. I bookmarked it as an example to give to others wanting to do business and good things at same time. Far as ideas for reinvestment, two things come to mind:

1. Build more tools that solve people's problems created by others vendors. As in, move sideways a bit diversifying your operation. Even better if the tools/apps complement each other where you can increase benefit per customer while cross-selling. Although not endorsing them (not a customer), Zoho seems like a good example of this where they keep developing additional products that might benefit their customers on top of their original ones. Enough FOSS-oriented non-profits doing that in enough sectors can stop a lot of lock-in and abusive practices over time via the alternatives they provide.

2. Invest in maintenance or security improvements of dependencies, esp libraries or infrastructure. These are often treated as externalities leading to a lot of problems we see like in report below [1]. Ghost could deliver its good products/services on top of taking some responsibility for infrastructure it depends on. People buying Ghost get the immediate value plus knowledge they're supporting those things as well.

Just some ideas for you. Keep up the great work over there and good luck to you all! :)

[1] https://medium.com/@nayafia/how-i-stumbled-upon-the-internet...

on the "buy some land", have a look what's happening in Germany https://www.syndikat.org/en/
How is the company governed? Have you considered becoming a worker cooperative and creating a democratic governance structure? Does the non-profit structure allow for that?
It would be a nice problem to have, eh?

Some things which come to mind:

- lower prices

- hire more staff to provide new features

- make everything faster and more reliable

- provide more free services

- give everyone raises

- donate to charities which are reasonably related to the aims of the non-profit

- make investments to improve the long-term financial health of the non-profit.

Not part of Ghost, but as a general answer, it's always feasible to invest in anything that serves the mission.

Besides actually just reducing prices for services to not get profit, Ghost could create a foundation and give grants to any deserving work that serves the Ghost mission, such as supporting the FSF or EFF or funding other upstream or aligned stuff such as working to get more of their tools to be 100% free/libre/open…

Use your imagination! It's always possible to draw a more ambitious roadmap and reinvest more.
Spending money is not a hard problem :)
I came here to ask this exact question.
How is the decision to use emberjs as the Admin interface panning out for you?
I'm probably biased as I work on the admin interface day-to-day but technology-wise it's been great.

Upgrades are painless, typically requiring around an hour at most. If there are bigger framework changes we can usually upgrade immediately then clean up deprecations later as necessary but even then the work is normally minimal. When there are more stylistic changes that touch many files it's usually very quick work thanks to the codemods that are released alongside. All of this despite huge and continuous under-the-hood improvements in Ember since we've been using it.

Compared to what I've seen in other frameworks I think we've benefitted a lot in being able to spend pretty much zero time bike shedding which libraries will make up our core framework. We also save a lot of time not needing to upgrade disparate parts of a custom framework built of 3rd party libraries that aren't necessarily in sync with each other. The Ember addon ecosystem has also been stellar, with common solutions rallied around by the community such that they are usually as stable as core and kept up-to-date with the latest idioms without breaking backwards compatibility.

In conclusion Ember has allowed us to focus almost entirely on product rather than framework. It stays out of the way and provides very clear happy paths for typical workflows whilst allowing us to break out of those where needed without sacrificing any tooling or upgradability.

As for the downsides I think the biggest has been the limited pool of contributors. A lot of react bandwagon jumping has happened since we started with Ember and it's interesting when talking to other developers outside of the Ember ecosystem because there's a lot of historical and outdated views about what Ember is and isn't. The Ember core team and community is working hard to improve Ember's marketing message to counter that but it's tough to break through when the framework's core selling point is consistency through hype cycles.

I'd wager almost everyone who has used ember in production feels much the same way. Ember is basically the best js framework for most use cases but React won the marketing war and has the backing of FB, so Ember just got crushed. It's sad because I love using Ember but the limitation on opportunities is a career killer. At this point it's embrace React or die. I see companies moving to React simply because they can't hire for Ember, not because React is better in any way.
Would you please consider sharing more about working remotely? How are you dealing with its psycho-social challenges (the "human" challenges)?
I'm curious what Ghosts' bylaws are, how is it actually organized? I presume it's not a 501c(3) since it's engaged in commercial space and doesn't take charitable donations.

Another question: are there any aspects of your product that are open core? Does the SaaS have any "special sauce?" Thanks.

The company is based in Singapore, and the exact structure is a Company Limited by Guarantee with bylaws specifying mission. This is the standard entity for a non-profit entity which operates in a commercial space under British common law (also used in Singapore). It's pretty different to the US and not directly comparable to any structures there. Closest description to something in the US might be "A Benefit Corporation with no share capital"
>I'm curious what Ghosts' bylaws are, how is it actually organized? I presume it's not a 501c(3) since it's engaged in commercial space and doesn't take charitable donations.

For one, it's not an American company, is it?

Hi, I'm vaguely in the market for a new blogging platform, I went to ghost.org, hoping to get a sense for a sense of how it would feel to actually use ghost, but didn't find it easy to get that sense from the website. Do you perhaps have something like a test instance people can log into to try out, or a gallery of examples or somethng like that?
Just wanted to add my thanks here too. Started using Ghost (self hosted) for the developer blog for our SaaS about 3 years ago, and never looked back. Extremely easy to maintain and manage, and uses minimal server resources. Thanks for bringing Ghost into the world!
My most ever viewed medium post was about Ghost back when it launched. I remember talking one of my former customers (singlehop) into being one of the major tier investors in the kickstarter campaign. Nice to see you guys still around and kicking :-)
Really cool article. One perhaps dumb question because I don't know much about these things. How do you determine salaries for a non-profit?
Essentially the same as you determine salary at any other company:

In the early days there's no structure, you just get on with it. As the company grows, generally a board of directors (or non-profit: board of trustees) act as an independent governance level for the org above the exec team and (amongst other things) determine executive pay.

please please more insight into the remote teams teaser you gave on the post! I would love to hear more that you have to say on that.
There's an embedded podcast episode at the end of the post where Hannah and I discuss the remote team aspect in a bit more detail. Drop me a line on Twitter if there's anything specific you want to know - same username as here!
Is the Foundation still based in Singapore?
Why not Free Software license?
MIT is Free Software, just not copyleft.

https://www.gnu.org/licenses/license-list.en.html#Expat

Since you're in the spotlight now, I want to bring back the discussion on image optimization [1]. Looking at your Features page [2], there are 953KB of images that can be compressed down to 453KB (-47.3%). I genuinely wonder what you can save with better image optimization.

[1] https://twitter.com/JohnONolan/status/941572225890533376 [2] https://ghost.org/features/ [3] https://i.imgur.com/b5OO3Q6.png

So, on a post which discusses problematic behaviour on Github where entitled people try to bully us into working on what they want without writing any code themselves -- you (someone who has tried to bully us before on Github) -- decide that being in the spotlight is a perfect time for you to draw everyone's attention to your feature request once more. Because you think bullying us with HN social pressure will help your cause.

And then, to back up your argument, you link to a page which is not running on Ghost - and actually does have optimised+responsive images.

All so you can spam your own image compression app.

Without a trace of irony.

Are you serious.

I don't think calling people bullies or accusing them of being shills is very professional or conducive to civil discourse. This is not the first time you've displayed that kind of behavior, either.

The HN Guidelines, which specifically prohibit this kind of content, can be found at https://news.ycombinator.com/newsguidelines.html

I think you've pretty spectacularly missed the mark here, Torsten.
> So, on a post which discusses problematic behaviour on Github where entitled people try to bully us into working on what they want without writing any code themselves -- you (someone who has tried to bully us before on Github) -- decide that being in the spotlight is a perfect time for you to draw everyone's attention to your feature request once more. Because you think bullying us with HN social pressure will help your cause.

This whole sentence is false. I did not "bully" you anywhere (!), requested a feature from you, or pressured you to do anything. Quite the opposite, I showed an easy way to improve. Again, I could have been wrong on the effect. That's why the question. The "spotlight" reference was just a small joke. Sorry.

> And then, to back up your argument, you link to a page which is not running on Ghost - and actually does have optimised+responsive images.

I meant only the Ghost homepage in the link, and better optimization (proves [1]).

> All so you can spam your own image compression app.

I gave you the facts. Yet, you smeared me with false accusations. Is this even fair?

[1] https://github.com/vmdanilov/optimage/files/2011804/ghost.zi...

Nitpicking, but can we put some warning if the link will automatically download something? ZIP in this case.

HN seems to cut the link text.