Skip to content

Instantly share code, notes, and snippets.

@ErisDS
Created November 18, 2014 17:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ErisDS/79c889ecba53f0db5614 to your computer and use it in GitHub Desktop.
Save ErisDS/79c889ecba53f0db5614 to your computer and use it in GitHub Desktop.
Road to 0.6

The Road to 0.6

This document aims to clarify the big picture vision for where we want Ghost to be in terms of features and function when we declare it version 0.6.

Note: There are several places where further clarification is needed in terms of more detailed write-ups, research, and issues being clarified or raised. These are a work in progress

We took a lot of time this year to rewrite major parts of the codebase, and that resulted in a big gap between releases. We need to make up for that by shipping features in order to reach feature parity with other similar platforms. This guide aims to clarify what features are missing, their importance and how we are going to ship them.

The Top 10 Features we've gotta have

  1. Spell check
  2. Code Injection
  3. Sitemaps
  4. Post Scheduling
  5. Tag Management
  6. Next/Prev links (the query helper)
  7. Public API (OAuth)
  8. Navigation menu
  9. Custom Permalinks
  10. Post Filtering

These are the top missing features, ordered by importance and determined by a mix of most requests / votes and the value of that feature vs its complexity. Varying technical complexity prevents us from shipping in exactly this order, however it is important to have clear priorities.

In detail:

1. Spell check

This one has always been a bit of an embarrassment so we're super keen to ship it. Recently we developed a plan to get it out the door, so it's currently a WIP expected to ship in weeks rather than months.

2. Code Injection

Code Injection provides users with a simple interface in the admin panel to paste code snippets into so they don't have to edit their theme to add things like GA.

This has an open PR, which got blocked firstly because I wanted to test how it behaved with various code snippets and themes. As a result of testing, it seemed best to ship it with the ability to detect if, for example, the active theme has the {{ghost_head}} helper. Theme feature detection is tracked in issue #4319.

Moving forwards, we should merge the PR with the feature behind a config flag. The theme feature detection issue will be my focus after the editor and should be ready for other people to help with in a week or so.

3. Sitemaps

A small feature that's important for SEO and therefore key to being an awesome blogging platform. This feature is a WIP at present but is expected to land within the month.

4. Post Scheduling

It has become apparent that this feature is blocking bigger organisations from using Ghost. It will be technically challenging to solve. We're currently researching potential ways to solve it / speccing it out.

5. Tag Management

The interface for managing, editing and removing tags is going to provide for all kinds of interesting opportunities.

It is currently partially implemented behind the config flag 'tagUI', and also requires several updates to the Tag and Post API to make all the features possible.

This is an ongoing WIP with a large scope. It needs issues raising for the next steps.

6. Next/Prev links (the query helper)

This for including a link to the next or previous post at the bottom of a post. It depends on an API update (see issue #4262) and also the query helper.

The API work is planned and marked high priority but not yet in progress. The query helper needs to be specced out and have issues raised for it.

7. Public API (OAuth)

Adding OAuth to the API so that external apps can access the API safely is getting a lot of pressure from the community. It should add extra value by encouraging more contributions. It is currently blocked on a tree of dependencies stemming all the way back to permissions migrations.

First and foremost, we need to start unblocking progress. The first thing we need to solve is permissions migrations, which is currently a stalled issue. There are also several issues that could be worked on in parallel that need clarifying.

8. Navigation menu

Similar to code injection, allowing users to build a simple navigation menu will help reduce the need to edit themes. The idea is to provide a simple UI to set the title and URL, add a new item and reorder items.

This issue is currently being specced.

9. Custom Permalinks

Ghost has supported all manner of different permalink formats for some time, but only by editing the setting directly in the DB. The UI for this has been designed and is ready to build. There is also some functional work needed to ensure all the permutations work 100% and are well-tested.

Some of this work is in progress, other parts need issues.

10. Post Filtering

For users with a lot of posts, the content screen doesn't currently cut the mustard. Adding a menu to allow users to filter this is a step in the right direction, but is intended as an intermediary step whilst we work on adding full search capabilities.

This issue has a stalled PR and needs picking up again.

Infrastructure Projects

  1. Permissions Migration
  2. File System Abstraction
  3. Image Processing
  4. DB Migration Improvements

Each of these projects will help us to build out major features for Ghost. Below is a quick blurb on each item - none of them are currently in progress.

1. Permissions Migration

Issue #3910

Currently we have a set of permissions fixtures which are loaded into the DB when Ghost is started. These have undergone one wholesale change in the past, so we were able to simply remove the old permissions and create new ones. Now we need to create a simple way to add new permissions for additional endpoints.

The issue needs rewriting & improving.

2. File System Abstraction

Issue #2852

Assuming that it's ok to use fs, and that all the images, themes and other bits and pieces will be in the local file system is a bad thing. It makes it hard to use Ghost with a cdn and also has implications for hosts with a transient file system like Heroku.

This work is partly done, we have a storage abstraction for images, but it's not used for everything which it ought to be. We also need to make it pluggable in a simple way so that devs can provide a different storage layer with a simple config change.

The issue needs rewriting & improving.

3. Image Processing

Issue #4453 Adding Imagemagick as a dependency is too complicated, so we need a pure JS way to do resizing, cropping and removing of exif data for images uploaded to Ghost.

4. DB Migration Improvements

So far we're able to add, remove, rename and drop unique constraints on columns in Ghost. In order to make some improvements and build more features we also need to be able to change column types / sizes and we need to make the whole process tonnes easier.

This needs better issues.

The future

There are obviously numerous other features and projects that we need to deliver, like search, i18n, post revisions and diffs, the app platform and tonnes more. After 0.6 the likely focus will be on building one or two bigger features like search & image manipulation. A 'Road to 0.7' issue will appear closer to the time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment