Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ghost 0.7 Overview #5503

Closed
ErisDS opened this Issue Jun 30, 2015 · 3 comments

Comments

Projects
None yet
2 participants
@ErisDS
Copy link
Member

commented Jun 30, 2015

This is a place for me to bring together an overview of all of the work that's currently ongoing towards the next release of Ghost, which will be 0.7.

With Zelda, we're undertaking enormous changes to the design of Ghost's UI. At the same time we're hoping to land a number of new features and improvements which build on the freedom Zelda gives us and also leverage the major version bump as a hint things might be rocky during the upgrade this time!

There are 3 aspects to the changes that are going into 0.7, each covered in more detail below.

  • Zelda
  • Public API
  • Data Migration

Zelda

Zelda is the UI redesign projects, which also includes a few major functional additions and changes:

  • autocomplete search box
  • new onboarding flow
  • overhaul of notifications, alerts, and inline validation
  • rebuilding the tag component

All of this work is tracked separately in #5314

Public API

We've been talking for a very long time about making our JSON API publicly accessible via OAuth (See the OAuth Epic).

The plan is to make this a reality in 0.7, but in a limited way: The read-only public endpoints will be made available to themes via the {{#get}} helper and also to public clients, but without a UI for registering new clients.

This means that it will be possible to fetch what we consider 'public' data - published posts, tags, and active users. This will be considered a 'public beta' of the API.

The {{#get}} helper allows for accessing that data inside a theme, so that it is possible to fetch a tag list, or recent posts, etc. (Issue #4439)

JavaScript clients which run in the browser will also be able to access the data, providing they have a client id (See #4180). It will be possible to insert new client ids directly into the DB (a UI will come later). We will also make a default id available so that themes can easily make use of ajax to access the API (see #4184).

As well as making the data accessible, we need to push to clean up the API and ensure that the available endpoints are truly useful. The following are a set of must-have and nice-to-have API changes:

  • Validation (issues #2756 & #2758) - in progress by @ErisDS
  • Pagination with offset instead of page (#5093)
  • Make the 401 error format consistent (#5499)
  • Add fields parameter (issue #5601)
  • Add the filter parameter (issue #5604)
  • Move top level browse params to filter (issue #5463)
  • No more staticPages parameter + better pages support api (#5151, requires #5604)
  • Add order parameter (issue #5602, ref #5463)
  • Finish 'pipeline' refactor #5508 (hold until validation is complete)
  • Joins & relations cleanup (issue #5615)

Handling permissions / auth:

  • Public permission handling (#5614 partial PR in progress)
  • Remove auth from public endpoints (#4181)
  • Implement auth for public clients with a client id (#4180)
  • Default client entry (#4184)

Last but not least, the get helper is currently a single item:

  • Initial get helper (#4439)
  • Update get helper to work with Filter param (Issue TBD)
  • Improve the has helper (issue TBD)

Extras:

  • Improve error messages
  • Figure out what to do with versioning

Data Migration

Ghost's internal migration system centres around changes to the database schema. For 0.7 there are a number of candidates for things which may change the schema. Once a schema change is initiated we can also hook in other migrations that don't affect the database schema directly, but require a database version change to be triggered.

Possible schema changes:

  • oAuth clients (#4174) - this is required to make public API access a reality
  • user tour (#5171) - an additional field for the user table, relatively straightforward and perhaps worth doing now
  • post preview (#5097) - the spec for this is a little simplistic, so it may be worth doing this later when the spec has been reviewed and improved
  • tag order (issue TBD) - issue on this coming soon, would be good to get done

Other migrations that need to be added in:

  • jQuery removal (#5298) - this is a long awaited change, it would be preferable to get this done
  • Change private blog settings (issue #5614) - this is important for ensuring the API remains secure when public access is added

Extras

  • Update top-gh-contribs to better reflect who contributed to a release
  • Refactor, clean up and improve test-coverage on Ghost's middleware #5286
  • Prep work for channels (see Channels 101)

@ErisDS ErisDS added epic api labels Jun 30, 2015

@ErisDS ErisDS added this to the Zelda milestone Jun 30, 2015

@sgoodwin

This comment has been minimized.

Copy link

commented Jul 17, 2015

Public API bits are a start. Yay API finally!

cobbspur added a commit to cobbspur/Ghost that referenced this issue Jul 20, 2015

Update top-gh-contribs dependency
refs TryGhost#5503

- updates package.json to using 2.0.2 version of top-gh-conribs
- updates gruntfile, using moment to calculate time period to observe
- new version of top-gh-contribs is not related to top 100 contributors therefore returns more users
- observed timepsan is reverted to 90 days now that top-gh-contribs fetches enough contributors

ErisDS referenced this issue in sebgie/Ghost Aug 23, 2015

remove jQuery theme injection in ghost_foot helper and add cdn link w…
…hen migrating

closes TryGhost#5298
- remove all harcoded instances of jQuery throughout the front-end of the blog
- add migration function to add cdn link to ghost_foot code injection when migrating up from version 003
- migration version bump
@ErisDS

This comment has been minimized.

Copy link
Member Author

commented Aug 26, 2015

Once #5706 is merged, this work will be as complete as it is going to get for the first 0.7 release. Autocomplete, public API & get helper work will follow in a subsequent release - so punting this to the Post-Zelda milestone.

@ErisDS ErisDS modified the milestones: Next Backlog, Zelda, Post-Zelda Aug 26, 2015

sebgie added a commit to sebgie/Ghost that referenced this issue Aug 31, 2015

Change type for private blog settings
refs TryGhost#5614 and TryGhost#5503

- update private blog type, including update to settings.edit
- switch order of populate settings & update fixtures + populate all settings

Private blog settings should not be returned by public endpoints
therefore they need a type which is not `blog` or `theme`.
`core` doesn't suit either, as those settings don't usually have UI
To resolve this, I created a new type `private` which can be used
for any setting which has a UI but should not be public data

ErisDS added a commit to ErisDS/Ghost that referenced this issue Sep 1, 2015

Change type for private blog settings
refs TryGhost#5614 and TryGhost#5503

- update private blog type, including update to settings.edit
- switch order of populate settings & update fixtures + populate all settings

Private blog settings should not be returned by public endpoints
therefore they need a type which is not `blog` or `theme`.
`core` doesn't suit either, as those settings don't usually have UI
To resolve this, I created a new type `private` which can be used
for any setting which has a UI but should not be public data

ErisDS added a commit to ErisDS/Ghost that referenced this issue Sep 2, 2015

Change type for private blog settings
refs TryGhost#5614 and TryGhost#5503

- update private blog type, including update to settings.edit
- switch order of populate settings & update fixtures + populate all settings

Private blog settings should not be returned by public endpoints
therefore they need a type which is not `blog` or `theme`.
`core` doesn't suit either, as those settings don't usually have UI
To resolve this, I created a new type `private` which can be used
for any setting which has a UI but should not be public data

@ErisDS ErisDS removed this from the Post-Zelda milestone Oct 9, 2015

@ErisDS ErisDS modified the milestones: Post-Zelda, Public API v1 Oct 9, 2015

@ErisDS ErisDS self-assigned this Oct 13, 2015

@ErisDS

This comment has been minimized.

Copy link
Member Author

commented Oct 20, 2015

Closing in favour of #5976 which is tracking on going work

@ErisDS ErisDS closed this Oct 20, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.