Closed iHiD closed 4 years ago
This is enough for me to work with. I agree with having flags first and worrying about roles in the future, it seems like a big feature to bake into this whole thing.
OK, great. I'm also not sure how you want to work it in terms of maybe having one feature branch for the whole thing with a draft PR, and then a series of PRs to that branch?
I'm not yet sure how I bunch it up into small PRs. I'll come up with a list of small tasks that we can go through to review.
Cool. I'll leave you to work it out :)
@iHiD Can you explain what the about_key
is for?
So the about key would be the merging of the about_type
and about_id
(e.g. Exercise#192
) but having it as a materialised string makes it much easier to search for things. So for example, we can have a query like WHERE about_type IN ("track_13", "track_17", "website", "product")
rather than having a much more complex query (and slower indexes) of checking both the about type and id for each. Does that make sense?
@iHiD I think we're okay with this. I just need to auth all our Twitter accounts which I'm holding off on until I get tired.
Which I'm holding off on until I get tired.
Ha! That's good thinking.
OK, so I guess I need to do some styling, then I'll start writing a blog post up about this, and start to talk to maintainers about it. Excited!
This issue outlines an Exercism project. As with all issues in the
exercism/wip
repo, this is an internal issue restricted to the core team. If you have something you need to discuss on this please open an issue at github.com/exercism/exercism.We are going to build a changelog that allows the team (maintainers, website, CLI, community) to update the community on improvements and changes that are being made.
The entries in the changelog will be disseminated via means such as the website (through a new dashboard, which falls outside of the scope of this project) and through Twitter (which will serve as the MVP for dissemination in this project).
The changelog data model
ChangelogEntry
, with:title
(varchar 255) - This is the minimum requirement - a sentence that says what's happened.created_by_id
(user_id foreign key) - The user who adds the created_bydetails_markdown
(nullable text) - Some optional markdown describing it moredetails_html
(nullable text) - details_markdown parsed into HTML.twitter_copy
(nullable varchar 255) - some optional text that will be tweeted.published_at
(nullable datetime) - This is the flag for when something is publishedtweeted_at
(nullable datetime) - This is the flag for when something is tweetedabout_type
/about_id
(nullable polymorphic belongs_to) - These will be something likeExercise#192
orTrack#23
about_key
(nullable varchar 255) - This will be a key with regards to filtering/sorting. I prefer having an explicit key to having to build more complex (and slow) queries on the polymorphic columns.info_url
(nullable varchar 255) - The URL of a website we want to link to for more information (e.g. a PR)The changelog editing UI
changelog_admin
namespace with an entries controller (exercism.io/changelog_admin/entries)may_edit_changelog
which controls access to this controller (see note 1)show
page, which, when clicked, sets the published_at.Viewing in the UI
exercism.io/changelog
, which lists everything that is published, ordered by published at.details
below it (if available), then a link below."View PR on GitHub"
if theinfo_url
is of the format "https://github.com/.../.../pull/...""View commit on GitHub"
if theinfo_url
is of the format "https://github.com/.../.../commit/...""View GitHub issue"
if theinfo_url
is of the format "https://github.com/.../.../issues/..."show
page too (exercism.io/changelog/:id
), but these won't be linked from theindex
page. The show page should just be a replicate of the individual block on theindex
page. I think it's better to duplicate the code rather than share a partial as they might diverge.I will add some styling with @nicolechalmers to both pages once they're ready.
Tweeting
tweet_copy
is not blank, it should fire an ActiveJob to tweet it out.info_url
, then the tweet should end with the theinfo_url
.Notes
1) We are going to introduce a permissions setup at some point, rather than adding flags onto users. However, rather than blocking this project, I think we should just go for the boolean flag approach for now. If you would like to think about roles first, then I'm happy to discuss that, and we could look at adding something like rolify. Ping me on Slack if you'd rather than this approach and we can schedule half an hour to discuss.
@kntsoriano There's probably lots to discuss here. Feel free to async with me either here or Slack, or arrange a time to sync up if you want to chat it all through. I'm pretty free at the normal time this week and next.