(Originally published in Local Pols)


Recently, in an online chat, I was asked the difference between PHP and PHP-Nuke. I explained that one was a programming language, and the other was a content management system. The person who had asked me the questioned nodded politely, and then asked again what the difference was. From there, I went into a discussion about different programming languages and different ways of setting up websites. Another person joined the chat and asked if I was speaking Klingon.

Based on this, and other discussions I’ve had recently, I have decided to write my comments about different types of websites.

Static Sites

Generally speaking, all websites are written in HTML, which is a language that allows up to make text bold, underlined, italics, and many other things. It gives you the ability to bring in pictures and arrange the pictures and text in specific ways.

In the early days, people would just write HTML in whatever text editor they happened to have. These days, many programs allow you to create a document and then save it into a file in HTML format. The HTML file could then be stored on a server, and you have a webpage. These days, people set up templates that they put their HTML in so that they can have lots of pages looking the same way. Any of these pages will always be the same until someone comes in and changes the HTML. I like to refer to these pages as Static pages.

Many sites are set up as static sites. While it is sometimes hard to tell how a site was set up, I have attempted to organize sites based on how they are set up. These sites are ones that I believe have been set up statically. If I’m incorrect, please let me know and I’ll update the listings.

The problem with static sites is that normally, you need a web designer to make just about any changes to the site. This can slow down adding new content to a site, but you can also have much prettier sites this way.

People can get static websites set up many different ways. Sometimes, they use a free service, like Geocities to set up web sites. Sometimes they build the sites themselves. Sometimes they use people who focus on building any sort of website. Sometimes they use people who focus primarily on campaign related websites. A couple services that have gotten good comments for this service recently include Complete Campaigns, Mercury, and Orchid.

Web Servers, Languages, and Databases

Depending on how the site is being set up, you may need to make decisions about what sort of server your website will use. Simply put, the server is the computer that gets a request to display a web page and sends back the results. There are two primary servers. One is called Apache. Apache is an ‘open source’ server, which basically means you can, within certain guidelines, get a copy of the program and run it. The other primary server is Microsoft’s IIS server. You need a license from Microsoft to run this server. There are other types of servers as well.

Besides sending back a static page, the servers often have the ability to run programs. The server gets set up to support programs written in different languages. Some of the most common languages that web servers can use include PHP, Perl, Python and Visual Basic. The first three are ‘Open Source’, and the last one is a licensed program of Microsoft.

These programs can read and write data from a database. Just as there are different types of web servers, and different programming languages, there are also different databases. Normally, when you get set up with a web server that can run programs, you get access to some sort of database.

The most common database is MySql. It is an open source database server. Microsoft’s SQL Server is also fairly common, which you must license from Microsoft. There are other popular databases as, some are open source, and some are licensed.

Blogs, Forum’s, Mailing lists, Wiki’s, etc

One popular thing to have programs do is save the information that should be displayed on a web site in a database, instead of as files. This allows the information to be accessed in different ways, and makes it easier for people to update web sites.

One set of programs is Blogs. Blogs, or Weblogs, are typically programs that allow users to add information to a web site from a web page. When data is added to the database, the web pages are rebuilt. The advantage of this approach is that the program accessing the database doesn’t need to be re-run each time a web page is requested. Different blog systems have different ways of storing data into the database and of building the pages that are displayed. Blogger is one of the most popular such blogs. You can set up a Blogger blog for free, if you are willing to live with their advertisements and restrictions. The old unofficial Dean Blog was done using Blogger. You can see different Dean related groups and campaigns that use blogger here.

Another popular blogging system isLiveJournal. Like Blogger, you can set up blogs for free on LiveJournal. LiveJournal is very community oriented, and while there are communities of people that discuss politics, I don’t know of any examples of campaigns or political groups using LiveJournal.

One of the most popular blogging systems is MovableType. The official Dean blog uses MovableType, as does the Kerry blog, and several other campaign blogs. You can see different Dean related groups and campaigns that use blogger here.

Other types of programs that are sometimes run on web sites include Forums, Wikis and Mailing lists. There have been a few Forums used in campaigns, but I don’t have any additional information about Forums at this point. Wikis generally haven’t been used by campaigns and for the time being I will skip over these.

For mailing lists, phplist has been talked about a fair amount. Other popular mailing list programs include Mailman and ezmlm These mailing lists are set up to run on Linux servers running Apache. Since I don’t have access to an Apache server, I haven’t tested them other than to verify that I couldn’t get them to work under IIS.

Content Management Systems

What blogs do is allows people to easily add content to the site, and usually to easily change the template and the look and feel of the websites. However, often people want more than just a blog. They want to add special pages for handling contributions, for tracking volunteers, for identifying voters, for scheduling events, and so on. This is where content management systems come in.


Within the Dean campaign, the most popular content management system so far, has been Drupal A project called DeanSpace was set up to provide a customized setup of Drupal for groups supporting Dean. The official state sites were set up using DeanSpace as were many unofficial groups. When Governor Dean announced Democracy for America, he spoke about providing a Campaign in a box solution. This has been widely expected to be based on DeanSpace.

The folks from DeanSpace are now working on a newer version, called CivicSpace. It should hopefully be out sometime in June. This site, as well as campaigns that I’ve been setting up are also based on Drupal. You can see different Dean related groups and campaigns that use Drupal here. Drupal works with both Apache and IIS. It supports several different database servers, and is well designed for creating new modules.


Another popular content management system is Geeklog. Geeklog is also written in PHP. I have not yet worked with Geeklog, so I don’t have any comments about it. However, Boston Democrats uses Geeklog. You can see different Dean related groups and campaigns that use Geeklog here.

I intend to set up a test Geeklog site sometime soon and play around with it. If any of you have used Geeklog and have comments, let me know.


It was a discussion about PHP-Nuke that got me going on writing this article in the first place. As you would guess, it is also written in PHP. They say it only works with Apache, however, I have set up a test site using an IIS server. I’ve run into a few glitches, but all in all, it appears to work.

I do not know of any specific people using PHP-Nuke for their political groups or campaigns. If you know of people who are, please let me know.

There are actually several different variants of PHP-Nuke. Sometimes you may run into Post-Nuke, Envolution, or Xoops.


Scoop is written in Perl. It is the underlying system for kuro5hin and DailyKos. I believe it was used in some of the presidential campaigns. My understanding is that it is a bit harder to customize, and I don’t know people that are using.


Zope is written in Python. A lot of people I know think Python is the hot new language. I don’t know of any specific sites built on Zope.

Handling Donations

(This is a piece I wrote earlier, that I think fits in well here.)
I spent a bit of time looking into how to hand donations for my wife’s campaign ( Based on initial research, my target is to raise $20,000. We are targeting donations to be in the range of $50 to $100, which means that we are hoping from between 200 and 400 donors. Connecticut State law requires reporting occupation and employer for donors giving over $100 and has a maximum donation of $250.

There parameters have affected our decisions on how we will track and process donations.

In my mind, I have broken the technological processes down into three components. One is the online processing of donations. This deals primarily with credit cards. However, it is worth noting that automated check handling, and other types of donations should be considered. The second process is tracking donors, and the third process is reporting or filing the donation information.

Online processing of donations

This is where I have spent the most time so far. I looked at systems that will handle this for you, working with merchant banks, and working with Paypal.

Systems that handle everything for you seem to be the most expensive way to go. They often charge setup fees of over $5000 or have high processing costs of 7% to 15% of the donations. If people know of systems that come in well below this threshold, let me know.

Merchant banks often have high setup charges and/or monthly charges, but have the best transaction costs.
Paypal is easy to set up, has now setup cost or monthly charges, and their transaction cost is only slightly higher than Merchant banks.

When looking at the systems, it is useful to think in terms of the following three costs, initial setup charge, monthly charges, and per transaction charges. These are summarized below.

Initial Setup Charge:

This varies from free for Paypal, to a couple hundred dollars for some merchant banks to several thousand dollars for some online donation processing systems.

Monthly charges:

Again, this varies depending on the service you are getting. Paypal is again free, the merchant banks I spoke with are generally around $50/month and the large online donation processing systems are generally in the thousands of dollars.

Per transaction charge:

This is normally broken down into two components: There is typically a charge per transaction of thirty to fifty cents, and a percentage charge of two to three percent. You need to be careful in how you look at these transaction costs. Some merchant banks will split these into several different categories which can add up.

Here, the larger systems have the best rates. The percentage charge rate is based in part on the number of transactions and the percentage of transactions that get charged back. For campaigns, charge backs are low, so a large campaign could argue to get their rate lowered considerably.

Based on all of this, I figured that unless I am raising over at least $10,000/month, Paypal is the cheapest and easiest way to go. If you need something more full service, the Dean campaign used Convio, which is fairly well regarded. Others have used Kintera, and I've heard some good stuff about CompleteCampaigns.

As I mentioned above, you should look into automatic check handling and other payment options. Paypal appears to handle these fairly well.

You will want to set up a business Paypal account, so that you can take credit cards. However, if you are running a PAC (or a campaign), you probably need to set up a business checking account anyway, so setting up a business Paypal account shouldn't be a big surprise.

One few final notes on online processing: It may well be that be aggregating online processing for several campaigns, a better deal can be set up with a major merchant bank. People have suggested that OrchidforChange may have done something like that. If people know of merchant banks that support PHP as part of their API, and have competitive rates, e.g. no setup or monthly rates, please let me know.

Donation tracking

Given that we are expecting between 200 and 400 donors, currently, we are tracking donations to my wife's campaign simply with a spreadsheet. If this changes, I will build additional functionality for DemSpace websites to automatically track donations, but I haven't found a need for that yet.

Note: If someone is raising enough money online that they need automatic tracking, and they have or are thinking about having a DemSpace based website, let me know, and I'll bump the priority of the automatic tracking a little.

It seems as if the best way to handle the tracking, particularly when dealing with Paypal, but also with various merchant banks, is to gather the necessary information ahead of time and save it in your database. Then, using interfaces that Paypal or the merchant banks provide passing the information onto those systems to eliminate duplication of entry. For my wife’s campaign, I have thought about saving the donor information into my ‘GetInvolved’ set of tables. The whole issue of how you organizing people, voters, donors, volunteers and users in tables is a whole separate issue that I will leave for a separate discussion.

My understanding is that there are some merchant banking modules for Drupal, that are set up to communicate with Paypal and/or other merchant banks. I haven’t had a need to look at these for my purposes, but I would love to hear other people’s experiences with these modules.

Reporting or Filing

As far as I can tell, each state has its own set of filing requirements. In Connecticut, they have an online system that can be accessed at As far as I can tell, there isn’t a automated interface for submitting data directly from an existing donation database. I don’t know of other systems for filing and would love to hear other people’s experiences.