I'm sorry for the
really long delay in updating this feed. Life's been busier lately, and my free time has been spent on various other projects or interests, most of which have been centering around computers. There have many days where I wanted to write about some of the exciting things that I had been doing, but I just didn't have the energy at the end of the day. I need to post an article on burnout. I have recently taken up art as a hobby, since I can't always tell the difference between work and play when I'm on my home computer. I blame my
BlackBerry a.k.a., my Wireless Leash.
On the technology front, I have really gotten into various open source projects. For those of you who may not be familiar with the term "open source," here is a brief and incomplete explanation. It usually refers to software where the author has released the programming instructions (source code) for others to view, and reuse, usually under a very permissive licensing system, and usually at no cost. This allows other programmers to see and learn techniques that others use, and incorporate what they have learned in their own programs. It also allows non-programmers to have free software programs that would have cost a lot of money to obtain otherwise. This goes in a very different direction than the commercial software that most people are used to, or even the freeware and shareware that others are familiar with. The source code is traditionally the most guarded part of the software. It is the heart, the blueprints, the schematics. This is the kind of information that fuels industrial espionage against companies like Adobe and Microsoft. Yet, the open source software model thrives today, and even cuts into sales for their commercial "competitors."
In my opinion, the beauty of open source isn't that the technology is shared, or that the programs are free, although those are excellent reasons. The real benefit is the community that it creates. How many times have you been using a program and said, "This program is great, but I wish it had an option to do ___." ? With traditional software, the responses to these requests are usually directed back to the author, who decides if the feature merits inclusion in a future version. If you make the same request in a forum for open source software, you will often hear the response like, "Good idea. Feel free to submit a patch." In programmer-
ese, this means, write the changes yourself, and send me a copy when you get it working. Newcomers may be offended by the apparent disinterest in the author to make the change for them, especially if they have no knowledge of how to program, but an interesting exchange has just taken place.
Take a few steps back. The author usually is not getting paid for their program. Many, if not most write these programs in their free time. Occasionally, a company will sponsor a larger project, or donations are made to the author, but in general, it takes a lot of time and usually some money to provide these "free" programs to the public. The author has given a gift to the world by providing the program in the first place. The author provides more of a gift if he/she/they decide to support all the bug reports and feature requests for the programs. What ends up happening is that if the program seems worthwhile to enough people, it will attract other developers who may come out of curiosity, but may end up staying to help. The program turns into a project, gains support from others, and usually starts improving.
This reminds me of the old folk story called "
Stone Soup." Read the brief description from the link. if you aren't familiar. You can actually start an open source project with nothing but an idea. Gather some interest, sell the idea to a few people who know how to program, and come up with a rough draft. Borrow pieces, parts, and people from other open source projects, if needed, and if successful, the project will start to have a life of its own. Before long, you have a mix of casual onlookers, enthusiasts, and dedicated programmers who want the project to succeed. Improvements get added, bugs get discovered and fixed, and very complex programs are created by the time donated by all involved.
Here is a list of some of the projects that I have interest in, or use frequently. I haven't contributed code for any of them (yet), but I have participated in discussion on a few. There are many other tools that I use as well, but the ones I chose to list give a sample of the ones I particularly like.
- Drupal - a content management system (CMS) based on PHP. I use this one at work and at home. Perhaps one day I will move this weblog to Drupal. The system seems to focus on community-based web sites. As a result, they have an amazing community of developers and supporters. Interactive lessons are presented at the Drupal Dojo. The lessons are usually recorded for others to view at a later time. If you have looked at Drupal in the past and written it off as too difficult or arcane, I would invite you to come back and see what has happened.
- GNU/Linux - Perhaps the most popular open-source project of all, this is the poster child for success in an open source community. Although GNU and Linux are technically separate projects with different histories, the two almost always go together, somewhat like the chocolate and peanut butter in the 1980s Reese's commercials. In another post, I will describe my experiences with various distributions, but in short, I prefer the Debian stable release at work, and Ubuntu at home.
- Rosegarden - I occasionally play around with music on my computer. I have a cheap QuickShot MIDI controller connected to my SoundBlaster Live. My life doesn't depend on this hobby, so I'm not really willing to fork out the money for Finale, CakeWalk, or CuBase. I do, however, like to put my notes down on paper and hear how it will sound. Rosegarden is an excellent piece of notation and MIDI sequencing software. Unfortunately, it is currently only available for Linux. If you know of any comparable open source projects for Windows, please let me know. I currently dual boot my home PC between XP and Ubuntu, and have to shut everything down, which interferes a bit with this hobby.
- Lilypond - Rosegarden is a powerhouse for most features, but its primary focus is on sequencing. Its notation is good, but not publishing quality. Enter Lilypond. Lilypond is only for notation and lyrics placement. It doesn't play music. It doesn't have a nice graphical interface. It takes a specially formatted text file and converts it to beautiful sheet music, comparable to any modern published work. It supports drum notation, shape notes (Aiken, Sacred Harp, ancient styles), and many other features. It has a learning curve, but has excellent documentation with pictures for every feature. I don't know it well at all, but Rosegarden and other programs are capable of exporting Lilypond files. I do 90% of the work in Rosegarden, and then clean up the Lilypond formatting to my preferences. The good news is that you don't need to know much of Lilypond to get around. Many of the commands are for fine-tuning the results. Lilypond is available on many platforms, including Windows, Mac, and Linux. There are other tools available for assistance with editing your Lilypond files.
- PHP - a scripting language developed by one person for his own needs, gained interest of others, and grew into a huge success used by thousands of web sites today.
- Wikipedia - Open source isn't just for programs. It can be used to describe things like information services. Wikipedia is a community encyclopedia. Its articles are submitted, edited, and maintained by the commmunity. Anyone can edit it. Logs are kept to show who edited what and when, which invites some abuse or misinformation, but is usually corrected by others in the community. Old revisions are kept as well. In addition to the information on Wikipedia being open source, MediaWiki, the software that powers Wikipedia, is also open source. This allows others to use it for managing other collections of information in a similar fashion.
- MySQL - Many open source projects which need a simple database to power them turn to MySQL. Another popular open source database is PostgreSQL, which historically has been considered more powerful than MySQL, but both programs have improved and added features since their introduction, and rival their commercial counterparts, whether by price, features, performance, or more.
- Apache - Meet the granddaddy of the web. While you were busy trying to decide what web browser to use, Apache was serving up most of the pages to your browser. It's main competitor is Microsoft's IIS. For a while, even Microsoft was using Apache for a large number of their heavier duty sites. Neither is particularly exciting for the average user, but if you're on the Internet, you benefit from each. According to a graph on NetCraft, Apache is still the market share leader, but the margin has narrowed significantly since 2006. Much of this is due to improvements in IIS, from the performance standpoint, as well as from their integration with other Microsoft technologies. It used to be common knowledge that Apache always outperforms IIS, but that claim no longer seems to be the case.
I use many other open source tools, especially at work. Many are for network management and monitoring, since that is the central role of my job. Almost everything that I run on my Ubuntu partition at home is open source, with a strong emphasis on audio and games. The only things I can think of that aren't open source are my graphics card drivers, and Finale Notepad, which is a Windows program that I run from Ubuntu via Wine. Ironically, I haven't installed the program on my Windows partition yet.
All of this open source chatter may sound a lot like communism or socialism. I can't really argue with you there, but one difference is that no one is forcing you to participate. There is no cult to join, no oath to take, and you are free to come and go as you want. In America, one has the freedom to write software, and either give it away, or charge money for it. One is also free to decide which one they need. The words "monopolistic" and "unfair" often come up when discussing software pricing. It's their right. If I don't want to fork over $500 for MS Office, I don't have to. I can use OpenOffice, StarOffice, or some other alternative, or just plain go without it altogether. Some would choose to copy (i.e. steal) it instead, leaning on the "unfair" or "monopolistic" argument, which ensures that the price will not go down any time soon. Fortunately, my employer legally provides it for home use through its enterprise agreement with Microsoft. :-)
There's also the argument that open source tools aren't as good as their commercial counterparts. This is often true, but it is not an absolute by any means. I prefer some of the features and behaviors of OpenOffice to those in Microsoft Office. Software tends to develop more rapidly in the open source world. There are frequently rough edges, but there is also no corporate strategy to limit how often new releases can be made. Usually, the new features are a bit rough, but the older features mature. There is no doubt, though, that the growth and maturation of a project depends on its community. The community is both the demand and the supply for the product.
I will try to let you know more about my favorite open source programs, and other utilities that I think might be of interest. Sometimes my posts will be geared a bit more technical than others, but I will try to keep it interesting for the general audience, as well as some tidbits for those who have do similar work.
Please comment if you found this interesting. Thanks, and take care.