|
|
Log in / Subscribe / Register

The Ghost publishing system

By Jonathan Corbet
October 20, 2022
Part of the early appeal of the World Wide Web was the promise that anybody could create a site and publish interesting content to the world. A few decades later, that promise seems to have been transformed into the ability to provide content for a small number of proprietary platforms run by huge corporations. But, arguably, the dream of widespread independent publishing is enjoying a resurgence. The Ghost publishing platform is built around the goal of making publishing technology — and the ability to make money from it — available with free software.

Ghost is an MIT-licensed application written primarily in JavaScript; it has been under development since 2013. The project is owned by the non-profit Ghost Foundation, which appears to be mainly funded by an associated Ghost(Pro) hosting business. The entire platform appears to be free software; this is not an open-core offering.

At a first glance, Ghost looks like yet another blogging platform, providing the ability to create, edit, and publish articles. Tied closely to that platform, though, is the ability to send articles via email newsletters; Ghost seems to be firmly positioned as a free alternative to operations like SubStack. Support for paid subscriptions is also built in, with the ability to define multiple subscriber levels. Much of the documentation and in-system help provided by Ghost is aimed at helping users create and monetize their content with the platform.

Getting started with Ghost

Your editor decided to give it a try, following the provided instructions on an Ubuntu 22.04 platform; the result can be seen (through the end of October 2022 or so) at ghost.lwn.net. (Note that not a lot of effort has gone into fine-tuning that site's appearance, so the result is arguably even uglier than the regular LWN site). The instructions are clear enough and almost worked; the MySQL user account was not set up properly and had to be fixed by hand. Everything else, including the (seemingly) inevitable curl|bash step and the procurement and installation of a Let's Encrypt SSL certificate, simply worked.

The documentation falls down slightly at this point, though, in that it doesn't provide a next step. That step is to go to the site's dashboard page (under /ghost on the newly installed site), but nothing appears to provide the link to that page. Once that page is found, it becomes possible to play with themes, configure the look of the site, manage user accounts, and get into many of the other relevant details.

[Ghost editor] Posting an article starts in a fairly straightforward web-based editor. It works well enough, especially once one learns that it is necessary to highlight a range of text before the small set of formatting options becomes visible. The interface is mouse-heavy in general; there are a few keyboard shortcuts, but they fall far short of a proper text editor. Perhaps more interesting is the ability to insert "cards" to bring other types of media into an article. They can be as simple as Markdown or HTML text, but also extend to images, bookmarks, audio content, video content, or things like a "call to action" or "product recommendation". Widgets from many of the popular online services can be embedded as well.

Articles can be previewed and published in a straightforward manner; it is also possible to schedule the posting of an article for some later time. Posts can be fully public or reserved for subscribers. It is also possible to fine-tune how the article will appear when posted to various social-media sites. In general, Ghost has clearly been developed with an eye toward social-media propagation, with the ability to add all of the usual links to encourage readers to spread the word.

Ghost allows readers to post comments on articles, but that functionality is disabled by default. Comments seemingly can only be plain text, with no ability for any sort of fancier formatting.

Going deeper

Going beyond the simple posting of public articles requires more setup, including the creation of accounts with other providers. For example, Ghost is designed to send email newsletters, but it will not do so directly; instead, it requires the use of a paid Mailgun account. The documentation warns that sending large amounts of email directly will only result in the site being blacklisted, so Ghost doesn't even try. LWN's experience is that the situation is not quite that grim — but running an independent email system on today's net is certainly a challenge. In any case, there is no ability to use any other bulk-email service, but that appears to be a result of nobody having gotten around to implementing the integration rather than some sort of special deal.

Stripe, instead, is presented as the "exclusive" payment provider. The integration looks simple enough to configure, though your editor, lacking a Stripe account, was unable to try it out. Given the "exclusive" wording, it would be interesting to see what would happen if somebody submitted a pull request adding support for another provider. There is no support for PayPal in the base install, but that support can be added later.

[Ghost dashboard] The site dashboard provides information on how the site's content is doing, including how many subscribers there are and how many of those have "engaged" with the site recently. Information on individual subscribers includes their activity on the site and, for better or for worse, whether and when they read their email newsletters. Tracking images are used to obtain that information. There does not appear to be a way for site owners to control the acquisition or retention of this data, and users are not asked to consent to its collection. It could, as a result, be difficult at best to run a Ghost site in a way that is compliant with regulations like the GDPR.

User management on Ghost is a bit strange in general, in that there are two entirely different types of accounts. Ordinary users have whatever access to content their subscriber level allows, but no other access. There are no passwords associated with these accounts; logging in is done by providing an email address, then clicking on the link sent to that address. "Staff" accounts, instead, have the (configurable) ability to create posts, publish them, modify other users' posts, or exercise administrative access to the site. They must be created by an existing administrative account, and access is controlled by a password. An attempt to log into a staff account via the normal login form will fail; one seemingly has to go to a privileged page then provide an email address and password. There is no way to turn a normal user account into a staff account.

Internally, Ghost is split between the content-management system and the web front end; it is possible to use the former without the latter. There is an API that can be used to access the back end... actually, there are two of them. The API that is easily found from the front page provides read-only access to data in the system. More serious work requires using the admin API, which is rather harder to find, instead. Among other things, the APIs are useful to implement a vast number of integrations with proprietary services across the net.

Community and closing

Ghost is certainly an active project, producing a release every few days. An Internet-facing application like this needs to prioritize security; the Ghost Security page says many of the right things in that regard. The last release that mentions a security issue is 4.15.1 from September 2021. The idea that an application of this nature has had no security problems in over a year seems like a bit of a stretch, but one never knows. Updating a Ghost installation appears to be a relatively easy process.

The 4.20.0 release happened on October 22, 2021 — almost exactly one year ago. Since then, the project has added 16,130 non-merge changesets from 261 developers, which is certainly a respectable level of activity. Over half of those patches come from a relatively small number of Ghost employees, as would be expected, but there is also clearly a long tail of contributors from outside the project. Ghost development appears to be centered on its public GitHub site, with company employees submitting pull requests there like everybody else.

In other words, Ghost may be a project that is dominated by a single company, but it appears to have a healthy community and to be developed in an open manner. This doesn't look like software that was tossed over the wall and forgotten about. It is worth noting that the project's contributor license agreement allows the Ghost Foundation to release contributions under a proprietary license — though the project's MIT license poses few obstacles to that in any case.

The writing of LWN's site code began in early 2002, with the subscription support added in a development frenzy by your highly motivated editor toward the end of that year. Twenty years ago, there were not really any alternatives to creating something from scratch; LWN, it seems, was ahead of its time. If we were starting today, the situation would be completely different; there are a number of options out there for people who are crazy enough to try to make a living writing on the Internet. It is not certain that Ghost would be chosen to host a site like LWN, but it would undoubtedly be on the short list of contenders.


to post comments

The Ghost publishing system

Posted Oct 20, 2022 19:02 UTC (Thu) by rahulsundaram (subscriber, #21946) [Link] (9 responses)

> It is not certain that Ghost would be chosen to host a site like LWN, but it would undoubtedly be on the short list of contenders.

The brings to mind two questions 1) Are there still plans to open source the LWN codebase 2) What are the other contenders?

The Ghost publishing system

Posted Oct 20, 2022 19:21 UTC (Thu) by corbet (editor, #1) [Link] (8 responses)

With regard to the LWN code: it's only been 20 years, what's your hurry? :)

It is still something that we would like to do; certainly there is no real business advantage to keeping it internal. But we have never found the time to do the diligence work that would be required to safely open up this code. That is a matter of being too busy just keeping LWN going and it not seeming important enough to justify the number of LWN articles that would not be written because we were doing that instead.

Maybe if we could actually hire a writer or two that might become a more plausible option.

With regard to alternatives, I don't really know. There are definitely other platforms competing in this space, but I have not had the time to really look at them.

The Ghost publishing system

Posted Oct 20, 2022 20:21 UTC (Thu) by ddevault (subscriber, #99589) [Link] (6 responses)

> we have never found the time to do the diligence work that would be required to safely open up this code.

What are your fears? Copyright related? Or security related?

The Ghost publishing system

Posted Oct 20, 2022 20:44 UTC (Thu) by corbet (editor, #1) [Link] (5 responses)

Copyright is not that big of a concern — I know where our code came from. Security is moreso; we have made an effort to do everything right but we would want to make an in-deep pass over the code before setting the world loose on it. Some of our techniques for warding off spammers and credit-card scammers might not benefit from exposure at all.

Then there is the issue of writing enough documentation so that others could actually do something useful with the site, creating some sort of working minimal working configuration, etc. This is code that has had to serve exactly one purpose for many years; just tossing it over the wall is unlikely to benefit anybody.

The Ghost publishing system

Posted Oct 21, 2022 7:40 UTC (Fri) by ddevault (subscriber, #99589) [Link] (3 responses)

Abuse mitigation is one of the rare things which has a compelling argument for being closed source. Fair point, there. However, if you have any other security problems in LWN, then those problems are real -- closed source or not. Better fix them up!

As for docs, you don't need to do this at all. I've told many people considering opening up their codebases that it doesn't have to be perfect or even obviously useful to open up. If we wait for it to all be documented and cleaned up, we'll be waiting another 20 years. Even imperfect, it's an interesting object of study and it will be helpful for people to dig into it if they want to contribute an improvement or bug fix to LWN.net upstream, even in the absence of any third-party installations of it.

The Ghost publishing system

Posted Oct 21, 2022 18:00 UTC (Fri) by NYKevin (subscriber, #129325) [Link]

To provide a concrete example of a person tossing code over the wall, and things working out just fine: Grant Sanderson, a math YouTuber, wrote an animation library called Manim, which he used for his videos. He put it on GitHub with some warnings that it might not be terribly useful because it was not designed for general use. The community responded by forking it and maintaining a stable release, as well as improving the documentation, and now anyone can make animated videos of a similar style. See https://docs.manim.community/en/stable/faq/installation.h... for discussion.

The Ghost publishing system

Posted Oct 21, 2022 19:38 UTC (Fri) by edeloget (subscriber, #88392) [Link]

> As for docs, you don't need to do this at all. I've told many people considering opening up
> their codebases that it doesn't have to be perfect or even obviously useful to open up. If
> we wait for it to all be documented and cleaned up, we'll be waiting another 20 years.
> Even imperfect, it's an interesting object of study and it will be helpful for people to dig
> into it if they want to contribute an improvement or bug fix to LWN.net upstream, even
> in the absence of any third-party installations of it.

And then one should note that Master Corbet not releasing documentation for the software he proposes would be quite strange when related to its duty as a documentation maitainer for the Linux kernel :)

The Ghost publishing system

Posted Oct 26, 2022 6:18 UTC (Wed) by wtarreau (subscriber, #51152) [Link]

> Abuse mitigation is one of the rare things which has a compelling argument for being closed source. Fair point, there.

Absolutely. Each time I've helped some users fight DoS/DDoS, the very first thing I warned them about was to refrain from publicly bragging about the methods involved, because abuse mitigation still has some limits, but the trick is in making them difficult to figure for the abuser.

The Ghost publishing system

Posted Oct 23, 2022 12:00 UTC (Sun) by kleptog (subscriber, #1183) [Link]

If security is an issue, some security companies do have programs where they do free pentests or security audits for open source or open source related projects as a sort of publicity thing. If that's something you guys would be interested, perhaps something can be arranged?

I wouldn't worry about the docs. If it's useful, people will write the docs.

The Ghost publishing system

Posted Oct 24, 2022 15:29 UTC (Mon) by Wol (subscriber, #4433) [Link]

> It is still something that we would like to do; certainly there is no real business advantage to keeping it internal. But we have never found the time to do the diligence work that would be required to safely open up this code.

Is there a site (gitlab, gihub) where you can release it as a closed project, and say "anyone we know who wants access, just ask. Just don't share any code that you haven't personally audited for security".

I know that's not fully open source, but outsiders who are interested in security can now vet your code for you, and you can plan to open up - I hesitate to say slowly - bit by bit as you are confident about it.

But you need a team you can trust, and I understand that can be hard to find ...

Cheers,
Wol

The beautiful regular LWN site

Posted Oct 20, 2022 20:25 UTC (Thu) by rrolls (subscriber, #151126) [Link] (19 responses)

> Note that not a lot of effort has gone into fine-tuning that site's appearance, so the result is arguably even uglier than the regular LWN site.

While I'm sure this is a joke about how LWN has a very simple and old-fashioned appearance, rather than a sign that LWN might one day go for a modern revamp, I'd just like to say (even if I'm on my own here) I genuinely appreciate that simple and old-fashioned appearance and LWN might not have won my subscription without it.

Hardly any modern web design impresses me any more - it's mostly just hard to read, and unresponsive. Ironic when you consider the phrase "responsive design"! Sometimes I spend more time messing around in the web inspector to make someone else's page readable than I spend actually reading it!

Keep up the good work writing articles I say. :)

The beautiful regular LWN site

Posted Oct 20, 2022 22:25 UTC (Thu) by dskoll (subscriber, #1630) [Link]

Seconded. I looked at some of the portfolio of sites on the ghost.org site. I find LWN.net easier to read and navigate than any of those sites, even though (or maybe because?) they have way more flashiness.

The beautiful regular LWN site

Posted Oct 20, 2022 23:08 UTC (Thu) by logang (subscriber, #127618) [Link] (8 responses)

While I mostly agree with you that the old-fashioned appearance is great, my one long time annoyance with this site's design is the overly large width of the paragraph text. It's simply not comfortable to read blocks of text that wide and pretty much all other modern publications get this right with much more reasonable line lengths.

For this reason, LWN is the one website that I use with Firefox's reader view feature (despite it often having a number of weird artifacts with images and code). Before that feature existed, I suffered through the annoyance of resizing the browser window every time I visited this site, just to get a more comfortable read.

Paragraph width

Posted Oct 20, 2022 23:40 UTC (Thu) by corbet (editor, #1) [Link] (6 responses)

Some people get remarkably grumpy if you fail to fill their wide windows with text...

Go to the account area, then into "customization" and set the "maximum width of main text column" to whatever value works for you. Please follow up if that doesn't do what you want.

Paragraph width

Posted Oct 21, 2022 3:14 UTC (Fri) by admalledd (subscriber, #95347) [Link] (1 responses)

Chiming in as one of those *freaks* who have had ultra-wide and love my monitor full of text. Yes I know that may be a step too far, but at least on lets say 1080p if I full-screen the page, I want the page to be full of content not whitespace darn it!

That it is adjustable in settings is a nice thing too, at least for someone else I know personally (opposite of me really in reading preferences) works just right for them. I use the settings to get back the old orange and /Articles/FrontPage.

Other news sites I have to fight with custom CSS or whatnot to get readable! grumble grumble :)

While I wouldn't change my subscription just because of this, or other style changes I would ask for ways to keep reading like we do now. I would even consider ~~threatening~~ asking for API or patterns so I could re-build this UI as is grumble!

Paragraph width

Posted Oct 23, 2022 0:04 UTC (Sun) by NYKevin (subscriber, #129325) [Link]

> Yes I know that may be a step too far, but at least on lets say 1080p if I full-screen the page, I want the page to be full of content not whitespace darn it!

Personally, I disagree. If text is wider than ~80-100 ems, I find it difficult to track which line I'm currently reading, which actually slows things down tremendously, compared to hitting the Page Down key slightly more often. If I wanted to read the maximum amount of content, I would orient my monitor vertically.

Paragraph width

Posted Oct 21, 2022 8:12 UTC (Fri) by zorro (subscriber, #45643) [Link]

Is this supposed to work for the comments underneath the main article as well?

Paragraph width

Posted Oct 21, 2022 14:20 UTC (Fri) by logang (subscriber, #127618) [Link] (1 responses)

Oh, that's lovely. Thanks! I didn't know that was an option.

Paragraph width

Posted Oct 21, 2022 15:25 UTC (Fri) by zdzichu (subscriber, #17118) [Link]

LWN has many useful options in preferences page, they just aren't widely known.
I use to think that providing customization to every color on site is overkill, until I've found nice set of values giving LWN dark mode: https://secluded.site/lwn-theming/

Paragraph width

Posted Oct 27, 2022 9:24 UTC (Thu) by NRArnot (subscriber, #3033) [Link]

I just drag the right-hand border of my window inwards until the text column is a width I appreciate. Takes less than a second and isn't really something I think about. The only web sites I get grumpy with are the ones that don't adapt to a narrow window correctly, and the ones that won't print all the text should I want to commit something to mashed tree. (Usually, because I want to annotate it with a pen).

The beautiful regular LWN site

Posted Oct 21, 2022 19:51 UTC (Fri) by rschroev (subscriber, #4164) [Link]

Actually I like the longer lines that LWN allows. But I understand other people have other preferences. Can you not resize your browser window to make the lines exactly as long as you like them?

The beautiful regular LWN site

Posted Oct 21, 2022 3:04 UTC (Fri) by dullfire (guest, #111432) [Link] (5 responses)

I had this thought as well. In my humble opinion the 'style' of LWN is fine. It does not get in the way. The site is easy to navigate. Searches work sanely. And most importantly the site works fine without javascript.

The beautiful regular LWN site

Posted Oct 21, 2022 8:19 UTC (Fri) by Lionel_Debroux (subscriber, #30014) [Link]

Fully agreed :)

The beautiful regular LWN site

Posted Oct 21, 2022 11:13 UTC (Fri) by mathstuf (subscriber, #69389) [Link] (2 responses)

It reminds me of the old ti-news.net (probably the first online community I really participated in). I used it with its orange theme back then.

https://web.archive.org/web/20070111191331/http://www.ti-...

The beautiful regular LWN site

Posted Oct 28, 2022 0:01 UTC (Fri) by jschrod (subscriber, #1646) [Link] (1 responses)

I still use LWN.net with its orange theme.

Never change a well-running system, and so on... ;-)

The beautiful regular LWN site

Posted Oct 28, 2022 12:37 UTC (Fri) by paulj (subscriber, #341) [Link]

Same here. I had to figure out the old colour scheme (I guess I used a colour picker on an old tab, or screenshots?) and then tweak the customisations.

Bring back the old scheme! Or at least an easy option to switch to the old colours!

The beautiful regular LWN site

Posted Oct 21, 2022 15:10 UTC (Fri) by DouglasJM (subscriber, #6435) [Link]

I second this, I'm here for the content, not flashy stuff. ;)

The beautiful regular LWN site

Posted Oct 23, 2022 4:30 UTC (Sun) by rbnrbn (guest, #135416) [Link]

absolutely keep lwn this way, it's outright refreshing to have a site as usable as this :)

The beautiful regular LWN site

Posted Nov 2, 2022 21:15 UTC (Wed) by wittenberg (guest, #4473) [Link]

hear! hear!
It's the most useable site I know of. Please keep it that way.

The beautiful regular LWN site

Posted Nov 3, 2022 10:45 UTC (Thu) by mrugiero (guest, #153040) [Link]

I actually came to the comments section just to mention that. I wish most sites (at least most news sites) looked and behaved a lot more like LWN. I hope it never changes much.

The Ghost publishing system

Posted Oct 21, 2022 9:50 UTC (Fri) by scientes (guest, #83068) [Link] (2 responses)

Except that it requires a Turing machine on the display machine, with unbounded RAM consumption. Tizen found that switching to Enlightenment, which can draw either with complicated 3D-card APIs like OpenGL or Vulcan OR using a scene-graph, (and with identical APIs) suddenly solved all their graphical studdering problems. While there are developer kits for Android that lets you emulate this sort of thing, Android also has this problem even without purposeful fault injection—something that Englightenment and Tizen do not have problems with. It is a shame that no-one has started the momentum of supporting including in Debian or Fedora or SuSE, the distrobutions that can be built from source.

The Ghost publishing system

Posted Oct 21, 2022 11:09 UTC (Fri) by mathstuf (subscriber, #69389) [Link] (1 responses)

This looks…unrelated. It starts off with something about JavaScript being required on the frontend (if this indeed has *anything* to do with the article) and ends with…supporting scene graphs and Enlightenment not being supported on the from-source distros? Or is this a comment to some other Android-related article from…not recently?

The Ghost publishing system

Posted Oct 21, 2022 11:28 UTC (Fri) by paulj (subscriber, #341) [Link]

This user has been posting.... difficult to relate.... comments on a number of articles I think.

The Ghost publishing system

Posted Oct 24, 2022 2:06 UTC (Mon) by calumapplepie (guest, #143655) [Link]

I was, unfortunately, unable to create an account and post a snide comment to accompany the one already on the First Post. I shall, therefore, place said snide comment here.

"If we're going to go back to doing "first post" in the comments like its the bloody 2010s, can we also go back to the 2000's and get some nice static HTML?"

I'm a big fan of reducing power consumption, and the modern internets obsession with dynamically generated high-complexity javascript pages... doesn't do that. I'd be more tolerant if it seemed like the frontend was an actual web app, fetching and rendering articles, as opposed to half-a-web-app, rendering articles slowly and with a boatload of animations. The system looks like it's designed to take up a ton of power on the server and the client side, which I'm not a fan of. Now, does the fact that this test site is super slow probably because the LWN hosting is intentionally bottleknecking it as an experiment? Yeah, probably. But if you're going to make a content management system, you should probably integrate the auto-generation of smaller thumbnail images, so the main page loads in a reasonable amount of time even if the server is completely overwhelmed.

I can, of course, shamelessly plug Jekyll (a lovely static site builder); while you don't have the ability to do any subscription requirements, it is wonderfully fast. In fact, there are a few services (Render and Github Pages) that let you host any jekyll page (and, by extension, any statically built page) for free, really fast. If you truly need your javascript rendering, you can have it; but don't make me wait a minute for the server to generate it.


Copyright © 2022, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds