Hacker News new | past | comments | ask | show | jobs | submit login
What we've learned from building Ghost after 5 years and $3M (ghost.org)
645 points by saturdayplace on May 16, 2018 | hide | past | favorite | 173 comments



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.


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?


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.


We use hosted Ghost for our blog. For the most part, it's been great.

My biggest complaint is that Ghost doesn't yet have a built in SSL/TLS option (e.g. Let's Encrypt). Their recommendation is to use Cloudflare. It's fine for hobbyist or personal blogs, but as a corporation it's basically prevented us from using SSL.

We're in a regulated industry and need to do appropriate vetting of vendors. Onboarding a blog platform is very, very easy because of the relatively low risk nature of a blog. Onboarding an infrastructure vendor, like Cloudflare, is very complicated. Making it more complicated is we'd have no interest in actually paying for a Cloudflare service so it's impossible to get resources to complete the vetting process. On top of all of that, last year's Cloudbleed incident cast some real doubt on Cloudflare's security practices and ability to properly protect potentially sensitive data.

We will likely eventually self-host so we can get proper SSL support. I'm really disappointed by this since it will be more expensive than paying our Ghost subscription for several years.


We do have all of those things :)

For self-hosters, Ghost-CLI has deep Let's Encrypt integration. The tool will automatically guide you through provisioning an SSL certificate during the install process.

On Ghost(Pro) we have full end to end SSL support (you're right we used to only support CF's UniverSSL but that is no longer the case) - so anyone who uses a custom domain with Ghost(Pro) will automatically have an SSL cert provisioned and deployed for them in the background. For business customers who require the use of their own, custom certificates, there a few extra steps but we support that too.


Heyo. Would you look at that! That must be pretty new?

----

This is great. That was my only complaint with Ghost so far.


This is awesome. I've had a todo list item to make SSL work on my site for a while. Today I find out that it magically does work...


Another option would be to just put haproxy in front of Ghost, and have haproxy handle the SSL termination.


what's the traffic and the avalable budget to hire a vendor that would be a Ultra-simple version of cloudflare: i.e. a caching proxy with a let's encrypt cert for https fronting your ghost blog?


Near $0. The problem isn't really the monthly cost (heck another $20/month wouldn't be noticeable). The problem is the vendor onboarding process for an infrastructure specific vendor.

Initial onboarding can take 20 to 50 hours of effort from an expensive resource. Plus, routine reviews which would alone cost more than I'd be willing to pay for such a service.


Thanks for the post, its great to hear that Ghost is doing well - I love using it.

> [Github] has become too transactional - more support tool than collaboration

I strongly agree with this. I wish Github "Issues" were relabeled "Comments" and need not be "Open" or "Closed". Issues need action, comments do not. I've been burned many times now by solving someone's issue and then finding out they use my code for their business and just wanted free support from me.


Why not just close the issue and direct the person to stackoverflow, superuser, etc. if you think it falls into that category?


Then you get a reputation as a rude developer, whether or not that's fair or warranted.


You could create an issue template that explains the rules. If people still file support issues, you close those with a friendly reminder text (copy/paste) in which you explain the reasons why this is not the place for support. If people still think this is rude, they have personality issues which shouldn't be of your concern.


Aye, and you'd be well within your rights to do so, but I am doubtful that this approach will preempt the majority of people assuming rudeness on your part.


Very sad what the article says about GitHub. Which other changes would be nice to do?


I'm not sure - in my experience I find that issues from new GH users are usually suspect (e.g. see [1]). So it might be nice to have something like the "Limit to existing users" [2], except not limited to a 24-hour period.

I wish GH users felt obligated to disclose they work for a company when creating issues that are for their company, but that's not something GH could (or should) enforce.

[1]: https://github.com/schollz/find3/issues/66#issuecomment-3829...

[2]: https://blog.github.com/2017-05-30-introducing-temporary-int...


Many large open source platforms address this particular issue with paid support plans. You might find that the company you ended up doing work for would be happy to have paid their way.

I also find some of the best improvement suggestions come from people using the software in heavy real world use, which tends to be businesses. They have very real pragmatic needs.


Maybe consider a license change?


I was a Ghost user for ~3 years (from Jan 2014 to the best part of 2016) and eventually switched to WordPress. I loved Ghost minimalism and its usage of Markdown, but there were several issues that made it a no-no. I was kinda sad to let it go actually.

I took the time to write to the Ghost support email with my thoughts on the switch and my main issues (namely no categories, lack of i18n, editor live-view performance with many images, no search -- this was middle 2016, maybe they have these features now but they didn't then)

They took the trouble of answering my email, I found it rather nice.


I would love to switch to hosted ghost, but the pricing makes very little sense for a personal blog. An article will make the front page of hn or some larger subreddits and I'll get 30k views in just a few hours. I'd have to pay close to $200/mo to get the same number of page views I can get with a $10/VPS that I ssh into maybe once every 6 months to patch.

The pricing levels simply do not offer enough page views.


From the "unusually fair billing policy" section on the pricing page:

> Our plans are limited by how many readers you have, and how often they visit your publication. We only enforce these limits on a 3 month rolling average, so we'll never make you upgrade plans if you happen to have one big traffic spike or particularly successful month.


I was thinking like you but they say they compute usage on a 3 month rolling average basis. So an infrequent hit should not be an issue.


It’s not really infrequent though. It’s like once a month.


You average around [ed:2M] views a month?


Congratulations on your 5th aniversary :)

I was a backer in the kickstarter campaign, but various "issues" eventually led me to look elsewhere.

Ghost is (was?) rather good, but the thing that ultimately sold me on it back on kickstarter was the much hyped dashboard, which never made it.

Before Docker it was a pain to manage dependencies and keep everything up to date, but with the official Docker image, things got better - until a flurry of almost daily releases to the 1.x branch made it a chore again.

The final nail in the coffin was dropping PostgreSQL support. While it wouldn't be much of an issue if starting on a clean host, with a clean slate, i run all of my other stuff in PostgreSQL, and i much prefer to only administer/backup one DMBS.

I'm currently on Hugo, and i really miss the online editing/publishing from Ghost.


> The stuff which is actually hard, nobody ever asks about. For instance: How do you know when someone is in a bad mood? How do you deal with loneliness? How do you foster camaraderie? How do you achieve urgency? How do you ever get to know people outside of work when you never spend time with them outside of work?

I for one would love to hear more from the Ghost team on how they approach solving these very essential problems - any insight is welcome!


> The best marketing we've done has been to launch, over and over again.

That's my favorite takeaway from the article. Seems like a difficult thing to do in practice, but also something I've been considering lately.

Anyone else have experience with doing repeated launches that they'd be willing to share?



Am I the only one that's disappointed that I can't actually buy pied piper coin?


> We wanted to know: What would it look like if you built a technology startup which could not make anyone rich. If you eliminated all the promises of wealth from the roadmap up front, and tried to build a good company, how would that affect the product, business, customers, and every little decision in between?

...

> We're currently looking at testing an affiliate program whereby we'll pay out a 30% commission every single month on the lifetime revenue of anyone referred to Ghost(Pro).

...

I believe this is called colocating your money and your mouth. I'm inspired.


It's very impressive that you need only $600k/year. How many people are there in your team (including everybody, not just developers)?


looks like 8 people total [1].

[1]: https://ghost.org/about/


Seems like they haven't updated that page, since https://blog.ghost.org/year-3/ mentions 9. Or maybe the ninth person wants to remain... a ghost (ba dum tsh!)


I'm sitting next to one of their team members. ~10 people is about right.


I was on board from the beginning! What a great product. Too bad they dropped support for Postgres at some point, otherwise it would still be my platform of choice!


I’ve seen a couple comments about this issue, as well as it’s mention in the article. What about Postgres is appealing to the point that it is a deal breaker not to have? Is it familiarity or a specific aspect like scaling or ecosystem?


I prefer Postgres because of its (in my opinion: better) features and my familiarity with it. It wouldn't be a challenge to setup a MySQL/MariaDB database if I wasn't already running a largerish Postgres instance where I want to store my stuff. So the deal breaker here is me not wanting to have two DBMS running on the server.


> Our biggest marketing failure has been our documentation and resources. ... We're actually hiring right now for someone to help us fix this and make using Ghost a really fantastic developer experience.

Putting user docs as part of a marketing role is not lining things up for a good result. :(

How about putting it under engineering instead?


User docs are customer-facing, and therefore entirely fitting to be under marketing. Of course building the documents requires engineering contribution for technical details.


Yes, user docs are customer-facing, but the problem is that if they're under the control of marketing, then documentation priorities will be set as if they are marketing materials. And, possibly worse, a writer who works in marketing will by and large be treated by engineers like, well, somebody who works in marketing. (Without getting into sordid details, I'm speaking from personal experience of having been a tech writer under engineering at one company and under marketing at another.)


That's cool, but we literally don't have a marketing department. So whoever gets hired will report directly to me, no matter what their title is.

The primary function of the role is to do writing, not engineering - and the success of the role will be measured in terms of marketing, not engineering - so to me the title we went with makes the most sense. I can definitely understand the discussion here though :)


> the success of the role will be measured in terms of marketing

Err... trying to grok that, and failing. Are you ok to flesh out what you mean? :)


> ... then documentation priorities will be set as if they are marketing materials.

Thank you. This is exactly my point.

The only way making them a function of "marketing" makes sense, is if the leadership of Ghost view user docs as something primarily to bring in (new) sales.

As a person who has often done implementation roles in their career, having to rely on docs written by "marketing" people rather than engineers is generally a lousy experience. :(


I’d argue they should be part of Product.

The skills overlap much better there: user research, usability testing, copywriting, information design... these are all things UX teams think about and are part of making good docs.

The only similarity between engineering projects and documentation projects is... there are engineers around.


Yeah, under "Product" sounds workable too. Under marketing just sounds (to me) bizarre.

Of all the places to put user docs, marketing is not the right one. :)


it can work though - sometimes the evangelist role is under marketing (with lots of cross-pollination); customer success is usually under marketing. Think more post-sale support (keeping customers happy and increasing engagement) vs. sales. I wish more companies focused on marketing to existing, paying customers instead of just new wins. It's (a) easier and (b) has real, long term value over short-term metrics.


How does it matter that the role for which they are hiring a developer to write docs is labelled "developer marketing" instead of "documentation engineer"?


The focus and priorities assigned to whoever does the work will be set by their manager.

It's fairly easy to see that a Marketing manager will view the desired end result quite differently than an Engineering manager would.

With a corresponding difference in the focus and priorities then set accordingly.


The whole company is nine people. I don't think managerial siloing is likely to have kicked in yet.


Not sure. Placing the role under marketing from the outset doesn't seem (to me) like setting things up for success though.


All I got to say is that Hannah Wolfe is a beast (in a really good way!).

Check out her number of commits compared to other contributors: https://chart.ly/github-dashboard/TryGhost/Ghost

Keep up the good work guys!


Without trying to offend… what's the quality of those commits?

I have a co-worker who commits 6x more changes than me, everyday, but only because she commits many errors in the morning and have to fix them during the day after multiple code reviews. She often forgets to run the test suite before pushing her changes up. Even after the creation of a Git hook to pre-test the changes after every commit, she still manages to break things when they fall outside the scope of the automated tests.

The number of commits mean nothing if the quality is low.


Given that she's the CTO of the company, lead developer of the project, the most senior engineer on the team, literally one of the top JavaScript developers on all of Github - https://github.com/erisds... what do you think the answer to that question is? :)


Ghost is already 5 years old... I'm getting old! I remember the first post...


After the cell provider selling location article, this was a much needed encouraging read. Thanks for sharing and good luck Ghost in your next 5 years!


> How do you pay people if they live in different countries? What about contracts? — The things people ask about most often all have straightforward answers.

Really? I just read a comment from the CEO of HashiCorp who has a very different take:

https://news.ycombinator.com/item?id=17022563

Unless all remote employees of Ghost are just contractors...


Yes they are exactly that.

Same with Automattic, Zapier, Buffer - and most of the other big remote companies. In fact, we all use the same set of contracts. They tend to get passed around founders.

All 3 of those other companies are USA based, so for anyone in the US they do standard employment contracts - and anyone outside = self employed contractor on a retainer. We're based in Singapore and don't have any staff in Singapore, so effectively everyone is a remote self-employed contractor.

Our retainer contract looks a lot like an employment contract, practically speaking, and builds in all the same sorts of provisions as you would expect. We also cover expenses, where applicable, for team members to get independent legal and accounting advice to make sure everything is set up correctly for them.

Mr HashiCorp has gone way too far down the rabbit hole, by the sounds of it. It makes sense to set up a subsidiary when you have a larger group of staff in a single location. For instance, Automattic have a subsid in Ireland because they acquired a company there and as a result have a lot of staff based there. But otherwise it doesn't make sense to set up a full blown subsidiary in every country when you're a tiny startup just trying to contract a couple of people.


Thanks for the insight!

> In fact, we all use the same set of contracts. They tend to get passed around founders.

Care to share? ;)


seconded! Early days still for our startup but we are also interested in pursuing the remote working route and we are incorporated in Singapore.


>>> Mr HashiCorp has gone way too far down the rabbit hole, by the sounds of it. It makes sense to set up a subsidiary when you have a larger group of staff in a single location.

Or when you want to do things like give them stock or healthcare or pensions


I've been rereading this article for days. Thanks so much for taking the time to share the sorts of insights that rarely see light.

My company is looking into our options as to what sort of structure would be best. We've considered being a worker-owned cooperative, a B Corporation, an a non-profit. We have the same goals of developing the best products we can an never selling out.

I wonder if you had any insight or suggestions on where to learn more about these options and the consequences. What do non-profits offer to funders? Everybody wants equity.


I remember looking for better alternatives for WordPress(i felt they alienated the bloggers largely) and came across an article about Ghost. I was instantly hooked to the whole thing to this day. I just wish the non hosted versions get a better way to update to the latest version as well as a (official) script to automate the install easily.


I think this is what you're looking for: https://github.com/TryGhost/Ghost-CLI

I've only used it for a local install when playing with my site theme, but it worked great (albeit quite picky about the versions of the dependencies).


When they launched ghost cli with ghost 1.0 I moved over to it a few days after it had launched (small blog, not much readership). It was really easy to move over to it, and updating ghost is a single command. I update it every time there's a feature I want or once every few months. It's not without its issues, but they're being actively worked on and it's improving each time I update the cli as well. I'd recommend it to anyone self hosting a single instance blog.


I signed up for ghost when it was at its kickstarter phase. I was very excited by the promise. A year later there were still long winded discussions taking place on their github issues on how they should tackle responsive images. There were alot of JS hacks around to overcome their missing features. I lost interest over time


I didn't realize Ghost was a non-profit. Very noble. The feedback in Github is interesting. Ghost is probably more likely to have issues with demanding users than, say, mongodb.

Very cool and inspiring post. That said:

- Ghost's marketing materials tend to outright lie to users when making comparisons to WordPress or other platforms.

- I dislike OSS projects that hide their OSS nature. Why does a user need to pay $29/mo for an entry level blog? Why isn't there any obvious mention of the OSS nature of the project on the pricing page, home page, or features page?

- What's been done about the memory issues? Last time I tried ghost, it was a bit of a memory hog.


Homepage says it's FOSS, features page says it's FOSS, the developer page links to a giant Download button.

And how is it lying about their comparisons? It is indeed simpler to set up a Ghost site than a Wordpress site, and has more features out-of-the-box that you'd otherwise have to download sketchy plugins for with Wordpress/etc.


> It is indeed simpler to set up a Ghost site than a Wordpress site...

I...am not sure about that. WordPress, for all its warts, is exceedingly easy for even non-technical users to get up and running; that was a huge contributing factor to its rise. And a large part of that ease of use came from its choice of PHP and MySQL.

I know that in 2018 it's a lot easier to get non-PHP web apps up and running than it was in, say, 2008, but with the exception of hosting providers that have gone out of their way to set up "one-click installs" for Ghost like Digital Ocean, Node, Python, et. al, are still harder. This is something that John Nolan's post pretty explicitly acknowledged:

"We spent several years trying to engineer our way out of this in increasingly complex ways, so that people could set up a publication on Ghost with the same level of ease as they do on Medium. We never even got close. It's just not how modern web technology works."

(And, no, "just use a Docker container" is not a viable answer to give to anyone who doesn't already know what container technology is. Sorry.)


That quote is in context to using decentralized versus centralized technologies.

> Decentralised platforms fundamentally cannot compete on ease of setup. Nothing beats the UX of signing up for a centralised application.

And self-hosting Ghost is just as simple as Wordpress. Instead of sudo apt-get install'ing apache and PHP, you're sudo apt-get install'ing nginx and nodejs. The ghost installer handles the rest.


Two quick examples: A baseline WP host is not $50 a month. Ghost is not 20 times faster than WP.


We do managed hosting, so the comparison is to "Managed WP Hosting" - which is exactly what the page says. Here's an example of a managed WP host: https://wpengine.com/plans/

Here is an independent speed test which finds Ghost (more specifically: Node) to be up to 1900% faster than WP - https://blog.appdynamics.com/engineering/example-node-js-fas...

We don't make baseless claims and we're not in the business of lying to anyone.


Why are they a fair comparison point, and not e.g. wordpress.com?


Shared hosting - $1.99, here's your server, good luck

Managed hosting - $29, you get your own server, app, automation, backups, and 24/7 support to make sure everything is working great

Centralised, multi-tenant application - $0-$9, you get no server. You get access to our app for your use. You cannot modify it or run any third party code.

We do managed hosting - and managed WP hosts... also do managed hosting. That's why it's a reasonable comparison point.

WordPress.com is not managed hosting. It's a heavily modified centralised multi-tenant application which loosely resembles WordPress. It does not run the open source codebase at all.


Hi. I've worked for WordPress.com for the past five years. It does run the open source WordPress codebase, and we sync changes from the open source project to WordPress.com regularly.

:vanishes in a puff of php:


Yes George. WordPress.com is a centralised, multi-tenant application which also syncs code from the open source project. Very good.

It's still not equivalent to running the same code, or being in any way a comparable to a managed host. Which is the point that you skipped right over, as is your custom :)


WPEngine is specifically in the business of selling fast WordPress hosting. It actually makes for a more honest comparison. Comparing to Wordpress.com should give you better numbers.


That's for a managed WP host. I agree that the $50/mo price comes out of nowhere, but you're still not going to find one for $20/mo as you would with Ghost.

Ghost is 20 times faster. And once you add a single WP plugin, it's 100 times faster.


Can't find 20 dollars a month for a managed wp?

For 4 dollars a month you can.

https://www.siteground.com/wpbeginner-managed

50 dollars a month seems extremely costly. For that amount $600 a year it would be cheaper to hire someone to self host for you.


There's $1-2 monthly hosting for WP


Isn't Dreampress a comparably affordable managed Wordpress host?

https://www.dreamhost.com/wordpress/


I imagine there's a difference between "managed hosting" (host handles OS/package updates and maintains your LAMP stack) and "managed WordPress hosting" (host handles all of the above AND core WordPress updates, basic security, etc).


Dreampress's non-shared hosting plans include "Wordpress Service Updates" which surely includes core Wordpress updates and updates to plugins they include, like Jetpack. It might also cover updating a list of the most popular plugins.

For security beyond running updated software, it includes a Wordpress-tuned web application firewall and the $24.95/month tier includes "Malware Scanning & Repair."


Their home page at ghost.org literally says "Ghost is a fully open source, adaptable platform for building and running a modern online publication" at the top.


After reading this comment I went to check for myself. However I believe the grandfather post still has a valid point. It's not "obvious" how to use the self hosting open source version.

However, I'm pretty sure a person that was really interested in self hosting would not have trouble figuring it out.

I don't necessarily think it's bad that they don't emphasize how to use the open source version. After all, it is a business.


They are claiming it is not a business


They didn't claim to not be a business in the blog post. They are a non-profit business. They still need to earn money to pay bill, pay employees, etc.

"Being a non-profit means that the company has no shares. I don't own it. Hannah doesn't own it. Nobody owns it - it's an independent entity. The company makes money and pays expenses, salaries and taxes as normal - but there's no way for it to be bought or sold either in part (investment) or as a whole (aquisition). Any profit the company makes can only ever be reinvested, not distributed. We can't cash out. Ever. Also the entire product is open source and has no copyright. Anyone can do whatever they want with our code, for free."


I poked around the mobile site and couldn't find any of what you're saying. Then I checked non-mobile and there it is up front. So possibly the parent poster was only looking at mobile.

For reference the mobile homepage only says "The professional publishing platform"


And where is the github link on the home page, or the pricing page?


In the footer, in both of the cases.


Under "Developers"?


I really wish there was not so much damn confusion about what non-profit and not-for-profit actually mean. They do not mean that the organizations are some altruistic organizations with helper complexes. They simply don't report any profits because they either put it into expansion, inefficiency, or simply heap the profits upon their executives. So while you are heaping wishful and magic thinking good karma on non-profits, you don't realize a huge number of them, essentially far more of them than not, are more or less fraudulent organizations, especially on the federal and global level. While you donate to do good, their executives and officers live like Princes and Kings while they spend just enough to generate marketing and PR materials so the fools will keep giving and donating and volunteering and supporting their little schemes.

I know people don't want to believe that and it's a difficult thing to accept, which is why most people just cling to the "non-profit" label, but reality is realty, whether you accept it or not.


Very noble.

I was under the impression being setup as a non profit grants various tax optimization strategies / returns. Which can be probably redistributed as salary.


There is a place for this sort of cynicism, for example when looking at Zuckerberg’s structure of his “family trust.”

But in this case it’s really an absurd implication. There is literally no personal benefit to founders making their company a non-profit. Yes they can pull salary from it, but they could do that in a for-profit company too. Not only that, but it’s impossible to sell a 501c3 non-profit because there are no shares. It can only dissolve, in which case the board must distribute any remaining assets to another non-profit.


I don't understand what's absurd about it, you can keep more money if you save on your taxes (both the company's and personal? I don't know how the US system works).

I don't argue being a non-profit is a cause for suspicion in case of a saas, I just don't see why would it be noble.


It’s absurd because if you sit down and do the math, you’ll find there are basically no monetary advantages to paying yourself out of a 501c3 vs LLC/SCorp/CCorp. And even if you did find an advantage, there is no way it saves more money than you could make by selling your company. You cannot sell a non profit.


Still don't understand, when your organization pays less tax, you have more money to pay yourself, thus your salary will be higher.

Conversely, there is little to no reason for being setup as a non-profit in Ghost's case.

[1]https://www.upcounsel.com/llc-vs-nonprofit


You do have a point, but it’s a marginal gain at best. Unless you’re operating on razor thin profit margins, it’s not going to make a significant difference in how much you have available to pay yourself. And when you do pay yourself, you and the company need to pay taxes, even if the company is exempt from some income tax.

But really the important point is you cannot sell your company. How many years of 10% extra salary is worth sacrificing your ability to liquidate all the blood sweat and tears you put into your company?


the only advantage i could see in creating a non-profit vs a for-profit, specifically in this case, is that you get the free publicity and goodwill of customers at the start. "i'm creating a wordpress competitor" doesn't sound nearly as good as "i'm creating a wordpress competitor that can never be taken away from you because we are a non-profit". If you create a crappy product, it doesn't matter in the long run, of course.


We pay full corporation taxes and receive no tax benefits of any kind.

As mentioned several times in this thread, our company is based in Singapore, not the US. The structures, laws and taxes are not equivalent.

I wrote a post about this a while back here: https://john.onolan.org/what-it-means-to-be-non-profit/


They're a non-profit, not a charity. In the podcast linked to in this post they say quite specifically that being a non-profit doesn't give them tax advantages.


Is the salary information public?

Because one can cash out through a 500k a year salary


Or one could just incorporate as a for-profit in the first place, and pay a $500k salary. There is basically no advantage to paying yourself $500k at a 501c3 vs a for-profit, and certainly not one that outweighs the many disadvantages. Employees need to pay taxes just as they would at any corporation, and the company needs to pay their withholdings. The only payroll tax a 501c3 is exempt from is FUTA (federal unemployment tax).

Seriously, looking for nefarious motivation here is really grasping at straws.


... 501c3 ..

They are a Singapore non-profit. https://blog.ghost.org/moving-to-singapore/


I've nothing but a positive experience using the self-hosted Ghost instance for some clients. Glad to see this transparency and that they're doing well.


I've really appreciated ghost, been using it pretty much since launch in one way or another. Been really cool to see it develop over the years.


The Ghost website borrows alot from Stripe's.


only drawback ghost has it doesn't support EL7. and there is documentation only for ubuntu. pretty bad :/


Ghost is great. Would love to see support for LDAP/Oauth.


Ghost is looking dated today with those templates and their script tags. Technically speaking, today, I'd rather use Gatsby as a Wordpress front-end.


I feel Ghost is trying to be the ideal replacement for WordPress i.e. you have a lot of engineers who love JavaScript and node but also having a marketing team that wants a blogging platform.

I also agree it feels like static site generators are starting to take over (personally think its an awesome direction the web is headed towards for some sites) but not everyone is familiar how to use them so Ghost is another nice alternative.


I remember it used to sell itself as the most modern platform though, but that was back in 2013 or so, perhaps that's why it bugs me.


I am not familiar with Ghost. Isn't it basically Wordpress, but built with modern tools, and with a modern look?


In the sense that it’s a blogging platform, sure. But that’s about where the similarities end


I gave up on the install. So many errors, some of which I found as open issues in their repo.


is Ghost still a thing? I thought they ceased to exist after nobody used it.

I guess wordpress beat them in every possible aspect.


OpenAI are nobody? Square are nobody? Apple are nobody? Interesting...

https://ghost.org/customers/


I'm a little surprised to read that Ghost doesn't use gitlab. Given the companies are both open source and distributed work forces; not to mention they call out github as a big headache.

>How open source works is: If you want something, you can build it.


The problems listed were with the interaction model. There's nothing I've seen in GitLab's UX that would indicate it's any better.


Unfortunately I think Github itself has a lot to do with this. The product has become too transactional - more support tool than collaboration. And Github themselves show remarkable disinterest in the open source community as a whole - they give us beta access to test new features every so often. That's about it. There's no wider involvement at all.

I read it as two parts. Interactions are flawed & Github doesn't really care about open source. Just one guys opinion, and my wife works for gitlab, but there is a deep commitment to open source and contributors, as well as an abundance of places for deeper dialogues to occur, between projects / contributors / the general public / gitlab.

+1 for also living in Minneapolis. We should get coffee.


Huh, I also live in Minneapolis.

How many HNers are around here?


Live downtown Minneapolis. Checking in.


There are a few. Are you thinking what I'm thinking? A meetup?


Yes, that's exactly what I was thinking.


I'm in Minneapolis too (down by Minnehaha Park). A Meetup sounds like an entertaining idea!




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

Search: