What technology to use for a small NGO website?
25 points by kcyb
25 points by kcyb
Hi Lobsters :) hope you’re having a cozy weekend
I’m volunteering to set up and maintain the website of an association/small NGO, and I need to choose the technology we will use. I would appreciate advice from the hive mind on what technologies/setup to use :)
The key constraints are:
It should be feasible to teach a motivated non-coder how to adjust website content. Most of the content will be text & images describing the organisation and its various projects, maybe some fancier formatting like tables etc. It won’t change too quickly. We would also like to have a blog with more regular posts.
It should not require too much regular maintenance. I’m more or less the only tech person involved, and I don’t have many hours to spend on serious maintenance regularly. I’m happy to binge work once every few months, but cannot promise more than a few minutes every other week.
Costs ideally <15 EUR per month.
Ideally shouldn’t be hard to make it multi-lingual
I’ve considered:
a static site generator (e.g. Zola) + git host with CI (e.g. GitLab) because of past experience and the low maintenance requirements and relative security. However I’m afraid of usability for other users. Was thinking about using a “headless CMS” but I’m not convinced it will be as hassle free and secure as advertised. I’m curious to hear your experiences
WordPress for usability for non-tech users, possibly hosted on some shared hosting. I guess this is the “standard” setting for WordPress? However my only previous experience of wordpress wasn’t so positive, as it felt like the system I had the luck to inherit was a mass of plugins glued together with duct tape, which regularly needed updates not to be a security liability, and which often had deprecated bits etc etc. And the technically “user friendly” editing was still quite tricky to use correctly. However this could have just been a particularly annoying setup.
I’ve briefly looked at other alternatives like Ghost, but tbh I’m overwhelmed by all the options. So I come to you dear lobsters :) do you have some experience/ recommendations on running a website with these considerations?
In this situation I would just go for Wordpress. I think with the new versions you can get by without too many plugins, and Gutenberg makes it very easy for non-coders to adjust the website’s content.
I spent a lot of time looking for alternatives to Wordpress, and even wrote a sort-of CMS in Ruby backed by PStore where you could edit pages with a janky WYSIWYG editor for a relative’s website, but in the end I gave that up. If you’re looking for something you can hand off to other people when you can’t contribute anymore, it’s better to just go for something that the average person is most likely to be comfortable with, and you can’t go wrong with Wordpress.
My experience with NGOs is you should pick the worst software possible, because the most important thing to optimize for is what happens after you’ve left the project, and more sleek and cool the software you choose is, the less likely the next person is to know it.
So yeah, wordpress.
I wouldn’t call something that lay people can easily use as “worst software possible”, maybe boring technology would be a better terminology?
Technical excellence, boringness, and widespread skill are three distinct axes.
My comment makes the assumption (supported by personal experience if nothing else) that the first and the third show a strong negative correlation. The second is also correlated with the third, but they are not the same thing.
Wordpress seems pretty high maintenance though (keeping it up to date with security patches, etc).
I would probably opt for a SSG (and vendor it) to help avoid maintenance, or at least a managed wordpress (but more $$).
Wordpress 6 (released within the last few years) now has automatic updates. My blog is on Wordpress and it’s incredibly low maintenance. The only thing I’d advise actually setting up is automatic backups, which can be done as a plugin, externally, or with whatever managed hosting.
I think the “hard to maintain” Wordpress days are long gone. Just stick to the defaults and you’re good.
Well that’s great to hear. Sounds like it has come a long way over the years.
There are downsides too, unfortunately.
It defaults to also auto-updating plugins as well… which you’d think would be a good thing, and can be, but without a solid established system for review/testing/ownership of plugins, you essentially have to trust that your plugins will never become malicious or buggy or get sold off to some third party who wants to harvest data from you.
If you have any non-technical users, use WordPress or Wagtail. Don’t cause trouble for the downstream users.
The key is to push hard for minimalism; the website should do as little as possible to give them as much bang for the buck as possible. They should think a lot about what they expect to gain from the website and what’s the simplest way to achieve it.
If a static site generator can do it, go for it, but test-drive the forge you use with the people who need to update the content. I’ve seen non-technical people be comfortable editing through GitHub, but your mileage may vary a lot.
Anything else self-hosted will require considerable more maintenance effort; either setting it up, or staying on top of updates.
In many cases, managed proprietary services might fit better. Others can likely recommend something. Hybrid approaches might work (e.g. SSG + managed Wordpress).
The elephant in the room is that maybe a significant chunk of their audience might be in proprietary ecosystems like Meta’s. It’s a chicken and egg situation, and it’s sad how nothing is really taking off to compete with that. I see many local non-profits on the Fediverse, but it’s difficult.
For static generation, maybe Publii would be a good fit, since it’s a desktop app?
I really like Publii for these purposes. It’s a WYSIWYG editor so perfectly fine, just like WordPress. You can pick from several nice themes, probably even make your own with a bit of effort, and then it’s just a simple desktop app that makes new posts, which you can then deploy by clicking “Sync Website”.
The downside is that if you wanna move to something else, there’s probably a bit of work involved, I’m not sure how exactly the export would work. The content is in a sqlite database. And there aren’t as many themes and plugins as e.g. Wordpress has, down the line. Also, I don’t think it’s meant for multi-user environments (unless you want to hack something like a shared dropbox and people actively “locking” the database manually by pinging each other in chat.
That’s probably not a big deal in the short and mid term, and if you get to these problems, you’re probably doing just fine.
I just wanted to fight the Wordpress crowd a bit…
I inherited one of these Wordpress sites recently and it is terrible! There are 8 plug-ins installed. Some of these seem to be unnecessary, redundant or overlapping editing tools. The plug-in that is in charge of cookie banners cannot be convinced not to show a cookie banner even though the only thing that needs cookies is the admin page. The contact form is highlighted as having errors even though it works. I recently discovered that some of the font on one page was light gray on white and I could not figure out how to properly fix it. In the end I found a way - after randomly clicking on things for a REALLY long time - to add a custom class to the element and a way to manually edit the CSS file to make the font darker for this class. I have no idea which plug-ins I can uninstall because they are unnecessary or how to detect if something breaks.
It is all super frustrating. Everybody who says Wordpress is easy is in too deep or has too much koolaid in their system.
If you inherit a Wordpress site then yes, it can be awful. I inherited a Wordpress site which had a few outdated plugins and a theme that also managed pages, and I also had issues with adding elements and changing CSS.
After a while I scrapped all the plugins and went with an official theme with Gutenberg support, and then handed it off to another person in the group who’s a graphic designer. They did a pretty good job and I basically haven’t had to touch it since! If you stick with the defaults and ensure nobody installs plugins, it’s really not bad.
This is my experience with every Wordpress site that someone has set up for non-technical people:
It starts fairly simple, but then someone wants it to do something new. They read about a plugin and install it. The plugin runs with full access to everything on the server and processes untrusted data. The plugin stops being maintained. The plugin has security vulnerabilities. The site is exploited. The organisation either needs to find a qualified volunteer on short notice or pay someone to clean up the mess.
This is why I would recommend a static site generator. If you add a plugging to a SSG, it typically runs only at build time, with trusted inputs. And, if you set it up correctly, the build runs without write access to the source, so even if it’s something like a link-preview generator that does process untrusted data, the worst that it can corrupt is a single deployment not the original content.
Apparently, it really depends on how well it is set up. I too inherited a Wordpress site once, and the battle with failed security updates was endless. At one point, it became a ritual in the standup to check whether the site was still up.
Eventually, I realized that the whole site was basically a single page that rarely changed. I opened the site, clicked “Save page as”, uploaded the HTML, etc. and gone were all the problems.
Have you considered something like Squarespace? I don’t have any personal experience with it, but, easy to maintain websites, with the ability to plop in a bunch of other functionality as necessary without any fuss, I think, is their MO.
I’ve spent some time with it, and as someone who started writing HTML in the’90s and writes a lot today, it’s fine. You learn to accept what it is and isn’t good at, and get on with your day. If it’s just for work and you can put aside the need to care, it’s great.
If you don’t see this as revenue generating for you, then unless you do want to commit time long term, you should definitely optimize for being able to setup once and then pass the management on to the users.
To go one level of abstraction up from wordpress, something like Squarespace might be more user friendly. They have a variety of templates for non-profits. https://www.squarespace.com/templates/browse/topic/community-non-profit. Wix is going to be a similar tool with similar templates https://www.wix.com/website/templates/html/communities/non-profit.
Both Squarespace and Wix have non-profit pricing as well if that fits your situation. I’d suggest grabbing requirements for the first few pages that the org needs to build and try building it out in both products.
Service from someone like Dreamhost, which will manage Wordpress for you: https://www.dreamhost.com/wordpress/shared-wp-hosting/#shared-plans Starts super inexpensively. They have been around for decades, aren’t going anywhere and are quite reasonable. There are other options of course, but I think dreamhost is a perfectly reasonable place to start at least.
If you can get your non-tech people to handle something like Zola and Github for editing, more power to you, but Wordpress is ridiculously common for a reason. Plus there is the bus factor, since there is only one of you, if you are on vacation and stuff breaks, it will be a bad day all around. With Dreamhost and Wordpress, they can get support from Dreamhost if need be.
I did a similar project for a local non-profit some years back and ended up putting them on one of the no-code website generators (Wix? Squarespace? I can’t remember at this point). That has worked well for them and I would probably go down the same path again.
I’ll second the recommendations of Wordpress and would add that the less of the infrastructure you maintain the better. Find a place that handles all of that and that you’re certain will apply security updates automatically. I’ve had a range of hosts in the past, all of which said they did, not all of which actually did the same day it was released.
I’m in a small non-profit where we’ve ebbed and flowed our technical members and I’m the only one left. Whereas we used to be able to run more stuff ourselves (such as getting an AWS Lightsail instance at ~$4 per month and running everything off that in Docker), now we’re paying more for dedicated hosting. While I hate to see more budget being put towards things that aren’t truly necessary, the realities of my availability and wanting to lower the bus factor means that is money smartly spent. We’re now using SquareSpace (which is outside the budget you describe at $16/month paid annually), but it means a lot more people can login, change some wording, hit publish, and go. Having maintained a decent number of Wordpress sites, I found Squarespace to be easier for non-technical folks to get through, but you’ll pay for that usability.
I agree with the other suggestions to use WordPress. It’s a mess, but a viable compromise none the less. And it gives you a huge number of potential hosts.
If I was in your position I would consider ClassicPress, the WordPress fork.
You’ll benefit from a slower pace of updates and arbitrary changes from upstream. There will also be less surface area for you colleagues to need to understand, and for you to break while playing with things :)
Finding a place you can host a WordPress site should be easy with your budget. I’ve also come across hosts that will provide free service to small charities etc, so worth looking for that if you think you’d qualify.
For a previous project with these exact requirements, we went with a static site generator and a headless CMS, and it turned out to be a very good choice. Our users were non-technical but had no issue using the CMS to author content. Our stack at the time was Dato CMS + React-Static + Netlify; today I would probably pick Contentful + Next.js + Cloudflare.
Also, the Wordpress setup you described sounds pretty standard to me, honestly. It’s always a mish-mash of plug-ins that barely work, strung together with a bunch of custom theme duct-tape. It’s a headache, and the UI is way too powerful / complex for simple content authoring IMO. The thing is, with a Headless CMS you can include only what’s necessary in the data model, so there’s no additional clutter.
Security is probably one of the strong points of a static website; you only need to expose the CMS to a few, select users; all the end-users will just see the statically rendered HTML. Contrast this with WP which usually needs frequent critical security updates, that can break plug-ins and essential functionality that you’re relying on.
One downside of the static generator + headless CMS combo is that, since you’re coding the website yourself, it will by necessity be a bespoke solution. This makes it harder to replace you in case you need to step down from the project. OTOH, amongst your developer friends it will probably be easier to find someone who’s willing to inherit a Next.js app than a Wordpress site.
To sum up, I would 100% pick a static site generator and a headless CMS over Wordpress. I’ve used both, and WP has never been anything but a smouldering tire fire.
There’s a nice intermediate model that I prefer, which is to run a “stock” CMS internally (likely hosted but behind auth/firewall, though an on-prem server or desktop install can work too) and publish the output as a static site. There are some off the shelf scripts to automate that publication step pretty well for a few CMS options. I don’t know if any of them are quite 100% turnkey, but they get you most of the way there with little work.
That way your users get a nice familiar interface to update content, and developers just maintain a CI script that handles publishing and don’t need to care much about the CMS itself, and the CMS is less of a security concern as it’s not publicly accessible at all. Also you’re actually publishing static content, rather than publishing a pile of javascript that generates static content.
Besides increased security and low maintenance, a static website is also very fast when serving the content.
One of the drawbacks is the latency when making an update/publishing a new post. If this doesn’t happen hourly, it shouldn’t be an issue (my users understood the trade off and did not care).
For anyone interested, here is an example of such a website I maintain with Astro+DecapCMS : https://codeberg.org/dpsg-toelz/homepage
I love Hugo, I use it for my personal website.
I’ve recently completed a website redesign for a volunteer-run group and had to make similar choices.
The requirement to have a blog is the hard part that kinda pushes you into CMS territory, and I can’t help you there.
My requirements included your four requirements, but also included:
That made me settle on a plain HTML website on https://neocities.org/.
Hear me out: you may think HTML/CSS is too hard for non-coders, but non-coders also struggle with website builders and need hands-on training before they feel confident volunteering to do it. The difference is that website builders come and go, but HTML will likely outlive all of us, so that knowledge remains useful far into the future, for other orgs or other website redesigns.
For simple content updates, it’s not too much different to teach someone about tags like p, ol/ul, li, h1-6, etc. as opposed to teaching someone how to navigate through Wix to find the page and paragraph to edit.
Accessibility is easy to achieve with plain HTML, whereas website builders may simply not expose important functionality to you like the ordering of elements in the markup, or “skip to main content” buttons.
Translations were the hardest part. Neocities doesn’t provide templating, so the second language version of the site is a fully separate copy of the files in its own subfolder. This is not too bad for 2 languages, but for more than that, you will need better tooling.
If the needs are low, I’d say go to a hosted service that include a web builder, like wix or squarespace. Then complement with Saas offering for whatever transactional service you need.
My wife business is on square space + Google workspace for email/calendar/office + an online booking service. She is 100% autonomous despite being non technical. I helped her setup the things initially and that was pretty much it (she even added the booking service herself)
Really, for a non technical user, you want something that take care of itself and don’t require any maintenance, and Saas is perfect for that.
When we were building the website for BESA, we actually did a lot of research into this exact question, including meeting with about 5 other NGOs to get their experiences. We came down with 3 proposals:
All-in Google: The group can get everything it needs from a single company, the pricing is accessible, and everyone knows exactly who to complain to if anything goes wrong.
WordPress: Also affordable, mostly not difficult for non-programmers to work with. This was what almost everyone recommended we choose.
FOSS: Cheapest option, and arguably best in a values-alignment sense, but you have to have actual people taking responsibility for it, and the more obscure your software is, the harder it would be to replace that person if they left.
We chose WordPress. I was disappointed personally, but I understand the reasoning for the decision and agree it makes good sense.
I was in this boat recently and used Google Sites, plus cheap name registration. I kinda hate that I picked Google Sites, but it is a language my non-coder team speaks, the edit and view permission models fit Google Drive and Groups (which we already used), and it’s free (for now, even for hosting at a custom domain).
It works fine and that’s what I needed. https://www.cyberambassador.net/
Anything you want, because it’ll be 100% locked into Salesforce in 2–3 years and they’ll be laying off staff to afford the SF fees.
(beware of the “free trial” of Salesforce. It’s not free for long)