TweetFollow Us on Twitter

An Open Source Primer

Volume Number: 21 (2005)
Issue Number: 10
Column Tag: Programming

An Open Source Primer

A Practical Guide to Using Open Source Software (OSS) on Mac OS X for the Non-Developer

by Emmanuel Stein

Introduction

Readers of Dean Shavit's "The Source Hound" and Ed Marczak's "Mac In The Shell", are no doubt familiar with open source software (OSS). With Darwin as OS X's core, many if not most of the Mac OS's most critical components are based on, if not entirely built upon, open source projects. To exploit the capabilities of OS X it is, therefore, critical to have a good grasp of OSS and the many ways you can leverage open source solutions on the Mac.

For Mac aficionados without a UNIX background, the world of open source can be rather daunting at first. Given all the distribution formats out there and the occasional need to compile software, it is not surprising that many Mac Users have not exploited OSS beyond what comes with OS X. Even non-developers who know how to compile their software, often run into issues with source code that requires special compiler options to successfully compile, or for which they may need to edit the Makefile and the like. Dependencies are also a source of problems and are often at the root of problems getting OSS to run properly. Finally, there is the issue of source code not ported to the Mac OS or Darwin, for which one requires a cross compiler. Source code not ported to the Mac OS regularly stumps many users who do not realize that source code is frequently machine dependant in nature and therefore may not work on all platforms.

There is hope, however. Package management systems like Fink and Open Darwin Ports (think Apple Software Update for OSS) offer automatic downloading, compilation and linking, as well as updating. Although these tools are wonderful and make acquiring and deploying OSS a breeze (even for GUI diehards), they do not always include every piece of OSS you may want or need. Also, newer projects may not even have packages available, much less be indexed by the extant package management systems. In such situations, many people may give up and possibly look for a "safe" commercial alternative. I hope to change that with this primer by going over the convenient package management tools available, and going over the simple steps for compilation. Further, I will show you how to identify and where to find OSS that has been ported to the Mac.

Though, it is beyond the scope of a primer to go into porting OSS to the Mac, I will nevertheless touch on the conceptual issues involved. If nothing else, it will enable readers to better understand why certain code does not compile on the Mac and for more adventurous readers, shows where to find the porting instructions in a source distribution.

If you are a developer or UNIX geek, you will likely be familiar with the subjects covered. However, for the rest of us, get ready to enter the wonderful world of OSS. Far from being a "developer-only" community, the rich and vibrant world of OSS is chock full of cutting edge and highly useful non-developer tools like GIMP (Graphic Image Manipulation Program) and Blender (an advanced 3D modeling tool). Moreover, with the advent of OS X and object oriented desktop environments like Gnome and KDE, the OSS universe has become increasingly accessible to GUI folks. With every passing day, open source developers are innovating and facilitating methods of OSS distribution. Whether via an Aqua wrapper to X11-based applications, like Aqua Ethereal, or via graphical front-ends to package management tools, such as Fink's Fink Commander and Open Darwin Port's Port Authority, OSS developers are clearly making every effort to reach the Mac audience.

What Exactly is Open Source Software Anyway?

Open source, is typically used to refer to non-proprietary software, distributed with source code and a "copyleft" style license, allowing anyone to add new features to, or improve the source code as they see fit. Open source is however, more than a way of distributing software. It is a way of life with a deeply evolved philosophy that is all about fun and exploration in an intellectual arena. Central to that philosophy is the notion of hacking and an evolved spirit of play that goes beyond concepts of work and survival, to paraphrase Eric S. Raymond, a prominent OSS advocate and one of the few to have successfully hacked the three major open source UNIX projects: LINUX, BSD, and GNU. There are also practical characteristics specific to OSS that go beyond the qualification of providing the source code in a software distribution. Specifically, to "officially" qualify as open source, software must meet a set of well-defined guidelines set forth in the several extant open source licensing schemes. These include the BSD artistic License, the X11 license, GPL and other "compatible" license formats (see http://www.gnu.org/licenses/license-list.html). Though these licensing schemes differ slightly they are united by a similar philosophy that is delineated by the Open Software Initiative's (OSI) Open Source Definition (OSD) v1.9, whose axioms are available at (http://www.opensource.org/docs/definition.php).

Conceptually, open source, also represents a new paradigm in software development. To use the terminology coined by Raymond, in his seminal treatise "The Cathedral and the Bazaar," OSS employs the Bazaar model of development while traditional, closed source software, represents the "Cathedral Model." Without going into the details of each development model and its respective benefits and weakness, I have outlined the characteristics of open source software below:

  • Releases are made as frequently as possible. There is usually a stable and an unstable release, the later with more features, but in need of testing.
  • Users of the software, whether developers or not, contribute to the development, documentation and distribution of the software. This participation is a key element in the growth and sustainability of the OSS movement and is a way of giving back. User participation varies from submitting bug reports to taking an active role in the development of a project.
  • The source is made available with the intent of enabling users to hack the source for educational and practical purposes.
  • Whenever possible it is best to avoid forking development (e.g. The split with Emacs and xemacs is a good example of this) and duplicating effort. The ultimate goal is to work together to extend existing projects and only introducing novel projects to fill a niche not already saturated.
  • Design the program, when possible, to be easily ported to as many other platforms as possible and embrace modularization of code for facilitated distribution of development work.

Prerequisites

The vanilla install of OS X is packed with so much OSS the list is too long to reproduce here. However, so as not to rattle users who may be unfamiliar with these tools, Apple, being Apple cleverly hid them from view, much as they did the Terminal application. Even every-day applications like Safari are based on open source projects. In fact, without OSS there would be no Mac OS X!

The point is, with a standard install you can use all the OSS bundled with the Mac OS and many outside projects that are specifically packaged for the Mac. These include the OSS listed on Apple's OS X downloads page in the "UNIX & Open Source" section. However, if you want to use any OSS that requires, god forbid, compilation, or software which relies on the X11 windowing system, you have to go beyond the vanilla install.

The following is a list of the pre-requisites required for many if not most of the OSS mentioned in this primer. Installing this recommended software will enable you to get the most out of what is available in the open source community and ensure that you do not run into dependency issues.

  • If you haven't done so already, install Apple's X11 implementation. This is a custom option for the standard Mac install and can be found among the packages located on the install DVD for Tiger under the System>Library>Packages directory, for those of you who have already installed OS X and just need to add that package.
  • The Developer Tools CD contains a rich array of Apple modified OSS needed for compiling software, as well as, many of the dependencies upon which OSS projects rely. Although the standard install of Developer tools will be adequate for most needs, I recommend also installing the X11 SDK and the optional compiler packages.

Note: Once you have installed the developer tools, be sure to repair permissions, as they will be changed in the process of installation and, if not remedied, may adversely affect your system performance.

Open Source the Easy Way With Fink and Darwin Ports

Both Fink and Darwin Ports are amazing package management systems designed specifically to enable Mac users to benefit from the diverse range of OSS without having to manually compile or port source code. In addition to having easy to use command line interfaces, both Fink and Darwin Ports have mature GUIs that match virtually every available terminal option (Figures 1-4).


Figure 1. Darwin Ports' PortBase Graphical installer and Updater


Figure 2. Darwin Ports' PortView


Figure 3. FinkCommander GUI

These environments are ideal for both novice and experienced users, who simply want the equivalent of Apple's Software Update for their OSS. Frankly, I use both all the time on my work machine to get my OSS fix. Although I have been known to compile the occasional program, I have gotten so used to these wonderful utilities that I hardily ever have to compile these days. Each package manager offers access to a bewildering array of software, with Darwin Ports having 2,292 packages and Fink having 5,013 packages across 23 categories! What's more, via the GUI, you can choose to install the binary or source versions for maximum flexibility. Even if you only use Fink or Darwin Ports for one piece of OSS software, it is worth the download and install. Both detect dependencies for your desired package and automatically download and install the support files for you. This dependency checking feature alone has saved me countless hours hunting down library files and widget kits needed to run a simple OSS application. Finally the distribution options for these package managers is phenomenal, with .dmg all in-one installers familiar to any OS X user and the ability to obtain the source directly via cvs. Choose one or both, but Fink and Darwin Ports are must-have additions to any Mac user's OSS toolkit.

To Compile or Not To Compile...

Often OSS will come in a variety of package and binary formats. While many, given the choice, will instinctively go for the binary or packaged formats, there are certain benefits to compiling. These include, the ability to better monitor the installation, to effectuate custom configurations, or for reasons of security. Regarding the last point, it is rare that package maintainers are ever malicious and, provided you get your package or binary from a reputable source (e.g. sourceforge.org, freshmeat.net, are two popular examples), you risk little or nothing. Ditto, for users of package utilities like Fink and Open Darwin Ports. Users of these utilities can also compile from source.

Regardless of whether your preference is for pre-compiled and packaged binaries or source auto-compiled using Fink, there will come a day, mark my words, when you will need to compile a piece of OSS. It may be because the binaries were not updated for the latest OS update, or because there are no OS X packages out there and/or your package utility has not indexed the particular piece of OSS you need. While I know many people who would prefer to eat a bug than open the terminal and compile software, developers often make it very easy to compile their source code. Much of the time the following terminal command is all that is needed:

$ ./configure && make && make install

There are, nonetheless, instances in which this command will not suffice. We will discuss this further in the next few sections and offer reasons, as well as, tips for doing more advanced compiling. We will also cover what porting source to the Mac involves.

Where To Find Mac Friendly Source Code

Although, sites specifically geared towards OSS on the Mac exist, they are often limited to pre-made packages and can be lacking in terms of breadth and quantity of OSS software. In contrast, platform independent sites like sourceforge.org and freshmeat.net not only offer Mac-specific source and binaries, but also offer a rich and centralized repository for the latest and greatest in OSS. I have seen many advertisements for CD distributions of Mac compatible OSS binaries and source, but have always felt that these missed the whole point of OSS: To distribute up-to-date builds with frequent patching, that frankly only a medium like the Internet will allow.

What's in the Source?

With all this talk of source code, you might be wondering what it is and how it is distributed. Even though compilation is usually accomplished with a simple three-step command (e.g. configure && make && make install), knowing what to look for in a source distribution can go a long way to ensuring a successful build of your OSS.

Your typical source distribution comes packaged as a compressed tarball (e.g. mysourcecode.tar.gz). When expanded and untarred, the source distribution will likely contain several files including .c and .h files, which represent the source code and header files, with README, INSTALL, and sometimes PORT files. Although most source code is written in a version of the C programming language, hence the .c files, other distributions may be written in perl, python, and a host of other languages. As such, you may encounter distributions without .c and .h files. However, Perl and Python do not require compilation, as they are interpreter-based scripting languages and are thereby much easier to deploy.

For easy compilation, developers often supply a configure script that is generated with the autoconf OSS utility. Alternatively, you may find that your OSS distribution uses the xmkmf script to invoke the imake program, which, in turn, will construct the make files needed for compilation. When confronted with OSS based on imake, be sure to read the INSTALL file for details. However, in most cases the following command can be employed to generate necessary files for compilation:

$ xmkmf -a

The compilation may then be completed by issuing the following terminal command:

make && make test && make install

There will also be cases in which no configure script is supplied with the source. You may, nevertheless, generate one by executing the autoconf.sh script. Please note that this applies only to source, which is based upon autoconf. Most commonly, you will run into this scenario when obtaining the source directly from a CVS (Control Versioning System) repository on the Net. As previously mentioned, you should then be able to run the configure command, followed by the make and make install commands. Though this is the typical manner in which compilation is effectuated, be sure to read the INSTALL file, as it should contain more precise install instructions. The PORT file, mentioned earlier offers suggestions for developers wishing to port the OSS to another UNIX platform, like OS X.


Figure 4. A view of a typical autoconf-based source distribution

What if the Source Code for The Software I want Isn't Mac Compatible?

Unless specifically designed to be platform independent, the source code has to have been ported to the Mac architecture in order to compile and run on OS X. Unfortunately, the Mac is not binary compatible with Linux, so even Linux packages ported to the PowerPC architecture are not usable. Mac OS X differs notably from Linux, SVR 4-based systems, and other Unix variants in its lack of support of the Executable and Linking Format (ELF). The binary format specific to OS X is Mach-O. This is why even PowerPC architecture specific source and binaries are a no go in OS X.

If the OSS you need is not available for OSX, consider using an emulator or configure a dual boot option with Yellow Dog Linux, for instance. Unless you are a developer and are willing to give up a significant amount of your free time to port the OSS, the options I mentioned are your only choice. On the plus side, however, is that with each passing day more and more OSS is being ported to OS X, which though not totally Open Source itself, has become one of the leading OSS platforms.

A Call To Arms

Although OSS is free, characterizing it as simply "free software" misses the essence of the OSS philosophy and the hacker ethic from which it originated. The open source movement, along with the Internet has enabled developers to adopt a radically different development model. This new model, termed the "Bazaar" by Raymond, has and continues to prove itself as a preferred model for software development and distribution and will continue to make inroads into virtually all areas of the technoverse. Built on a foundation of cooperation, group effort, and imbued with a spirit of play and intellectual curiosity, OSS represents a novel paradigm for the exchange of ideas and has the potential to fundamentally alter how we think of and use technology. Moreover, the detailed philosophies coming out of the open source movement offer a dramatic and compelling alternative to the traditional Protestant ethic, which values work for work's sake. The vision presented by the OSS movement is of a more evolved and egalitarian society, in which the joy of hacking transcends the Protestant work ethic. As part of the Mac community, it is our collective responsibility, to not only take from the rich array of OSS, but to give back as well. For developers the meaning here is very clear. However, non-developers are far from excluded and play a crucial role as software testers, technical writers, and distributors of OSS. I urge you all to take the plunge into the world of OSS. Together, we can take ownership of the technologies upon which we depend and really make a Jobsian "dent in the universe!"


Emmanuel Stein has been an avid Mac user since 1984 and has honed his cross-platform skills while working at France Telecom, Time Magazine and Reed-Elsevier. He has recently started his own Mac-centric consulting company, MacVerse, which offers implementation, system administration and development services geared towards the enterprise market. As a diehard GNU/Linux geek, he enjoys hacking open source software and experimenting with new open source projects on OS X. You may reach him at macverse@mac.com

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

BusyCal 2.6.6 - Powerful calendar app wi...
BusyCal is an award-winning desktop calendar that combines personal productivity features for individuals with powerful calendar sharing capabilities for families and workgroups. BusyCal's unique... Read more
MegaSeg 5.9.6 - Professional MP3 DJ appl...
MegaSeg is a complete solution for pro audio/video DJ mixing, radio automation, and music scheduling with rock-solid performance and an easy-to-use design. Mix with visual waveforms and Magic... Read more
KeyCue 7.5 - Displays all menu shortcut...
Need more than one license? Get KeyCue Family for just $15.99. KeyCue lets you view available Command key shortcuts. Simply press and hold the Command key to view a list of all available keyboard... Read more
Apple Pro Video Formats 2.0.1 - Updates...
Apple Pro Video Formats brings updates to Apple's professional-level codes for Final Cut Pro X, Motion 5, and Compressor 4. Version 2.0.1: Support for the following professional video codecs Apple... Read more
Maya 2015 - Professional 3D modeling and...
Maya is an award-winning software and powerful, integrated 3D modeling, animation, visual effects, and rendering solution. Because Maya is based on an open architecture, all your work can be scripted... Read more
EtreCheck 2.2 - For troubleshooting your...
EtreCheck is a simple little app to display the important details of your system configuration and allow you to copy that information to the Clipboard. It is meant to be used with Apple Support... Read more
OmniOutliner Pro 4.2 - Pro version of th...
OmniOutliner Pro is a flexible program for creating, collecting, and organizing information. Give your creativity a kick start by using an application that's actually designed to help you think. It's... Read more
VLC Media Player 2.2.1 - Popular multime...
VLC Media Player is a highly portable multimedia player for various audio and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, MP3, OGG, ...) as well as DVDs, VCDs, and various streaming protocols. It... Read more
Nisus Writer Pro 2.1.1 - Multilingual wo...
Nisus Writer Pro is a powerful multilingual word processor, similar to its entry level products, but brings new features such as table of contents, indexing, bookmarks, widow and orphan control,... Read more
Tinderbox 6.2.0 - Store and organize you...
Tinderbox is a personal content management assistant. It stores your notes, ideas, and plans. It can help you organize and understand them. And Tinderbox helps you share ideas through Web journals... Read more

Lifeline... (Games)
Lifeline... 1.1 Device: iOS Universal Category: Games Price: $2.99, Version: 1.1 (iTunes) Description: Lifeline is a playable, branching story of survival against all odds. Using your iPhone, iPad, or Apple Watch, you will help... | Read more »
Pandemic: The Board Game Has Gone Univer...
Don't let the virus win! Now you can download Pandemic: The Board Game, by F2Z Digital Media, for all of your iOS devices. The app is based on the fantastic board game by Z-man games. As employees of the CDC, you and your friends will have to work... | Read more »
Get Ready to Read Bloomberg Business on...
Fans of Bloomberg Business will soon be able to get all their news on the Apple Watch. The app lets you get the top headlines on your main screen and bookmark stories to read later. Using the motion detection in the Apple Watch, the headlines are... | Read more »
Watch This Homerun is Batting for the Ap...
Eyes Wide Games' Watch This Homerun is purportedly the first sports game coming to the Apple Watch, where you'll be up to bat as the pitcher tries to out-manuever you with fastballs, curveballs, and changeups. Using one-touch controls you can try to... | Read more »
Field Trip Can Take You on a Guided Tour...
Field Trip, by Google’s Niantic Labs, is an exploration app that gives you details about the awesome places you can discover wherever you find yourself. The app can show you local history, delicious restraunts, the best places to shop, and places to... | Read more »
Watch Your Six - SPY_WATCH is Infiltrati...
SPY_WATCH, by Bossa Studios, is a new game designed for the Apple Watch. Runmor has it your spy agency has fallen out of favor. To save it, you'll need to train-up a spy and send them on missions to earn you a stunningly suspicious reputation and... | Read more »
Both Halo: Spartan Assault and Halo: Spa...
Halo: Spartan Assault and Halo: Spartan Strike, by Microsoft, have officially landed on the App Store. Spartan Assault pits you against the Covenant with missions geared to tell the story of the origin of Spartan Ops. In Spartan Strike you'll delve... | Read more »
The Apple Watch Could Revolutionize the...
It’s not here yet but there’s that developing sneaky feeling that the Apple Watch, despite its price tag and low battery life, might yet change quite a lot about how we conduct our lives. While I don’t think it’s going to be an overnight... | Read more »
Mad Skills Motocross 2 Version 2.0 is He...
Mad Skills Motocross 2 fans got some good news this week as Turborilla has given the game its biggest update yet. Now you'll have access to Versus mode where you can compete against your friends in timed challenges. Turborilla has implemented a... | Read more »
Kids Can Practice Healthy Living With Gr...
Bobaka is releasing a new interactive book called Green Riding Hood  in May. The app teaches kids about yoga and organic style of life through mini-games and a fun take on the classic Little Red Riding Hood fairy tale. | Read more »

Price Scanner via MacPrices.net

Sale! 15-inch Retina MacBook Pros for up to $...
 MacMall has 15″ Retina MacBook Pros on sale for up to $255 off MSRP. Shipping is free: - 15″ 2.2GHz Retina MacBook Pro: $1794.99 save $205 - 15″ 2.5GHz Retina MacBook Pro: $2244.99 save $255 Adorama... Read more
New 2015 MacBook Airs on sale for up to $75 o...
Save up to $75 on the purchase of a new 2015 13″ or 11″ 1.6GHz MacBook Air at the following resellers. Shipping is free with each model: 11" 128GB MSRP $899 11" 256GB... Read more
Clearance 13-inch Retina MacBook Pros availab...
B&H Photo has leftover 2014 13″ Retina MacBook Pros on sale for up to $250 off original MSRP. Shipping is free, and B&H charges NY sales tax only: - 13″ 2.6GHz/128GB Retina MacBook Pro: $1129... Read more
Clearance 2014 MacBook Airs available startin...
B&H Photo has clearance 2014 MacBook Airs available for up to $200 off original MSRP. Shipping is free, and B&H charges NY sales tax only: - 11″ 128GB MacBook Air: $729 $170 off original MSRP... Read more
16GB iPad mini 3 on sale for $349, save $50
B&H Photo has the 16GB iPad mini 3 WiFi on sale for $349 including free shipping plus NY sales tax only. Their price is $50 off MSRP, and it’s the lowest price available for this model. Read more
Mac minis on sale for up to $75 off, starting...
MacMall has Mac minis on sale for up to $75 off MSRP including free shipping. Their prices are the lowest available for these models from any reseller: - 1.4GHz Mac mini: $459.99 $40 off - 2.6GHz Mac... Read more
Taichi Temple First Tai Chi Motion Sensor App...
Zhen Wu LLC has announced the official launch of Taichi Temple 1.0, the first motion sensor app for Tai Chi, offering a revolutionary new way to de-compress, relax and exercise all at the same time.... Read more
CleanExit – Erase your Hard Drive Quickly, Se...
CleanExit works on both Macs and PCs, securely and permanently deleting all files from any type of hard drive, flash-based drive or camera media card making the files permanently unrecoverable.... Read more
250 iPhone 6 Tips eBook Released for $1.99
Bournemouth, UK based iOS Guides has released 250 iPhone 6 Tips, a new eBook available in the iBookstore that reveals a wealth of tips and tutorials for iPhone 6 and iPhone 6 Plus. Priced at $1.99,... Read more
TigerText Introduces First Secure Enterprise...
TigerText, a provider of secure, real-time messaging for the enterprise, has announced the launch of TigerText for the Apple Watch. TigerText for the Apple Watch enables users to securely send and... Read more

Jobs Board

*Apple* Solutions Consultant - Retail Sales...
**Job Summary** As an Apple Solutions Consultant (ASC) you are the link between our customers and our products. Your role is to drive the Apple business in a retail Read more
*Apple* Solutions Consultant - Retail Sales...
**Job Summary** As an Apple Solutions Consultant (ASC) you are the link between our customers and our products. Your role is to drive the Apple business in a retail Read more
DevOps Software Engineer - *Apple* Pay, iOS...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
*Apple* Pay - Site Reliability Engineer - Ap...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
Sr. Technical Services Consultant, *Apple*...
**Job Summary** Apple Professional Services (APS) has an opening for a senior technical position that contributes to Apple 's efforts for strategic and transactional Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.