Monday, February 18, 2008

Free Web Hosting

Recently I researched the state of free web hosting. I came away pretty surprised at my findings. In the past, setting up a decent website without spending a cent was impossible. But now, it's not only possible, it's easy to create a very nice site using only free tools. Below is my highly-opinionated guide on the best free services.

Web Site

First of all, you need a place to store and manage your pages. There are so many choices in this area that I couldn't even begin to sort through them all. However, two sites that stood out to me were Google Page Creator and WordPress.Com.

Google Page Creator allows up to 100 MB of storage for pages and any attachments you might want to upload. Pages created through their web interface tend to look kind of weird, but you can create pages on your own computer and upload them. Unlike many other services, there doesn't seem to be any restrictions on the types of files that you can upload to Google Page Creator.

WordPress.Com is mainly a blogging site, but it has a feature called Pages that lets you create non-blog pages and edit them using HTML. You don't have a lot of flexibility in the design of your pages, since the pages get displayed using the same template used for your blog. But you get an unlimited number of pages, and you get a very generous allotment of 3 GB for image and document uploads (other files are not allowed unless you upgrade to the paid service).

Neither service has an API, which is disappointing. WordPress.Com does give you something they call an API key, but it's only for use with the Akismet spam filtering service.

I should mention that there are various hosted wiki services that you can use to build a web site, but I won't get into that in this post.

Blog

I have the most experience with Blogger, so I can't help but put that as my number one recommendation. One of the reasons that I chose Blogger was that it has a solid and well-documented API. I don't think the other free blogging services are quite as good in this area. Using the API, I can easily create and update all my blog posts on my own machine and then upload them to Blogger's servers at my leisure. Another advantage is that no ads ever appear on your blog (unless you want them to).

Images

Picasa is my number one pick here, but Flickr seems nice too. I like Picasa the best because it has an API similar to the Blogger API [1]. If I used Flickr, I'd have to learn a whole different API, which would be annoying. Picasa gives you 1 GB of storage, which I think is pretty decent. Some of the documentation claims that Picasa only supports JPEG images, but that seems to be out-of-date because I've uploaded PNG files without any issue (and they were not converted to JPEGs during the upload process).

Videos

Well, YouTube pretty much has this market cornered. Unless you have some specific needs for video hosting, it's best to go with YouTube. Since YouTube is owned by Google, you get a nice API for it as well. The YouTube API does not support uploading, but I don't think that's a big deal.

Rich Text Documents and Spreadsheets

I don't have any experience with it but it seems that Google Docs is the best choice in this area. The limits for the service are kind of complicated so I won't summarize them here but you can read them for yourself.

Presentations

Google Docs allows you to publish presentations as well, but there's also SlideShare, which also offers an API. From reading the online documentation, I think SlideShare edges out Google Docs because it allows you to import from PowerPoint, OpenOffice, and PDF, while Google Docs only allows you to import from PowerPoint. Also, SlideShare allows presentations up to 30 MB, while Google Docs only gives you up to 10 MB.

Miscellaneous Documents

I don't have a lot of experience with it yet, but Google Base seems to be a good choice for hosting documents in various formats. Basically, you can create an item on Google Base and attach different kinds of files to it. You can attach the following formats: Adobe PDF (.pdf), Microsoft Word (.doc), Microsoft PowerPoint (.ppt), Microsoft Excel (.xls), Text (.txt), HTML (.html), Rich Text Format (.rtf), ASCII, Unicode, XML, and Word Perfect documents (.wpd). Be careful, though: depending on the type of item you create, it may expire after a certain amount of time. And of course Google Base offers an API.

General File Hosting

For all your other file hosting needs, I recommend DivShare. This free service gives you 5 GB of disk space along with 50 GB of bandwidth, which I think is kind of amazing. It doesn't restrict the types of files you can upload, so this is the place to host your ZIP, EXE, TAR.GZ, and BZ2 files. One added benefit is that it treats media files specially. For example, you can use DivShare to embed an audio file directly into your web page. That means someone viewing your page can play a song from your page without needing to download it first. I personally don't see myself ever using this feature, but it is nifty. Even though there are plenty of other ad-supported file hosting services, DivShare is a cut above the rest because it has an API that supports uploading.

Conclusion

Besides the services I wrote about in this post, there are also hosted wikis and mashup creators, both of which are loaded topics, and no way am I going to try tackling them in this already-too-long post.

I think I've convincingly argued that you can create a fairly sophisticated web site using only free tools. Many of the best services out there offer APIs, meaning that if you're a programmer, you can combine them together to create your own custom web publishing solution. In a lot of cases, it may actually be preferable to publish your material on hosted services rather than affordable web hosts like DreamHost or WebFaction [2]. That's because these hosted services are run by organizations with a lot of resources at their disposal; by using them you don't have to worry about bandwidth allocations, outages, backups, spam filtering, comment moderation, and all those other annoying issues that keep you from Getting Things Done.

[1]Picasa and Blogger both use the Atom publication protocol. And since I'm a Python developer, I can use the same gdata module to access both services.
[2]I should mention that I'm a satisfied customer of both DreamHost and WebFaction. But after doing all this research, I think that the only thing I'll be hosting on them will be my own custom-built web applications.