DIY Open Source Project (Part 1)

| |

Nowadays, the easiest way to setup an open source project is hosting via sourceforge.net. But did you ever think about hosting a project by yourself so that you will have complete control of the project and not dependent by others? My project, Voyage Linux, is built by me little-by-little, bit-by-bit over 4-year time span. At the time of writing (Sep 2009), the project homepage has over 10,000 pageviews per month, the community mailing list has 430 subscribes, and 13 country mirror sites from sponsors.

This series of articles documents my experiences on setting up open source project totally by yourself. Part 1 of this series covers the preparation before setting up open source project that includes the following topics:

  • Setting up dedicate Linux Server
  • Selecting ISP
  • Domain name registration

Dedicated Linux home server

Apart from my Windows desktop and Mac iBook for developement, you need a dedicate linux server to facilitate various purposes. Externally, the server will used to host project website, mailing list and source code control at start. Internally, it serves as network drive that mount for samba access for my development work. My Linux server is a Debian, starting from Woody and is upgraded to Lenny now. At start, I built the Linux server with a jumbo aluminum enclosure and more fans for good ventilation. Eventually, I find out it is waste of space and noisy. Right now, my advice to build your home Linux server will be a barebone-class desktop, energy efficient and silent as you will run your server 24x7. For more information on how my Linux server looks like, you can follow this link.

Selecting ISP

Next, selecting ISP is also an important task since ISP usually requires you to bind into a long term contract (usually >=12 months) that you will find hard to switch your ISP even if you are unsatisfied with them. My selection criteria of ISP are (in order of importance):

  1. no blocking ports - port 80(http), 22(ssh) and 25(smtp) are very important!
  2. symmetric downlink and uplink
  3. reliable
To host the open source project in your home server, the most important thing is to make sure your ISP does not block the important ports, especially port 80 and 25. Without port 80 (http), you cannot host your web server and setup project homepage, although you can use 8080 but it is not very nice. Without port 25, you cannot setup incoming mail gateway and outgoing smtp gateway for your mailing list. Or otherwise, you need to subscribe the MailHop Relay and MailHop Outbound service from provider like dyndns.com that cost you money. These services allow you to run smtp gateway on port other than 25 as your mails are relayed from their servers runnign standard port 25. Optionally, you may need port 22 for ssh if you need secure terminal access from anywhere to your home server. If ssh port is blocked, you could still get around it by setup ssh server using high number port such as 2222.

Since you will run your own web server and your project website may provide source code and/or binary downloads, uplink bandwidth becomes important for better download speeds for your users. Most ISP offering ADSL with asymmetric downlink/uplink bandwidth is unsuitable for running your OSS project. Cable link has better uplink bandwidth, but the links are usually shared so that you may experience uplink slowdown during busiest hours. In the old days, I used to have a VDSL modem which provides symmetric uplink/downlink, and the speed is good. However, after moving to new apartment, the ISP has no coverage to my apartment any more and I have to use cable links indeed it blocks port 25.

Speaking of reliability, there are two areas to concern: 1) the link reliability; 2) the modem reliability. First, if you choose an ISP with good reputation, it doesn't means the link is reliable. If your ISP leases the lines to other 2-tier ISPs, you should be aware. Some inexperience technical staff may "occasionally" un-patch your wire in the switch when they install a new client near your apartment. I have such experience twice. As I subscribed a provider which uses monopoly cable technology I never experience such "human error". Secondly, your modem may somehow malfunction after a couple of long time use. My cable modem exposed such problem. Even if I reset my Linksys router that used to bridge my local network and outside internet, the link is still unreliable although the router can get an IP lease. This situation will only get resolved until I manually reset the modem. This is not nice through, as hosting your own OSS project is not 24x7 guaranteed.

Domain name registration

In my experience, domain name registration process has two parts as it is separated into 2 invoices, financially. The first one is to register your domain name from domain registration service, in which the first cost comes from. The second is finding a DNS provider to host your domain name, that is the second cost. Some providers like dyndns provide one-stop service. But dyndns does not provide .hk domain registration for voyage.hk domain so I have to pay for two services separately. Since I used cable modem and IP is leased from the ISP, I used dyndns service to host voyage.hk domain and used dhclient to update the IP of voyage.hk in dyndns's DNS periodically.

Conclusion

In Part 1, we cover some preparation steps for setting OSS project including topics like home Linux server, ISP selection and domain name registration. In Part 2, we will explore the basic setup of OSS project:

  • Project Homepage
  • Mailing List
  • Version control system (VCS)
Subsequent articles in this series will provide details on basic OSS project setup, running OSS projects and project optimization.