Open Source Software, Part 1: OSS At Work

Both in my professional and personal life, I’m an advocate for using open source software. I have a coworker who is fond of saying “you get what you pay for” any time something goes wrong with OSS, but I could not disagree more. The quality and quantity of OSS software has increased significantly over the years and there are some truly impressive OSS projects out there. When I actually sat down and considered all the open source software I use on at least a monthly basis it was eye opening.
Part 1: OSS At Work
You cannot talk about OSS without talking about the grand daddy of them all, the one that started it, GNU Linux. To the ire of Richard Stallman, GNU Linux often gets shorted to just Linux, but Linux is a just a kernel, GNU is all the standard tools around the kernel that make an operating system. At DTI we use both CentOS and Ubuntu, the former being a copy of the defacto standard Red Hat Linux and the later a Debian based distribution that is being supported, even required, by more and more software development tools.
Most of DTI’s software, of my division’s at least, is written in C and is built for a Linux environment running on PowerPC CPU architecture. We have come to rely on two different toolchains for building our software, the ELDK and a OpenEmbbedded based toolchain. Both are based on the GNU tools with the GCC compiler at the center.
At DTI we have Windows PCs and Linux development servers. Developers can write their software in either OS, and then compile the software on the Linux servers. Personally, I do some of my development in Windows and some in Linux. When I’m in Windows I use the excellent Notepad++ text editor and the TortoiseSVN Subversion client. When I’m in Linux if I’m feeling GUI (worst pun ever?) I use FreeNX or VNC to access the server and edit code in Geany. When I’m in a console warrior mood SSH via PuTTY, screen (or Ubuntu’s improved version of screen byobu) and Vim (Emacs sucks!) are the tools of the day.
As for software development infrastructure my group moved from a commercial source control system to Subversion for version control a little over a year ago. We recently passed the 1000 check-ins mark on our main repository which I feel is a respectable number for a team our size. We use Trac for internal issue tracking and information sharing mainly because of its its excellent subversion integration. We use the Trac clone, Redmine for our external systems because it provides a better a more complete feature set than Trac (and maybe we will migrate to Redmine internally one day). All this infrastructure runs on the venerable Apache HTTP server.
When it comes to testing our products we mostly rely on commercial and propriety tools but there are a few OSS projects which have found a place in my test toolbox. First, it is worth mentioning that many of DTI’s proprietary tools are developed in Python, Perl, or Tcl, all OSS languages with OSS interpreters. I’m focused on developing DTI networking products, so I hate having to speed time installing OSes on nodes to be used for testing. So I often used a custom Linux distribution based on TTYLinux. TTYLinux is a excellent micro distribution that runs entirely out of a 4MB ramdisk and can boot from a flash drive. It uses perhaps the most important OSS project for embedded systems, busybox which is a collection of micro versions of standard GNU tools. I bundle some of my favorite test tools on this flash drive along with standards including iperf, nuttcp, ipmitool, stress, tcpdump, sysutils, ethtool, and or course everyone’s favorite, ping. When I have a full blown Linux installation available or even Windows on my node, I use Wireshark for network traffic analysis.
For long term pattern analysis I rely on my mind… greatly aided by Cacti. Cacti is a web application which graphs whatever sensors you can throw at it. It is amazing what can be learned when data is visualized over time rather than just a viewing a single reading. Cacti uses RRDTool as a backend to perform the data logging and graphing. Most of the information we graph is available via SNMP, so we use net-snmp to gather than information.
I use OSS for everyday tasks not related to software development and product testing as well. Most readers are familiar with the Firefox web browser I’m sure, which I use a fair amount in both Windows and Linux. I use Windows network shares via Samba to access my Linux servers’ file systems. When I need to get or send something via FTP or SFTP Filezilla is my client of choice. I use 7-Zip to deal with archived files and WinDirStat is an essential tool in dealing with my hording files habit.
That is more than 40 OOS projects and this is only Part 1! I’ve probably forgotten a few projects and I didn’t even try to touch all the OSS libraries which aren’t directly usable. Call it an open source initiative (the official term I believe), movement, revolution, or whatever you want, but their is no question that quantity of OSS projects is increasing and the quality of the software is growing.
Stay tuned for:
- Part 2: OSS At Home
- Part 3: Where Non-OSS is Still King
JP Landry
Network Division Manager
