taiwangoldcard / website

Taiwan Gold Card Community website
https://taiwangoldcard.com
Other
43 stars 18 forks source link

Feature Request: Method to edit content for non-techical contributors #46

Closed fifieldt closed 4 years ago

fifieldt commented 4 years ago

We have the potential (and need) to significantly expand he number of contributors to the content portion of our website.

The current editing process works well for those with knowledge of git, the command line and markdown syntax. However, it also means that 100% of our contributors come from a technical background.

We need a way that people who have excellent writing skills but no technical ability can just jump in and propose changes. This should be something they can run through their browser.

The implemented feature should ensure that the edits proposed by new editors is subject to approval before publication, and that all edits are tracked in version control and attributed to individuals.

pqvst commented 4 years ago

I have explored "CMS" editors that work on top of GitHub/markdown in the past, but never found one I felt worked well. For example: prose.io or cloudcannon.com - Maybe there are some other options for hugo (instead of jekyll).

fifieldt commented 4 years ago

On my reading list:

https://www.portent.com/blog/copywriting/content-strategy/content-with-github-markdown.htm

fifieldt commented 4 years ago

I have looked up a few markdown editing tools:

Looking into hugo-specific options

fifieldt commented 4 years ago

I think an ideal workflow for us would be

  1. Writer opens a website, makes edits in a WSYWIG editor, clicks save
  2. A pull request is opened on github, which Experienced Folks can approve
  3. On approval, the writer gets credit for contributing to the website.

Conclusions so far:

I am intrigued by Federalist, which was specifically created for government agencies. It looks like that might have the concept of an 'approved' version of the content and a draft version that is implemented in git.

iansinnott commented 4 years ago

What's the reasoning behind a pull-request based workflow?

I'm thinking maybe there's a platform that has solved content contributors needing authorization to publish. I bet this is a solved problem, it just doesn't fit into a pull-request workflow.


Aside: Editing markdown on github is a decent stopgap measure IMO. It is indeed markdown, but formatting is far less important than the content itself, so contributors could add really meaningful content without needing to understand MD specifics.

fifieldt commented 4 years ago

Hi @iansinnott , I really appreciate you questioning assumptions - it's very valuable at this stage.

I suppose the underlying factors we're trying to hit are

these can of course be achieved outside a pull request workflow, I was just aiming to reuse as much as possible of what we have right now.

I agree that editing on github is a nice stopgap - I believe that's how Jonathan edits. The problem comes when needing to synch a fork with master, I think.

geekyme commented 4 years ago

Tried forestry.io today. It works quite well, zero-code change. Here are some screenshots:

Screenshot 2020-08-25 at 9 03 03 PM

For PR workflow, what about doing something proposed like this:

  1. Forestry CMS allows non-technical folks to edit content on the preview branch.
  2. Our CI will deploy staging site from preview branch.
  3. If all looks good, developers can then open a PR to "promote" preview branch to master
  4. CI deploy production site from master branch as usual
iansinnott commented 4 years ago

I agree that editing on github is a nice stopgap - I believe that's how Jonathan edits. The problem comes when needing to synch a fork with master, I think.

Oh totally forgot to reply to this. Heh... I was thinking you just edit on master 😑

@geekyme is that the forestry workflow out of the box? Or would we need to set up some "real" CI beyond the ./deploy.sh script?

erickhun commented 4 years ago

oh really nice @geekyme !

I didn't test forestry but :

geekyme commented 4 years ago

@iansinnott Forestry doesn't support any workflow out of the box. So therefore we'll still need to rely on our own CI / scripts for the branch promotion.

What forestry appears to do well is it's synchronization with our GitHub files. So all our pages seems to appear on forestry for us to edit. We can create new pages from forestry too. @erickhun

Do we also need a custom domain name for the CMS? I'm guessing not since it's an internal tool.

Maybe I can invite you guys to try on my instance? You can send your emails on our line group.

geekyme commented 4 years ago

https://www.netlifycms.org/docs/configuration-options/

Just had a closer look on this. Looks like netlifyCMS’s editorial workflow fits what we want for the PR workflow too

pqvst commented 4 years ago

Netlify CMS looks pretty interesting. It looks like it's open-source (✅). But, can it be hosted/used anywhere (i.e. it doesn't lock us into using Netlify)?

geekyme commented 4 years ago

It can be hosted anywhere (but that brings complexity if we run it).

Overall, I'm still on the fence with NetlifyCMS. What I don't like:

Still looking to see if we can find a forestry-like CMS w/ PR flow. But I think if we can't find it, perhaps we should re-consider whether we need this PR flow.

geekyme commented 4 years ago

Ok folks, I take back what I said about Netlify CMS. Had a chance to dive a bit deeper today.

PR flow works, check out the list of PRs auto managed by netlify CMS.

Front matter editing works, and preview also works:

Screenshot 2020-09-13 at 8 13 38 PM

They even got a neat kanban board to show any new posts you are creating that's still under review:

Screenshot 2020-09-13 at 8 15 29 PM

Next steps:

  1. I would like to invite you guys to try it @taiwangoldcard/tech , lets continue this discussion in slack and give me your emails there.

  2. Depending on whether you guys like it, I can then make a PR to the master with my changes.

erickhun commented 4 years ago

love this @geekyme . This will definitely unlock non-code person to add/edit the content

As said on slack, my concern is the Review process where everyone can publish it . But in the other hands, it’s like our process in github - everyone can merge the PR or push to master, so it isn't really a problem?

If we all agree and go ahead :

fifieldt commented 4 years ago

If you are worried about that stuff (or for the future), what I recommend is that the CMS is hooked up to a branch other than master. Then you can allow the world to edit, but people with repo rights merge in the edits to master

erickhun commented 4 years ago

yes @fifieldt

An other issue is the ability to see what was the change in the netlify cms UI. Someone reviewing the change there wouldn't actually see what was the change .

So this would be tho workflow:

(this flow sounds a bit over-engineered and with lot of friction imo)

fifieldt commented 4 years ago

Yup ... if we want a workflow that involves 'approval' before publication that sounds about like how it would end up.

Another option might be to accept changes by default and then revert if issues are encountered.

geekyme commented 4 years ago

this create a PR to GitHub ( is it possible?)

Yes for example this PR is created by netlify - https://github.com/geekyme/taiwan-goldcard-website/pull/9

PR is approved refused (but what happen for discussions? people will have to switch between netlify and GitHub?

Unfortunately discussions probably in github.

A lot of friction indeed.

geekyme commented 4 years ago

Ok guys, I found a flag in netlify CMS that helps things a bit regarding the lack of roles. publish: false. This flag will hide the functionality for CMS users to publish.

TLDR; CMS = For people to propose edits. Github = For people to approve and merge.

They can only propose edits. Heres the flow:

1. User create / edit a page in CMS.

Screenshot 2020-09-19 at 8 17 19 PM

2. Once they save, a PR automatically gets created at our repo:

Screenshot 2020-09-19 at 8 18 30 PM

3. They can set the status in netlify CMS to "Ready", then the github tags automatically change

Screenshot 2020-09-19 at 8 21 06 PM

4. Once merged, site automatically deployed & updated as usual:

Screenshot 2020-09-19 at 8 22 10 PM Screenshot 2020-09-19 at 8 22 04 PM

5. CMS status will be automatically updated to publish on merge:

Screenshot 2020-09-19 at 8 28 36 PM

WDYT @fifieldt @pqvst @erickhun @iansinnott ?

iansinnott commented 4 years ago

Awesome, thanks for figuring this out @geekyme

unfulvio commented 4 years ago

Probably I'm late for this or maybe it has been mentioned already, but how about https://getpublii.com

geekyme commented 4 years ago

yep checked out publii as well. I prefer netlifyCMS as it doesn't require a desktop program to be run for editing the site.