OpenCilk / www.opencilk.org

OpenCilk's new website in development
https://www.opencilk.org
MIT License
5 stars 5 forks source link

Switch from Netlify CMS to a different editing system? #100

Open behoppe opened 2 years ago

behoppe commented 2 years ago

Issues Over the last week or two I have struggled with configuration issues of Netlify CMS (or bugs? hard to tell sometimes), and I am seeing broader issues with the tool.

Discussion I recommend putting Netlify CMS on notice and considering those competitors. Forestry.io appears to be top of the list.

To be clear, this does not change our use of Netlify. This is only about Netlify CMS.

@cleiserson this concludes my work today trying to fix the problems you and discussed earlier this afternoon. In short, it will probably be better to switch to something like Forestry.io than to try to fix our issues with Netlify CMS.

behoppe commented 2 years ago

Flagging for my partners in process @cleiserson @dcurtisatmit @ailiop

After some research I would say that "switching from Netlify CMS" means we're looking at the world of "headless CMS," which is like a regular content management system (CMS) but uses APIs so it's agnostic about how the data is stored and displayed.

These two links indicate that there are dozens of options:

So I would say that we're not looking at a quick and simple switch (e.g., from Netlify CMS to Forestry.io), but facing something more like our original website choice of platform -- when we eventually selected Eleventy. As we did for that decision, I recommend considering our priorities. These might include

I suspect that in parallel with this, I/we will want to understand the capabilities of GitHub, because I think GH is our user's "home base" and we don't want to accidentally add some tech layer that separates us unnecessarily from GH.

behoppe commented 2 years ago

@cleiserson @dcurtisatmit @neboat: following up on the team meeting I discussed GitHub workflow with @ailiop yesterday. I liked his suggestions and I have tried to summarize them visually like so:

github-workflow

@ailiop did I get it right? (I have left out some things like "squash" for now, which we probably do want to include soon.)

There is an editable svg at https://github.com/OpenCilk/www.opencilk.org/blob/main/src/img/github-workflow.svg (which I drew with Inkscape fyi).

I look forward to discussing. I think this model reflects everything we discussed on Wednesday, including

ailiop commented 2 years ago

@behoppe I think this looks very good. I will add a few comments, which hopefully will be helpful — rather than confusing — for some details:

behoppe commented 2 years ago

Thank you @ailiop. I find those comments helpful, although I will need to think more about the second one: "collaborative edits where the source of the PR is a branch on OpenCilk/www.opencilk.org".

I just discovered a wrinkle to this model: when we disable Netlify CMS "workflow," then Netlify CMS no longer creates pull requests. Instead, each edit session ends with clicking "publish," which generates a commit to the designated branch. There is no pull request, and so there is no page-specific PR deploy-preview. I have configured a site that shows this behavior, and it's generated with content from https://github.com/behoppe/one-click-hugo-cms. So you can look at that repo for a glimpse of what I mean. In that case, Netlify CMS works on the staging branch, which has is a pile of commits corresponding to any edit I've made to any page -- waiting for me to create a pull request for all those commits and merge them with main.

So I think maybe we want to use Netflify CMS workflow in a specific limited way. All we want from that module is to generate pull requests for each page (along with the deploy-previews and comment threads etc.). We do not need it to track draft vs in-review vs ready, because we can assume everything is "pre-published" in Netlify CMS, and we will use GitHub Project to track the specific status levels.

So with the workflow screen, we might look only at "draft" and ignore "in-review" and "ready":

Screenshot from 2022-07-29 14-12-53

And with the edit screen, we might use only the "save" button and ignore all the other status and publish buttons.

Screenshot from 2022-07-29 14-17-18

Hopefully this sounds workable? I am not sure how hard it would be to actually reformat those pages, to hide the parts that I propose we ignore.

behoppe commented 10 months ago

Replying to the original 2 posts of this issue, there are important updates in the landscape of headless CMS:

I'm also impressed with how Data Umbrella uses GitHub to run their community blog, which includes this tutorial post on how they did it.