Software for NGOs with an undersized budget

Since over 4 years I am struggling with the contradiction between a Central-East European, absolutely-non-profit budget and the need to work efficiently, to present ourselves as professionally as possible and to keep software security in a good shape. This a particularly tricky job where private contributions to office running costs are even lower than the local bank charges, which you pay both for holding the account and for every incoming money transfer and which are extra high for charities. It probably goes without saying that software and Web administration are increasingly rejected by donors as budget items in projects, which are requested to be tightly goal oriented, understaffed and cost efficient and which are supposed to promote the donor’s brand.

IT work is of a kind that is well done if you don’t see it. I have experienced, however, countless nerve-wracking problems with inaccessible pages and countless breakdowns after updates, and many of them were caused by my stupidity. In fact, if you decide to run your own NGO without the budget for a webmaster, you need to allocate at least ten or twenty hours per week for installation, updating and in-house service, and easily more.

Better safe than sorry. I know. But we cannot afford to have a duplicate web site where we thoroughly test updates in a sand-box before doing “the real thing” on our production site. We simply have to take the risk that, as a worst case scenario, visitors will see for 5 or 10 minutes a horrible error message, while I am returning the system into the state before the unfortunate update.

Taken to the extreme, non-profit means to cope with these and similar flaws all of the time. There is no way out unless you can pay for it.

When I read the manuals and discussion forums of software, both proprietary and free, I quite often come across remarks like: “If you don’t get it working on your cheap provider, simply migrate to a better one”. Or: “Go to your local computer store and upgrade your hardware”. Well, it’s not that easy if you have just spent your last coins for printing 50 leaflets that you desperately need on your next public event. And, after all, yes, you also need some spare money for your lunch tomorrow.

You will have to learn how to operate with moderate means. Don’t expect wonders, but you will survive. You can consider yourself successful when people don’t notice that you do your Web all alone as self-taught volunteer.

Sometimes I stumble upon places where you find recommendations specifically for non-profit users. But still, most of them were written in North America and West or North Europe and they assume that your supporters are able and willing to pay a membership contribution, that technology is affordable with average NGO-incomes, that you have 20 hours per week of free time to fine-tune the code and that companies in your town grew up in a tradition of corporate responsibility. I personally often feel too disillusioned (or should I say: embarrassed?) to reveal that our organization cannot even afford a super cheap 50$ non-profit subscription, let alone the offer from one company in reply to my request: They have decided, they wrote me, to support our good work by offering their software with 50% discount, hence reducing the price to only 200€. With sincere thanks I have had to reject.

So back to the roots. And if you are a bunch of inveterate optimists and don’t want to steal software (even though society often takes your work and “forgets” to pay for it) you have to resort to free software.

I have started here to write down my experiences and try to extract some advices. Hopefully they will help my fellow volunteers out there to avoid the same mistakes and to make their lives easier. Even though we work for free, it doesn’t mean we have time to waste.

For a start, some advices in a nutshell

1. Invest into professional and trustworthy appearance

Look at other NGOs’ Web sites, get inspired by them and learn from their mistakes. There is lots of bad examples out there.

Mainly avoid non-functional extras and giving visitors the impression that they are tricked into something. They will turn their backs on you even if they are actually inclined to support your cause.

Put yourself into your visitors’ position. This applies more than anywhere else where you request their trust. When you ask them to leave their contact details or even to sign a petition, the online form must be informative, trustworthy, and working. Before you go public you need to test it properly. I have seen very useful campaigns where the visitors don’t know what will happen with their personal details. Or I’ve chosen to remain anonymous and then I found my name in the public list of supporters. Avoidable mistakes often seem to originate from disrespect of the visitors.

Add to your site a privacy statement, including a description of what you do with the collected data and how users can opt out. I assume that most national legislation requires this anyway. If you offer a way to contact you, be prepared to reply to inquiries. If you cannot do it immediately at least confirm receipt. This, too, informs your public image. I have experienced several NGOs that only replied to my mails when I indicated that I had some money to share.

The same applies, of course, for newsletters. I hate organizations that ignore my requests to stop sending me their daily updates, apparently organizations that compensate a lack of creativity and capacity by bothering people.

If you have some funds to invest, pay for a web server that displays your page without advertising. Nobody will take your campaign for women’s rights seriously when there is a banner next to it that sells computer games by presenting girls in bikinis. Be also cautious with content sensitive ads (Google Adsense etc.). You might end up with your campaign for a tourist embargo side by side with unwanted advertising for hotels and travel agencies. In the case of Google Adsense you can block certain advertisers once you have spotted them on your page, but you cannot block them in general or in advance e.g. by key words. Try to get your own web-address with a really good and memorable name, something that can last for 10 years or more.

2. Discussion forums are your friend

No matter how experienced you are, when you install or update software on Web servers something inevitably will go wrong. In these situations, system requirements, readme.txt files and an ineffectual documentation won’t be of much help. In hundreds of cases, however, I have found the solution (or the answer that there is no solution) on discussion forums. If the author’s site doesn’t offer this feature, enter the error message verbatim (enclosed in double quotes: “error 123: xyz” ) or the description of the error in Google search. In most cases you are not the first one who has encountered that problem. If a forum is badly maintained and questions tend to remain unanswered, you better search for alternative software. You can assume that the author doesn’t spend much time on fixing bugs either.

3. Compare before installing

It is a considerable trouble to migrate from one software solution to another. You can kill yourself by copying hundreds of articles from one database to another and, for every entry, change the format of the date and swap the author with the editor. So better choose well before deciding in favor of one software.

You mostly start out from a particular need. If you have no idea as of where to search, take a look at listings that others have compiled, for example open source alternatives or something like “The 10 most useful plugins for xyz”. There is thousands of blogs with technical reviews and recommendations.

When you have narrowed down your choice, check on the authors’ sites for the latest update. If it was published more than a few months ago you should be cautious. If the site is even broken (and has not moved to a new address), you cannot expect much more from his or her software.

See what other users say about that program. Not all opinions are qualified and merely one submitted review does not necessarily represent the majority, but it gives you an idea about possible flaws.

Check if the software is extendable with plug-ins (alias add-ons or extensions). Are these plug-ins freely available and being maintained as well?

Sometimes your best choice will be the free version of a commercial software. And if there is no free version? Why not ask the author for an exception.

4. Updates and backups, updates and backups, updates and backups, …

While in many cases available updates are announced inside the software admin panel and updating itself is done with the click of a button, there are others where you need to download the package and upload the whole folder structure via FTP, go through an installation routine and eventually make a quick test if all is working as it should.

I recommend to check for updates at least once a week for everything that you have installed. Much better, of course, it is to subscribe to the authors’ news feeds or newsletters on software updates. Sourceforge, for instance, offers a RSS feed for each list of files that are available for download. I keep my feeds about updates together in Thunderbird and know within hours that a new update is out.

It happened to me once that I found our Web site infected by a malicious code that redirected visitors to another page and that has intruded through insecure software. I was lucky that I have browsed our web just in time to spot the problem and to remove the code and the outdated software in a matter of a few minutes.

Everybody nags you about it, and so do I: Make regular backups and keep them separately from your production computer. Back up your documents, do not forget about your email folders, the files on the web and the databases (usually MySQL). Keep several versions of you backups (in case you have already backed up when you discover a problem so that this problem is contained in the latest backups) and check at least once whether you can really recover your data from the backups. (It really happened to me: “Oops, looks like all the time I forgot to back up this one database!”)

It is a good idea to make fast incremental backups on a daily basis and additionally keep full backups from every week on an external disk. After some weeks you can delete them and keep only one per month. I run one computer, which copies all mailboxes and which regularly backs up Dropbox folders and all the stuff from our web to an external disk.

5. Don’t overburden your colleagues

Since you are reading this article, you are most likely the one in your organization who has some technical skills and who maybe even enjoys tinkering around with code. It also means that you will have to set up the software for your colleagues. My advice: Keep everything for them as simple as possible. Make sure that they have understood how to operate it and don’t force them to use any gimmicks or clever options. Many will even prefer to continue their “hardware” (i.e. paper) calendar and note pad rather than familiarize themselves with the latest online application. Take very small steps when explaining to them their operation. Do it, when ever possible, personally rather than sending them a link to the manual. Be patient when they come with stupid questions, something that you have explained before, something with a dead simple solution.

Once you decide to be the guy for the technical stuff, you’ve already agreed to accept annoying support requests. But also make clear that you do this job as a volunteer, that you can only help as soon as your time allows it and that you too have to work according to priorities. I noticed that many people grossly underestimate the work load of maintaining web and office software since it is invisible and in big companies it can be taken as granted. You encounter questions like “Why don’t we use a powerful system like XYZ that I know from my past employment? No need to install it. You just log in and off you go!” Well, your past employer had the funds for a full-time in-house technician who was doing nothing else all day long. That makes the difference. We are non-profit.

Software Solutions for Absolutely-Non-Profits

There is  certainly loads of useful software out there. It took me some time to figure out what does work for us. Every organization has different needs, so you might want to check as well other sources.

Web Server

You most likely need a Web server that enables you to run PHP (that means web pages are created dynamically on the server before they are served as HTML pages to the browser, the most common solution for free Web software) with the version five point something (support for 4.x will finish soon) and as for the databases you need MySQL – preferably one own database per software. 1 GB of space seems to be a reasonable minimum, but just for the purpose of being online less will do as well. Check what other users say about the speed and possible problems with that provider. I have made bad experience with one where simple blogging software needs twenty seconds for rendering a single page.

I strongly recommend to use a hosted solution. You can also set up your own server, but it is a waste of time if you do it only for your own organization. Configuring, securing and updating the software would keep you busy all the time.

In order to put your files from your computer on the web, you will most likely need FTP software. There are many good FTP clients out there. I prefer those that can mirror (or synchronize) incrementally two sites, or your computer with your site. This makes installing updates much faster by copying only new or changed files. It doesn’t, however, usually delete files at the destination so that you keep your configuration files, but also run the risk that a deprecated or misplaced file will stay there and cause a security issue.

Try FileZilla (Win), Fetch (Mac) or Cyberduck (Mac). In Linux you can usually use the ordinary file browser as FTP client.

Web CMS

For our main static web pages I ended up with Joomla, enhanced by several extensions and many tailer-made changes. The choice of free content management solutions seems to be quite big. I guess there is better choices than Joomla, especially that implementation of “articles” for both pages (the web designer’s job) and list entries (the authors’ job) is rather useless.1

If your focus is on blogging, I recommend WordPress. There is many handy plugins, such as Buddypress, and you can choose from a big amount of templates. The updating process of WordPress and its plugins must be considered exemplary. (But make sure that your Web server meets the requirements for memory allocation.) One of the latest great features is the multi-site capability. If you want to know what this is, just go one level up from this blog.

WordPress can easily be changed to serve as general web site with mainly static pages. WordPress also has a hosted version, such as Blogspot and others.

Web Analytics

I’m very happy with Piwik, which has just reached version 1.0. Piwik helps you to understand how many visitors go to which pages, where they are located and from where they were directed to your site. This information is crucial to evaluate the outreach of your work and the performance of your site in terms of appealing to your visitors and getting them on board.

With this amazing software you can define goals (e.g. if a visitor has reached a particular page) and track visitors coming through Web banners or newsletters. Piwik is an alternative to Google Analytics. I found it attractive that all the data collected on our site would remain on our server rather than giving them to one of the Internet’s Big Brothers. Piwik is fast and you don’t need any manual to operate it. Updates work smoothly as well. Check out their demo.

Newsletter

We use PHPlist to send out newsletters (when ever there is an update) and, that makes it very interesting, to automatically draw news from a RSS feed for sending them once per week to certain groups of subscribers. For that purpose I had to make some smaller changes and install some kind of cron to trigger the sending when the time has come. I have never really designed with PHPlist a complicated HTML message in line with a consistent design. This part is a bit more intricate.

PHPlist comes with a simple module for clicking statistics. If you also use Piwik you can append to your links that point back to one of your pages a string that helps you to understand the efficiency of your newsletters in terms of goal conversion.

PHPlist easily handles thousands of contacts. Subscription and unsubscription is taken care of as well. All you need to do is to advertise your newsletter and direct interested individuals to the subscription page. To those days of sending newsletters from email clients I look back with a feeling of agony. PHPlist lets you even catch bounces and error reports and tries to “learn” from them which contacts are outdated.

Collaborative Online Office

We are using the free version of Group Office. There have been more features in its previous free version that simply were canceled, but still the default package is very useful and offers all you need for professional work. In one package you get an address book, a calendar, taks management, an email client and others. Group Office lets you create events for the whole group or share your contacts and mailboxes with others. By the way, I rcommend to use IMAP for your mails, which is fully supported by Group Office.2

On their pages you can check their demo installation.

Group Office is probably our main virtual office space and it helps us tremendously to coordinate the work of our team that is mostly collaborating via Internet. It is ideal if your real world office is too small for your staff or if you don’t have any at all.

Disk Sharing

We got used to Dropbox, which is free only up to a certain amount of disk space. The free space can be increased by canvassing new customers for Dropbox (who must sign up and also install Dropbox on their computer).

Operation is straightforward: Dropbox installs a new folder on your local disk, which is automatically synchronized with a remote disk space when ever you are connected to Internet. If you install the same account on many computers, the folder and its subfolders will be synchronized across these computers. This is very useful if you work both with a desktop and a laptop. When you go offline, the synchronized files continue to be available on your local disk.

Your working group can also share a common disk space. If someone now updates a file, all the others will receive the same file. I really appreciate this way of sharing files while working on them as alternative to sending around documents by email and, after 20+ versions, inevitably getting lost and my mailbox clogged.

Dropbox also proves to be extremely useful when you need to provide files for download to external cooperators. You simply put your file into a “public” folder and then create from it a link that you send to your contact who can download that file through this link. It is much easier than the various file deposit solutions.

Furthermore, Dropbox makes is easy to back up all your team’s files when you can “collect” them on one central computer instead of installing backup software on all of your members’ computers.

And, like whipped cream on the top, Dropbox runs on all major operating systems.

Security

If you don’t use Linux (I have made good experience with Open Suse – best for people who are conditioned to use Windows – and Ubuntu – which is easier to maintain) or a Mac, you will absolutely need anti virus software. Where we have Windows, I installed AVG Free. Virus updates and updates of the operating systems are installed automatically, otherwise I would have to run behind all of the computers of the team – an avoidable enjoyment.

Anti virus software is among the first things I install on Windows computers. Be careful which one you choose – there is lots of fakes on offer that lure you with great names but in fact infect your computer.

On my own computer I use the Firefox browser together with the Noscript plugin. It has saved me more than once from infected web sites by blocking any potentially dangerous code. My colleagues, however, usually react rather irritated if Javascript or multimedia content is blocked. I therefore won’t save their computers.

On your Web spaces, make use of the .htaccess file to strengthen security. This is just a text file, but still a powerful tool and it is recommended to learn quite a bit about its possibilities and usage. Apart from blocking access to certain files and folders, it can create prettier links that are readable for search engines and redirect from pages that you have moved to another URL. And: If you don’t create a .htaccess file, a virus might do it for you. ;-)

Remove unused and outdated software since it could be misused as entry point on your Web space and to your database.

If you let visitors register or comment, make sure that you moderate all input. Never let anyone directly publish on your web – or, if you know very well what you are doing, you should at least sanitize these posts in order to remove any potentially malicious links and scripts.

Backup

I automatically download the Web content with ncftp and write it together with mails, MySQL downloads and Dropbox content to an external disk, daily without and weekly with compression (using iBackup). There are various other possibilities to get this job done, in the worst case by hand.

Office Software

Open Office (on the Mac also NeoOffice) has become a quasi standard for open source text processing and spreadsheets that in many parts, like multi-lingual support or consistency, has even beaten MS Office. I also prefer the traditional arrangement of menus that you still find in Open Office.

Additionally to Group Office (see above) we use Thunderbird with the extensions: Lightning, Shrunked Image Resizer (to shrink images before sending, a must!), Xpunge (synchronizing local with IMAP folders) and dictionaries as needed.

This seems to be all for the moment. In future I will compile some more general advices of a less technical nature.

  1. Hopefully the next version will solve this issue.
  2. … encryption only with special settings.

Related Posts: