Hacker News new | past | comments | ask | show | jobs | submit login
Introducing Ghost 2.0 (ghost.org)
321 points by paukiatwee on Aug 21, 2018 | hide | past | favorite | 108 comments



Heyo, John from Ghost here. Thanks for the kind words so far about 2.0 — it’s been a hectic few months! Earlier this year I talked about how we were shifting focus from simplicity to power - https://blog.ghost.org/5/ - and this is the first big release since that move. Whereas early versions were extremely opinionated and rigid, we’re now starting to bake in more flexibility and configurability to allow for a more diverse set of use-cases.

Some fun technical details from this release:

- New features require building a routing map for all possible URLs on boot, which is a dramatically heavy operation. We were eventually forced to forgo our traditional ORM layer entirely to get any degree of performance (insert: shock/awe)

- Related: It turns out SQLite3 has a query limit of 999 SQL variables, so we had to implement a recursive query strategy for SQLite only. Wild. Default is MySQL though, which was fine.

- Conquered a pretty spectacular memory leak when running in development as a result of trace-logging promises in Bluebird, which is “a full featured promise library with unmatched performance” — …unless you implicitly enable debug traces

Also: Let me be the first to say that I can’t believe there’s still no Postgres support, which is absolutely outrageous.

On a serious note, thanks for all the support and there are several of us hanging out in the comments if anyone has technical questions which they’re curious about.


> New features require building a routing map for all possible URLs on boot, which is a dramatically heavy operation. We were eventually forced to forgo our traditional ORM layer entirely to get any degree of performance (insert: shock/awe) - Related: It turns out SQLite3 has a query limit of 999 SQL variables, so we had to implement a recursive query strategy for SQLite only. Wild.

Out of pure technical curiosity, how did this come to be the chosen approach? A query with 999 variables strikes me as a serious code smell, but at the same time I don't doubt you guys seriously considered the alternatives before choosing this route.


We're loading all public-facing resources - so posts, tags, authors and importantly the relations between them - in as few queries as possible, using fairly typical where...in queries in order to build the relations. SQLite uses variables for in queries, and so sites with a lot of content triggered the "more than 999 variables" error.

Solvable, of course, but quite an interesting limitation to discover!


I haven't check the code, but as few queries as possible is not always the best approach. I bet you guys spent a lot of time on the problem, but still very curious how you landed with this decision.

For the relation data, you should check out Hexastore [0] (essentially graph storage). It takes up much more space, but you can follow any paths of relationship and you can do it step by step instead of loading everything at once.

[0] http://www.vldb.org/pvldb/1/1453965.pdf


I discovered a similar limit with postgresql, mainly due to the protocol sending the query length as a 16-bit number, limiting the total length to ~65k characters. In that case it was far better to create a temporary table and JOIN that rather than using an " IN (..)" clause anyway, so that's another option if SQLite supports it.


There's no 16bit number limiting query length in PG, the limit is 1GB and has been for a LONG time. But it's indeed often a good idea to use a temp table for some of such cases.


This sounds like an interesting usecase for a graph database, is that something you have considered?


It's an interesting idea but Ghost is a primarily self-hosted application with a non-technical user base. The freedom to swap out or add core dependencies like database servers isn't really available in that environment.


Oracle had this limitation, too, or at least it did a few years ago.


Hey John -- I recall seeing on your Mastodon account recently that you were interested in supporting ActivityPub for Ghost blogs. Any news on that front?


Yeah! Very interested - we have a highly voted topic for it over on the forum with some ideas, too. It's not a primary focus of the core team right now, but it's the sort of thing we'd be very interested in open source contributions for.

One of the main motivations for people using Medium is the network effect. I think it would be really cool if that could be recreated in a platform-agnostic, decentralised way :)


I'm not sure how you could improve on blogrolls here, but I'm curious to see what you try.


I host several self-hosted blogs using Ghost 1.0 in Docker. When can we expect 2.0 released via Docker please?


The first place to look is the Ghost Docker repository and there’s already an open issue for it:

https://github.com/docker-library/ghost/issues/142


Question: Has the (Electron) Ghost app been updated to work with Ghost 2.0 as well? i.e., am I going to break things if I update my server to Ghost 2.0 then try to publish new posts using the app?


Ghost Desktop has been updated to support the Koeing Editor (see https://github.com/TryGhost/Ghost-Desktop/releases/tag/v1.7....) - Just make sure you're on 1.7.0 ;)


Hell yeah, John. I've absolutely loved watching you and your team grow over the years. Congrats and best of luck moving forward :) New stuff looks excellent.


[flagged]


You're complaining that you can't tell what this HN submission is about from the top-voted comment alone, and you actually have to read the submission?

I've seen people complain about the submission for a product announcement being unclear before, but hearing that complaint leveled at the comments is a new one.


I think it's not so much a complaint, as a suggestion to include a short recap of what the project is in the introduction of release announcements. I don't think OP was so much annoyed, as much as that they considered that it's a smart thing marketing-wise: those who don't know what the project is are unlikely to read on to the third paragraph.

See e.g. Rust, which does this really well: https://blog.rust-lang.org/2018/08/02/Rust-1.28.html


Fair point, I probably could've included some useful context there - thanks for the tip!


Thank dethswatch, it was their tip (although it's flagged right now) - I just interpreted it by assuming good intentions :)


> You're complaining that you can't tell what this HN submission is about from the top-voted comment alone

Nope. johnonolan's post is top and it explains about as much as the site. Not much at all. There's an animated thing going on a page break down from the top, but the site is so jam-packed with marketspeak and vagary that it shouldn't be surprising. Also, I still don't know what it is. Compare that with Codesandbox (also on HN) which is straightforward.


John used to be a noteworthy contributor to WordPress. He went on to create a node.js based WordPress like software a decade or so ago, back when node.js was new and all the rage.


About five years ago, 2013.


"Also: Let me be the first to say that I can’t believe there’s still no Postgres support, which is absolutely outrageous."

Postgres is open source.

Why do they owe you?

If it matters, write the code.


It's a joke, the context of which is that they removed Postgres support from Ghost a while ago, and people keep complaining about it.

See: https://blog.ghost.org/dropping-support-for-postgresql/


I have to give him credit, I was here to complain about it.


That's not how he meant it, because it makes no sense.

He meant that he still hasn't taken the time to get some people in his team to support Postgres officially, I guess.


I would love to see an official static site mode for Ghost (and Wordpress). That way we can get both a nice authoring experience and the low cost/security of S3 hosting.


This is always the first thing I look for in the new version announcements for big blogging platforms.

Would be amazing if I didn't need to know a completely separate technology and/or hack together bridges/site "staticizers" in order to have a quite basic functionality (the site be 100% static when no back-end dynamic interaction is needed).

That said, there are third party plugins for WordPress that do this. Don't know about ghost, but my hopes are for first-class support for this.


Check out Publii, then (Open Source too). It's quite similar to WordPress in a lot of ways, but it's a desktop app that uploads static files. https://github.com/GetPublii/Publii


Thanks for posting this recommendation, I've been looking for a static blogging tool like this.


Why have I not heard of this? This sounds like a great tool.


Seems like a great way for them to bankrupt the .com


Not the same as static but you can get pretty good results by caching in a CDN. It’s also pretty easy to set up these days.


This is the first thing I googled after I saw this update.


Next.js has had support for a static site export for a long time. I’m just waiting for someone to make it into a user friendly CMS.


I’m amazed no-one has mentioned the lack of a built-in commenting feature.

The makers of Ghost are here appreciating the benefits of comments but sadly they haven’t made there way to Ghost yet.

I’d love to move to Ghost from Wordpress but commenting is essential.

And no. 3rd party Garbage like Disqus isn’t a viable option.


Built-in commenting is planned as part of the Memberships & Subscriptions feature[0]. Ghost needs a robust visitor authentication system for native commenting to work well and that will also involve a big concept-shift for Ghost's front-end from static generation to each page load potentially being dynamic.

In the meantime, Discourse[1] and Talk[2] are great options that can be self-hosted if needed and integrate well. If you look at them you can see the level of effort that is required to do commenting, moderation, and spam protection well at scale.

[0] https://forum.ghost.org/t/memberships-subscriptions/377 [1] https://www.discourse.org [2] https://coralproject.net/talk/


Here's another one: Talkyard — different from Discourse and Mozilla Talk, in that it looks more like Hacker News and Disqus: threaded comments, best first, Like votes.

It's free and open source, beta software (more risky than those two others), I'm developing it. There's SaaS hosting (no ads, no tracking — costs money instead) for people who don't want to install on their own server.

Demo: https://www.kajmagnus.blog/new-embedded-comments, read about it: https://www.talkyard.io/blog-comments

\\\*

Curious about how you have in mind that built-in commenting will look & work. Disqus, Talk and Discourse are all fairly different from each other, right, and I'm a bit wondering which approach you'll take. B.t.w. looks interesting with SSO & full community integration.


My current favorite solution for comments is Discourse — they actually have a great plugin for WordPress that replaces the default WP comments. Maybe overkill for some, but really nice when building a real community (ongoing discussion rather than drive-by commenting) is a priority. I could see this being a similarly nice solution for Ghost! Though simpler native commenting support would be cool too.


Have you ever looked at all the third party scripts loaded by disqus? Garbage.


Not to bomb the conversation here - Just trying to sell a product ;). We are building a user engagement tool called Metype.

The good thing about this tool is you can customize it the way you want it to look. The look and feel of the comments can match your website's design. You can use our simple javascript implementation and integrate it into your Ghost site. If you decide to stay on wordpress we do have a easy to use wordpress plugin too!

Please visit https://www.metype.com if you want to see the other products we provide. Do shoot us an email or chat with us on our site if you want to give it a shot or provide us feedback.


Oof, commenting is the only thing tempting me to use WordPress on some of my websites over Jekyll.


I'm curious as to why commenting is essential for you.


The comments on a blog post are often as useful as the post itself. They are also directly related to the content of the post. Why would I want that information stored anywhere else but with the post itself? Especially with a 3rd party? To say conversation can be done with other services just seems like passing the buck to me.


I think it depends on the kind of content and audience but surely but I'm also curious.


while it's not a great solution, a seperate local comment-system that's loaded from your template might be your best bet.

i remember someone linking isso[0] some time ago; haven't used it at all, but it came to mind (mostly because of the 'big data' comment on the landing page)

[0] https://posativ.org/isso/


A lot of blogs do just this... use Hacker News, Reddit or Twitter as their comments. Comments on blogs have become less relevant as time goes on.

That being said, there are some decent Open Source Disqus clones out there you could probably use!


Blog comments are visible and open to anyone reading the blog post. And the blog author can always see them and reply to them instead of chasing discourse across the internet.

Reddit and HN topics become read-only after some time, so I'm not sure how they can replace blog comments.

Twitter for comments, I don't understand. I guess you link to your canonical tweet and people reply to it? I find threaded conversation on Twitter to be just about unbearable.


Any chance of a cheaper / more minimal plan for a small personal site or blog?

I suppose at that point, it's better for you for us to run it on our own hosting, though...?


My blog is hosted on a bare metal Scaleway toaster for 2.99 a month and runs great for a small personal blog. Might be nice to have more firepower for a small business that has a steady ingress of users, but for me, it's been great!


That is what I am moving to. I currently use their hosting but plan on moving to a DigitalOcean box soon.


I remember when they launched with a $5/month hosting plan, then when they raised it to $10. Just looked at the pricing page and the minimum is now $36/month (or $29/month billed yearly). That's some serious sticker shock.

Is it that much better than say, Squarespace?


The thing is, it doesn't matter if it is that much better than Squarespace or WordPress, that's just way too much money for a personal blog, even before the conversion to AUD I'd have to face.


These were my thoughts exactly. Maybe it just hasn't made business sense for them to host cheaper plans, since it's available to self-host. But you're right, even against competitors (Squarespace) it's quite a bit more expensive. Not sure what justifies such a gap.


At one point it looks like they'd even jacked it up to $79/month minimum, and the $29/month basic plan was added since then [1]. I guess that didn't sell well.

I have no experience with squarespace (just hear about them in podcasts), but I know they have pretty nice templates, they host blogs, stores (digital and physical), podcasts, and probably more, priced at $12 or $18/month.

From a cursory glance through Ghost's site I'm not seeing what value they bring to the table that makes it worth more. Reeeeaaaallly good blog, I guess?

[1] https://forum.ghost.org/t/300-increase-in-ghost-pro-packages...


I am fortunate enough to be on the $10 plan, but given how little traffic my site gets cutting it in half with the smallest DO box would still be nice.


You could move from Ghost Pro to another Ghost provider without being completely manual. A quick google turned up FastComet at $2.95/month. Page claims 1-click Ghost installation, easy Ghost upgrade service, and daily/weekly Ghost backups.

https://www.fastcomet.com/ghost-hosting

Yay open source!


You could even go with vultr or ovh and cut it even lower.


With a dedicated server, you can have fantasic results. I'm hosting a Ghost server with docker-compose and Traefik + Let's Encrypt, and the thing is snappy beyon belief.

The server is a 14€/month with 16G/Corei5 2,8Ghz/2To HDD/1GB bandwidth. When you take in account the 15€ annually for the domain name, it comes twice cheaper that ghost. You can also host other things on that, since Ghost takes up maybe 500M of ram.


I was just thinking about ghost a few weeks ago! I used to use Ghost way back when and wanted to get back to it but the installation process has become really complex and brittle. I'm a little ashamed to admit that it beat me.

The cli tool is very rigid. For some reason you cannot simply run ghost as the user ghost but you need some other user with sudo privileges to create the ghost user during the installation process. And if there's any problem at any point, it just breaks.

I will try the npm path[1] but it looks pretty arduous as well.

Is this a business decision to turn as many people as possible to the hosted version? Or is this just the state of node and modern web apps?

[1] https://docs.ghost.org/docs/using-ghost-as-an-npm-module


> Is this a business decision to turn as many people as possible to the hosted version? Or is this just the state of node and modern web apps?

Ghost-CLI is an open source project, led and built almost entirely by contributors from the community.

The process is rigid because they don't have enough hands to support more variations in environment.


Digital Ocean has a one click install that configured a ghost blog and takes care of everything for you.


I'm so old I still have a multi-purpose personal server instead of separate VPS/containers for everything.


Honestly, I suspect most people use either traditional hosting or a personal server for their sites. The separate containers on VPS providers thing is significantly overrepresented on sites like Hacker News, and likely counts for why many scripts (not just Ghost) haven't quite cracked the mainstream yet.


Really looking forward to trying out Ghost 2.0

I help run a small publication with some friends and we've been having difficulties with Medium and think it's time to move to a new platform.

One problem we haven't figured out a solution to yet is importing our Medium articles into Ghost.

My current plan is to export the Medium articles, parse them, then insert them directly into the Ghost DB. Is this is a viable solution?

I guess I have two questions: - Is Medium import going to be a feature offered any time soon? - How does the SEO configuration/setting work? Is it set up on article access? on article publish? on article creation? Would inserting articles directly into the DB break this process?

Thanks!


We have no real way to do anything here, unfortunately. Medium deliberately export a totally vague dump of HTML files which don't even contain publication date and are essentially unintelligible. They also have no API to read from. There might be a route to creating a scraper, but that comes with its own set of challenges which are not insignificant and then potentially can also be misused by people scraping content which is not their own. So it's a tricky one.

IMO Medium should provide a real export format and not hold people hostage... but you'd have to convince them of that


Should GDPR enable portability in the web apps? I think that is mandatory for a website to offer data take away in a standard format.


I was a pretty early beta on the editor, and I'm happy to see the production version turn out as good as it did.

Cards is a smart way to re-phrase the rich content without dipping into the "site builder" mould.

Nice work.


I updated to Ghost 2.0 last night and did not end well, though I managed to fix it by going to a sunken place looking for ghost.service. Hopefully in the next update it would be more stable.

Also, one more thing I would like Ghost to improve is there SEO. My website hosted on DO is just 2-3 pages behind. Some of my posts don't even make it even the obvious meta and title.


Nice. I've been using Ghost for our development blog for a few years now [0]. Every time I have to maintain our main company blog, which is Wordpress, I am astounded by the incredibly messy and cluttered admin interface. Ghost just keeps it simple and easy enough for me to publish quick dev updates on our SaaS in seconds without having to wade through a ton of crud.

I wonder if the 1.x -> 2.0 upgrade will be a simple ghost-cli command, or whether it will entail a complete reinstall on our Digital Ocean droplet?

[0] - https://workplace.hrpartner.io


Very interesting! I've been debating if we want to continue using Sphinx (http://www.sphinx-doc.org/en/master/usage/restructuredtext/b...) for our documentation website, and focus on a tool that provides a more robust platform for publishing a content focused site.

Sphinx is great for building out an API reference, but there's so much more to a documentation website beyond that.

Anyone have insight into this idea?


Ghost is not the best bet for documentations. It's great in its area but not for sphinx like documentation. Better look at mkdocs! If you want to see a website we created from a Sphinx to mkdocs switch: https://news.ycombinator.com/item?id=17717513


This is perfect timing for me. I'm interested in getting serious about starting a technical blog. I've been deciding between Ghost and WordPress. Does anyone have thoughts on that comparison?


I know this isn't one of those two options, but I'd recommend a static site generator (e.g., Lektor, Hugo, Nikola, Pelican, Octopress). I find myself wasting less time twiddling and configuring them and instead focusing on writing content (in Markdown or ReStructured Text, no less).

Additionally, I can then throw the content up on GitHub pages or AWS S3 and cut down on hosting costs.


I switched to Ghost because I found I spent a lot of time twiddling with my static site generator. My Jekyll setup had a habit of breaking every few months.


Interesting to switch away from a static generator due to reliability. We used Tumblr for our first start up since many non-technical folks were writing content (It was a consumer app). We had a bad experience with it being slow loading for users while being very constrained regarding the theming and clunky editor.

Our current startup is much more dev focused (API analytics) so we went with Jekyll and absolutely love it. Just code in Markdown and your favorite editor and host on GH pages. It's free and super fast. No need to worry about theme settings everything is version controlled. These days, even if you need dynamic content like search, you can use Algolia or Lunr if the index is small.

I guess once you hit a point where you have a large team writing and scheduling content to be posted, static generators may not scale well accordingly (and Ghost will prob be one of my first picks), but we love it for smallish dev focused teams.


I loved Octopress and wanted to use that. It seems like development stopped around 2016. Do know if someone forked it and there's a more updated version out there?


It definitely looks like Octopress development has tapered off. As you can tell, I haven't had to do this research for a while :-)

It looks like a lot of Octopress users have migrated to vanilla Jekyll for their needs.


Yeah. From what I remember, Octopress was designed to take Jekyll from static site generator to Blog engine (i.e. automate the manual stuff to set up a blog). Jekyll has since cribbed significantly from Octopress to make it much easier to approach for that use case.


Depends on your skills and preferences. I would choose Ghost since I am a JavaScript developer and would be more comfortable with a node.js solution. I'm actually so happy I was reminded about Ghost by this post, I might try to set it up myself tonight.

Lacking PHP experience, I've never felt that comfortable in WordPress, but I can't deny that It Just Works. Easy to install and there are millions of users for easy troubleshooting.


That's basically what I'm thinking. Ghost is more inline with some skills I'd like to round out but it's undeniable that WordPress is the standard and there are so many plugins and extensions for it.


Wordpress has so many plugins and extensions because people use it as a site builder for anything and everything. Want a shop? A contact form? A newsletter? Restaurant bookings? Hotel reservations? Whatever, do it in wordpress.

If you want a technical blog, Ghost also "just works" and is far, far better, cleaner, more beautiful out of the box imo. I use their Pro version for our company's blog (https://articles.hsreplay.net/) and it's just unbelievably good. I'm so glad to have found it and I'm a huge, huge fan of not just their product but also how they run their organization.


If you want to build it out into a business, WP might be better because of all the addons for small businesses. It's basically a small business framework.


Ghost is fantastic if you just need some simple features and a good Markdown editor.


Refreshing to see focus on a better product and not a pivot into a website builder of sorts. Congrats on the launch, looks solid!


> Multi-Language Sites

> You can now configure your site to support multi-lingual content served across unique URLs with SEO-friendly, semantic templates. Now you can publish in English, German, Spanish or just about anything!

About damn fucking time, pardon my language. Was a real deal breaker for some projects of mine.


Agreed


While we are on the subject, what are the plans now for the admin interface ? Community provided translation files ? Can the admin interface be translated ?


I just upgraded my website with a click and some minimal theme changes using Ghost Pro and I'm liking the new editing experience. It feels like a blend of the nice features from Medium and Caramella.


About a year to 6 months ago I decided I wanted to try out the hosted version at ghost.org. It seemed I had already used up my free trial some time ago. So long ago I don't even recall doing it. I emailed support to see if I could get another trial. I was interested in paying for the pro version but wanted to make sure it was actually worth $29.

I NEVER got a response from their support about my request. Just flat out ignored. Haven't been back since...


I totally understand that you feel ignored, however I can assure you our support team never ignores emails - so something must've gone wrong either with the original email or our reply.

We're always happy to provide another free trial - or you can signup again with an email address variation.


That’s a bummer. Sometimes small teams get very overwhelmed, and sometimes spam filters go awry. Did you try emailing them again, or contacting them on twitter?

From what I can tell they are a team of eight with one dedicated support person, I empathize immensely with her.


What's the API support like these days? Can I use MarsEdit to easily post? Are there iOS apps for on-the-go thoughts?


Can ghost be used as a headless CMS? Been looking for an open sourced one based on nodejs


Yes it can, it's not a perfect experience (yet) but quite a lot of people are already using it in this way. We're also generally interested in a more decoupled approach to the front end, so you can expect this to improve further in future!


How good is ghost for seo vs other platforms?


Seo is a theme thing, and it barely has anything to do with the engine.


Not strictly true, Ghost has a lot of built-in features for SEO. In particular: Detailed schema.org microformats and structured data, automatic canonical tags, automated + user override-able custom meta data, automatic XML sitemaps, SEO friendly routes, RPC pings, automatic Google AMP support, and quite a few other things.

We do all of these things in core, rather than leaving it up to the theme, so that everyone gets consistently good SEO rather than being left up to the mercy of whatever the theme developer remembered to implement


Thanks - are there examples you can point me to for commercial sites built from Ghost that advertise products (through affiliate links)?


Ooh, microformats, does anyone use those nowadays? (I have them on my sites, fwiw).


Generally there are default themes and they can be built with SEO in mind, or not. Seems like a reasonable question.

Also if there are mods available to easily add features that are missing -- maybe, eg, arbitrary HTML header elements -- then that can make the system SEO friendly.


Great software


Curious, how can this compete against free open-source alternatives?


This is a free open source alternative, the pro version is just a cloudbased PaaS based on the same code.

Here's the GitHub: https://github.com/TryGhost/Ghost


Ghost is free and open-source itself. I find it more pleasant to use than most of the alternatives. Presumably it's financially supported by the official hosting service.


Uh, last I checked ghost was both free and open source if you're self hosting.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: