I've been looking into a CMS for websites I'm creating for various small non-profit organizations and whoa, I didn't realize how complex the CMS world was in itself! In the past I've only worked with Wordpress and Umbraco (testing an established CMS through my job) and I'm relatively new to web dev so my understanding of CMSs is somewhat limited at this time. I've been coming across terms such as 'headless CMS', 'baking style', 'static site generators', among others.
Can someone explain to me all the different variations of CMSs that I should be aware of when selecting one type to work with - like I'm five?
Top comments (6)
These are just my opinions. They are sometimes terribly wrong, sometimes I am told they are insightful.
Ghost is a very popular CMS system. Easy to host, gives you a GraphQL API for the front-end, lots of templates available for sale if you don't feel like making one your own. Ghost is probably going to be the winner here.
Headless CMS systems basically provide a backend interface for you and your team members to create data item templates that staff can fill out. Some sort of API will be provided for you to display the front end of the application however you please...you can do a SPA with your favorite JS framework, write an ASP.NET tier, the world is your oyster.
I really like this concept because it gets rid of a lot of crap you don't need in content management systems and gives you full control. My experience has been that most CMS systems will handle 70% of basic use cases without issue, and the other 30% you need to accomplish will have you fighting the framework, rewriting significant portions of the default CMS behavior, and having to reverse engineer functionality.
Things to look for in a CMS system
Documentation: Lots of systems have limited or completely absent documentation. It's either irrelevant for the current version, 2/3 of the user guide is just a page that says TODO: Instructions later, or it is out-of-date and you are confused and frustrated why you can't get any of the code you work until you realize they are using a version that launched 3 years ago.
Community: When that documentation fails you, and it will, you will be relying upon the community. Try to find some bloggers for the CMS you are interested in. Hopefully, they have a MVP program that should give you a list of knowledgeable and respected community members who have wisdom to share. If they don't have the MVP program, the CMS is still in its infancy, and if there are no bloggers, then there are likely very few people contributing to the CMS development or willing to help other developers.
Support: When all of the above fails, what support can you get commercially and what will it cost? They'll probably try to push you to get a bunch of consultants to come in and burn through your budget providing information which may or may not be valuable. When I worked with Kentico consulting, I was very underwhelmed; I am pretty sure the consultant I was working with was not even a C# developer.
What is their ticket support turnaround? Are they going to be in business in a year to answer your questions? Do they have a knowledgebase or wiki built from their lessons learned answering tickets?
Easy deployment: Someone on your team is going to be taking on some sysadmin tasks when it comes to patching the CMS, performing deployments, security hardening, etc. Is someone on your team comfortable doing this and experienced enough that they won't make an embarrassing mistake that gets your site pwn3d? Some CMS systems are impossible to integrate into a CI/CD pipeline at all, or at least without buying lots of vendor-specific tooling.
Vendor lock-in: How easy is it to take your data and walk away? Are you locked into some proprietary format? Is everything a bunch of JSON and Markdown files that you can import easily into a new system? Is the code you are writing to interface with their system of any value on its own, or is it all just tying together a bunch of APIs that have probably never been tested before?
As a C# developer, I've never used Umbraco. I've heard decent things about it, but I wouldn't be willing to consider a .NET CMS unless it is built on .NET Core at this point in time, which I think they are still struggling with. I wouldn't use Kentico again. Sitecore is a pain in the ass and overpriced, but you can do some cool things with it especially if you understand how to use all of the marketing features.
Are you working alone, or do you have a team to rely on? I would ask for guidance from more senior team members about what they would pick. Their word is not gold, but if they explain their train of thought, it might be really beneficial. I am quite happy to offer my opinion on things.
Having worked for a non-profit, you want something that is cheap, if not free, because their IT budget is close to 0 and most of it is already being spent hiring contractors and consultants at $200/hr to fix basic issues. Find something that is intuitive and that the staff can use without strong technical guidance, because most non-profits don't have strong technical leadership.
They might tell you they KNOW this CMS is perfect for them and it is the answer to all their problems. From my experience, their solution is probably the CMS that looks and behaves the most similarly to the previous defective CMS system that they are trying to get away from.
Do they have any requirements? If you don't have requirements, stop now and get some. What do they want to accomplish with this site? How important are analytics and how are they limited by privacy law? How much content is actually going to change, and how often? What server resources do they have and can that be expanded if needed in the future? Do they have a webmaster? Auditing is crucial, along with constant backups, because someone who has no business being admin is going to get those credentials and completely tank the backend at some point. If they don't know what their purpose is with this site (15% increase in membership applications, 20% increase in page views from weekly newsletter, 10% increase in some conversion rate, stop right there. If you don't have measurable outcomes, you are going to be stuck in a project that never ends and no one will every be satisfied. Don't be afraid to put your foot down and politely demand leadership participate in this process.
Thank you, thank you - this is great stuff, and you've given me a lot to think about. Clearly, I need to find out what the exact requirements are but I suspect in a nutshell, the one non-profit, a local theater group I'm working with just want a simple, pretty site that they can update once in a while (via a blog and an announcement section of upcoming shows). Nothing major (famous last words?). Before I go on, I need to clarify this is a side project, not a part of my job, so I'm not tied to using .NET (and I was leaning towards to using JS for this project so it'd be easier for them to find a developer who can maintain this site, should I need to pass the reins to someone else). I'd be the sole developer for this project and would be willing to maintain it over the years.
Because of the size of their agency and very, very minimal budget, they'd like to use a CMS that is free, easy to use, and doesn't require a lot of upkeep/hosting expenses.
In terms of cheap, static site generators are your best bet. It's a static image of your site, so it can be cached easily and there are services like Netlify that will host it for dirt cheap or free. I have used Hugo and liked it a lot after the learning curve, but it honestly was pretty easy to pick up. I also never finished that project, I need to go back and do that, whoops.
Jekyll is the other commonplace static site generator and has been around a little longer. It works with GitPages so a lot of devs tend to know it. You can actually make the site a Git repo and supply a custom URL, and you have hosting and version control taken care of. Lots of themes exist, many of them free.
For things like forms or dynamic data, that's where you'll run into a challenge. You can use AWS Lambda or Azure Functions to handle form submissions, or you can just embed in a form builder from whatever marketing service they use, if any. They would just need to edit Markdown files to update content, and I would hope someone in the organization feels brave enough to take that part on themselves.
If they truly feel they need a CMS (my guess is they don't), I would go for Ghost. Hexo looks pretty cool but no experience with it and it looks like your live site would be a great beta test for them.
Also, some services have non-profit discounts if you can get proof of their state certificate as a non-taxed entity. About 50% of the time you can get a discount of some sort if their is something paid you want to try out. For example, the creator of Elmah.io (error logging service) gave me a 50% discount when I worked at a nonprofit just because I asked and his service is still not very popular in the US.
Once more, thank you for an informative response - much better than the results I was getting from my Google searches. ;)
Thank you! I am trying to get my blog set up this week so I can get my writing out there more easily.
If you have any more questions, feel free to shoot me a message and I'd be happy to answer! I have been playing around with a couple headless CMS systems over the weekend, but none have been worth the monthly rate they want to charge me.
Absolutely! Go get that blog up and running so you can write about your experience working with those CMSs, I'd be first in line to read it. :) Once more, thank you.