Open source
Open source is an approach to creative process most commonly found in computer software, although not limited to that domain. It has been variably described as a philosophy or development methodology, depending on one's degree of belief in ideas of digital freedom.
Contents |
[edit] Cliff Notes history
Although open source software (in the sense of software with freely modifiable and redistributable source code) existed ever since the invention of high-level programming languages such as Fortran and later C, predominantly in academic research, the first attempt to legally codify the concept starts with the free software movement, founded by Richard M. Stallman and the Free Software Foundation.
Stallman's free software program was a response to increasing commercialization of software, which previously was treated as data that users could freely copy between computers. The definition of free software published by the FSF in February 1986[1] recognized four basic freedoms:
- Freedom 0: The freedom to run the program for any purpose.
- Freedom 1: The freedom to study how the program works, and change it to make it do what you wish.
- Freedom 2: The freedom to redistribute copies so you can help your neighbor.
- Freedom 3: The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits.
To ensure the protection of these freedoms, Stallman wrote the GNU General Public License, a software license that used the legal institute of copyright in an unorthodox manner: not to give the developer monopoly on modifying and redistributing the work, but to guarantee that the user has the same rights as the developer, by demanding that all derived works are distributed under the same license with their source code provided.
The term "open source" was proposed as an alternative to "free software" more marketable to commercial companies, to distance the methodology from Stallman's perceived ideological extremism. The term was spearheaded by the Open Source Initiative,[2] founded by Bruce Perens and Eric S. Raymond in response to Netscape publishing the source code for its web browser suite (thus giving birth to the Mozilla project). The biggest selling points focus on Freedom 1 above; if you have the code to audit, in theory, you can find most or all of the bugs and security issues more easily. (The converse, that a potential attacker can do the same thing, is held to be less of a concern, as it is assumed that the attacker probably knows what you're up to anyway, and having the source code allows you to protect yourself in spite of that.)
Today, open source software has achieved significant penetration of the market and shown itself to be competitive with proprietary software and a viable alternative to it. Various Linux-based operating systems have found their way into Internet servers, controllers, consumer appliances, and mobile phones, although so far they have failed to pose a significant threat to the desktop domination of Microsoft Windows. Still, open source desktop products such as the Mozilla Firefox and Google Chrome web browsers, GIMP image editor, and OpenOffice.org office suite have found their way onto Windows and Mac OS X desktops as well.
Similar concepts were later applied to areas of creativity other than software. Wikipedia was the first wiki project to achieve worldwide renown, and the copyleft GNU Free Documentation License (and later, Creative Commons license) made it possible to jump-start specialized wikis by copying articles between them. Creative Commons licenses have been used to create a pool of freely redistributable texts, images and multimedia works, and authors such as Cory Doctorow have been known to release their works under Creative Commons terms.
[edit] The logistical snarls of open source software
In theory, anything can be open source. In practice, however, the free and open source software (FOSS) market developed around a specific set of programming practices common in the academic computing world of the 1970s and 80s:
- Everything can be reduced to human-readable text in a relatively standardized programming language (ISO C or C++, Common Lisp, Perl, Python, PHP).
- Data and code are expected to be shared freely, which (among other things) complicates game development because game data often must be obfuscated, if only to thwart cheaters.
- People expect to get paid for doing the work, but not the work itself, per se — in other words, software is treated as a work for hire. (This leads to a business model of giving the software away and charging for support; this works, sometimes, but has a spotty track record.)
- All users have access to the necessary development tools. (Outside academic environments, this was most emphatically not the case; free development tools like Apple's HyperCard and many different dialects of Basic existed nearly everywhere, but it wasn't until the late 1990s that a hobbyist of modest means could get a professional-quality C compiler for cheap without having academic or corporate connections. FOSS culture was a big part of changing that.)
- Code modifications are expected to be strictly segregated on program text level; the code doesn't muck about with itself or other code enough to worry about.
- Everything can be neatly packaged for distribution and built and installed without too much trouble.
All of these points hit snags:
- How does one represent binary data? XML and Apple's Rez language were partial solutions to this problem, but some data simply can't avoid being binary, because even in "human-readable" form (i.e. Base64, BinHex, and the like) it still looks like random character gibberish.
- Some programming environments, particularly object-oriented or modular languages like C++, Java, and Ada, are specifically designed so that the programmer doesn't and shouldn't muck around with code that their work interacts with; in fact, for complex political reasons, the GNU Compiler Collection team intentionally tried to thwart this modularity, leading Apple to throw out years of work with the GCC codebase in favor of its own, in-house built Clang compiler. As for games, a compromise situation has cropped up from time to time (most famously the id Tech series of first-person shooter engines) where the game engine is FOSS but the game data is proprietary; most people are happy with this. Most.
- Quite simply put, it's nice to get paid for doing your job, but a lot of people also want to make royalties off their hard work. This has led to some ugly situations in which the creator wants to take their product commercial but the user base rejects this and tries to fork it; this happened with SSH, for example, and led to a splintered standard with two different versions providing roughly identical functionality. [3]
- Even now, where basic development environments are either standard features (most Linux distros) or freely available (Mac and Windows), the traditional Unix build environment that most FOSS projects assume is rather arcane to the casual user. Projects like MacPorts and apt-get mitigate this somewhat, but rarely enough for a total newbie. In addition, products like Tivo and most Android phones use FOSS software as their base, but often don't offer an easy way to actually take advantage of the open sourceness; this usually means, at the very least, a complex jailbreak procedure, resulting in a voided warranty and (in some jurisdictions) the potential for a copyright violation. (Avoiding this was a major part of the impetus behind the creation of the controversial GPLv3.)
- There are a number of special-case versions of the GNU General Public License in circulation simply in order to get around bizarre legal tangles created by the GPL because languages don't always follow Richard Stallman's C/Lisp-based standards. There is also a passionate debate over the permissibility of combining FOSS and proprietary code in the same project; the "complex political reasons" mentioned above in the dispute over the GCC package were largely triggered by this, and the debate has been the source of one of the bigger of the many schisms within the FOSS community.
- In the case of sandbox-like environments like Squeak or many Lisp implementations, segregating just the important stuff into a tarball is all but impossible without very well-defined import and export capabilities. The root environment itself may be open source, but in extreme cases it's all but impossible to figure out what exactly the software package consists of.
Much of this is important for one simple reason: the biggest selling point of FOSS is that the user is free to use, modify, and/or audit the software as they see fit. While this is an extremely helpful feature in many cases, the simple fact is that most end users lack the expertise to go bug-hunting, or even customize a config file here and there, never mind sift through code looking for vulnerabilities. Furthermore, only the largest IT departments even have the expertise and numbers to do code audits, and corporate entities tend to want to deflect responsibility for anything they can plausibly avoid being in control of. Although the exact motivations (apart from simply having a convenient blame sink in the publisher's support department) aren't usually talked about, a sufficiently motivated, technically savvy scaremonger could start a shareholder riot by claiming that through the use of open source software, a company must take responsibility for bugs that hit the bottom line.
[edit] Makers making with the making: open source hardware
Of course, the creation of open source software (and its enabling effect on hobbyist and low-budget software development) eventually led to the creation of open source hardware, an altogether different beast based on the same ethos. Open source hardware as a field of endeavor seems to have sprung out of the revival of interest in robotics that was spurred by NASA's Mars Pathfinder mission; that in turn led to a merger with more traditional crafting and toy-building that is now known as the Maker movement, after one of its most prominent magazines, O'Reilly's Make.[4] The demand for easy-to-use, easy-to-integrate computing capability led to the creation of computing platforms like the Arduino[5] single-board computer that were based on off-the-shelf parts and non-proprietary software; the result was that if someone found an open source hardware device that almost did what they wanted, they could in theory not only make the modifications they needed with the same documents that the original creator used to build the device, they could also capitalize on it and resell it without having to worry about royalties and licensing. This was something new — in the past, magazines like Nuts and Volts and Circuit Cellar as well as books like the annual ARRL Handbook[6], the works of Forrest Mims, and numerous "cookbooks" of predesigned circuits for every possible purpose[7] catered to the electronic hobbyist market and got the plans out there for people to work with, and kits of electronic parts have always been widely available, but this was the first time the actual guts of these custom devices were available as off-the-shelf, pre-assembled parts that minimized the gruntwork that inexperienced hobbyists had to deal with. Thanks to the popularity of open source hardware, it is literally possible to build a homemade mobile phone with off-the-shelf, pre-built subassemblies and a bare minimum of soldering.[8]
Open source hardware devices range from simple sensor modules all the way up to fairly sophisticated single-board computers like the TI BeagleBoard,[9] even including fully assembled robots and fabrication devices like 3D printers and CNC mills.[10] (Considering CNC tech was the central issue of a major Cold War spy scandal (the Walker spy ring of the 1970s and 80s), the level of sophistication available to mere mortals on thousandaire budgets is remarkable.) And some hardware never even exists in physical form — the OpenCores.org OpenRISC processor is designed to be used in FPGAs, essentially computer chips designed to simulate other computer chips, and even software-defined radio has become popular in the traditionally analog amateur radio world. (In fact, one of the nice things about widely available cheap computing power is that it's now possible to do a lot of things in software that used to require some fairly complex electronics work.)
However, the difference between open source hardware and software is obvious: plans, like software, are cheap to distribute. Actual implemented hardware, on the other hand, not so much; for example, while everything you might need to build your own Arduino variant is readily available, actually getting it out to other people who might want it but don't have the resources to build it themselves (circuit board etchant, for example, is nasty-toxic, and surface-mount soldering is just a pain) still requires a round or two of fundraising, as well as finding a fabricator who will actually do the work for you. Such companies do exist, and a few even cater specifically to the Maker market, but you still have to source your own parts, and some suppliers won't even pick up the phone for an order of less than a couple thousand parts.[11] Overall, the hardware barrier to entry is sufficiently high that "open source" hardware is at best a theoretical concept for most people.
In addition to traditional sources for craft items and electronic parts, a number of companies exist today at least in part to cater to the Maker market, including SparkFun, Adafruit, Element14, Parallax, Seeed, and old standbys like Jameco and RadioShack. [12]
There is a significant risk in selling open source hardware as a business though; MakerBot, a company specializing in 3D printers and accessories, came out of the RepRap community, which develops designs for homemade printers. MakerBot's original models were based heavily on RepRap designs and were open source; however, after outside manufacturers began selling identical copies of MakerBot designs without significant value added (considered a violation of the social contract governing the open source hardware community), they chose to go to proprietary hardware designs (part of their software stack is still FOSS and the old designs are still available on their Thingiverse website), infuriating the RepRap community, putting MakerBot in something of a no-win situation. They decided to follow the money.
[edit] Disputes
[edit] Open source vs. free software
While "open source" and "free software" mean basically the same thing from a legal standpoint, and are often used interchangeably (as in the acronym FOSS, "free/open source software"), they are commonly understood to carry different social charge. The extent to which they differ is argued, but typically, "free software" is ideologically charged and refers to the philosophical points advocated by the FSF (Stallman, notably, believes that all software should be free). "Open source", on the other hand, refers to the pragmatic methodology that is a means to an end — typically to save costs, ensure quality of software, or promote open standards by releasing their reference implementations. The distinction in practice is vanishingly small, limited to a few edge cases involving patent law.
The exact meaning of "free" in this context is confusing and revolves around a distinction that isn't normally made in the English language; the Romance-derived terms "libre" and "gratis"[13] are used to make the distinction between, respectively, "legally unencumbered" and "at no cost", or, as it's more commonly phrased within the community, "free as in freedom" versus "free as in (free) beer". Libre software essentially allows all users to do pretty much whatever they want with it for any purpose, including commercial use, as long as they respect the copyright holder's conditions, which at the least include not trying to lock up the existing code base and giving acknowledgement to the copyright holders, and can also include requiring the redistribution of publicly-available changes in source form (private usage is generally not subject to redistribution conditions); high-profile examples include the Linux kernel, GNU Compiler Collection, Mozilla Firefox, LibreOffice, and the WebKit HTML rendering engine. Gratis software, on the other hand, is simply available for no cost, or for the price of a registration, but does not necessarily include or allow redistribution of the source code or modifications thereof; this includes demonstration copies (often time-limited), programs sold on a razor-and-blades model where the base app or engine is free but additional content and features are sold as in-app purchases or downloadable content (common with games and mobile apps), or even professional-grade programs with free single-user (sometimes noncommercial) licenses.
[edit] Open source vs. open data
When Steve Jobs declared a ban on Adobe Flash on the Apple iOS platform, it brought to the surface a long-standing dispute over the definition of platform openness. Although Apple has contributed a fair amount to the open source community, including the Darwin OS kernel underlying Mac OS X and iOS and the Clang compiler as well as buying and maintaining the CUPS printing architecture, they're still something of a boogeyman in open source circles because of their tight control of the iOS platform. Jobs' argument at the time was partly technical (Flash is a battery suck) and partly based on the conviction that the distinction between proprietary and FOSS software is less important than whether applications can interoperate effectively; indeed, although they haven't been terribly consistent about it, Apple has been strongly committed to using certain open standards like XML, HTML5, and the like, as well as making the Apple Lossless audio codec open source.
The question of free software vs. open data formats obviously is not an either/or question, but it does demonstrate the importance of futureproofing against bit rot — the tendency of data to become inaccessible as proprietary formats become unreadable as software changes.
[edit] Copyleft vs. non-copyleft and other reasons for choosing a license
While the message of an average proprietary license is as simple as "all your rights are belong to us and you cannot do as much as sneeze without our permission", choice of license is a matter of serious consideration in the open source community, with whole projects being forked over that (such as XFree86 to X.Org). A "copyleft" license such as the GNU GPL forces creators of derivative works to release them under the same license as the original, with complete source code (unless we're talking about something that has no source code, like a wiki article). By contrast, non-copyleft or permissive licenses[14] such as the BSD or MIT license have no such requirements, and users are free to create derivative works under another license, even a proprietary one. The choice of license is motivated by many factors, including the developer's ideological beliefs and intended use for the product.
As a general rule, corporate projects tend to prefer either in-house licenses or less restrictive general licenses like BSD, MIT, or LGPL, out of fear of cross-contaminating proprietary products with encumbered code. Another motivation is a specific response to some of the policies of the FSF; as noted above, Apple created the Clang/LLVM compiler for C, C++, and Objective C because of a conscious decision by the maintainers of GCC to partially obfuscate the internal structure of the compiler system, combined with a desire to avoid certain clauses in the GPLv3, under which newer versions of GCC have been released since Apple forked the code at version 2.2. (Clang has since begun to replace GCC for users of BSD systems.)
Some communities have chosen specific licenses as a matter of common practice; for some time the Lego Mindstorms hacker community was informally standardized on the Mozilla Public License, a copyleft license that reserves certain rights to the original copyright holder. In addition, due to differences in the ways that programming environments are used, there are some licenses that are written to reflect common practice in different languages than C or C++, such as the Lisp LGPL[15] or the GNAT Modified GPL[16] for Ada.
Closely related is the "binary blob" issue, in which a product mixes open code with parts that are proprietary and often locked down tight. The FSF for this reason is somewhat phobic about programs with plug-in architectures (see above with GCC), and it has been an ongoing debate in the Linux community at large going back to the OS's breakout period in the late 1990s. Considering Linux is now very, very common -- the Android OS is based on it, among other things, and it has its share of proprietary bits and lockdowns -- this looks to be a debate the purists lost a long, long time ago, but it still goes on.
[edit] Cathedral vs. bazaar
The Cathedral and the Bazaar was an essay by Eric S. Raymond on two different approaches to open source software development. Under the "cathedral" model, the project is developed behind closed doors, and only final releases are made available with their source code. Under the "bazaar" model, the code is in public view at all stages of development, usually in a version control system; it is similar to revision histories stored for wiki articles, but for software code.
Raymond's essay helped convince prominent cathedral-style projects of that time to switch to the bazaar model, and today the latter is dominant. In addition to providing more transparency and allowing users to contribute at all stages of development, it reduces the risk of a project stopping development entirely if its founders lose interest in it.
[edit] Microsoft
The opinions of open source software by commercial corporations vary considerably. Some do not mind it, others actively support and contribute to it (such as IBM, Google, Red Hat, Novell, and Canonical), and others still declare support for open source on paper but demonstrate repeated inability or unwillingness to understand how the community works (most prominently Oracle and Apple). Microsoft, however, takes the cake.
Microsoft's attitude towards open source would be charitably described as ambivalent. In the 1990s and early 2000s, Microsoft attacked the GPL and Linux with slanderous claims, calling them "potentially viral",[17] "un-American", "communist",[18] and a "cancer"[19]. When it became clear that laughing-off tactics didn't work, Microsoft instead turned to patent trolling, demanding (and sometimes successfully gaining) royalties from its patents allegedly violated by the Linux kernel and its derivative Android — in effect profiting from an OS directly competing with their flagship product, whose code is not in any way theirs.[20] With such gestures, it's hard to to treat Microsoft's claims of being friendly to open source seriously. The few open source products they do support (such as Mono, an independent implementation of the .NET programming platform) are mostly based on their standards and play by their rules.
[edit] Software patents and intellectual property theft
A frequent (but only partially true) accusation is that the FOSS world rarely creates anything, and that much of what it copies is done incompletely or incompetently. In countries that recognize software patents, this can create an incredibly complicated situation where certain software (particularly audio and video codecs) are freely available but illegal to use without making specific arrangements with patent holders; needless to say, those arrangements are rarely made, which means a lot of open source users operate in a legal gray area. Even without bringing patent law into it, commercial software developers often resent seeing their hard work being duplicated and given away for free.
This hasn't stopped a lot of developers from creating workalike software, usually in the name of evading licensing restrictions in specific countries or enabling copying of copy-protected media. Such products often represent significant works of reverse-engineering:
- Andrew Tridgell's Samba [21] is an implementation of Server Message Block filesharing (mostly known these days as Windows filesharing, but the protocol goes back a bit further), and is a critical piece of infrastructure in many FOSS operating system distributions, including most Linux distros and Mac OS X up to 10.6 Snow Leopard. Tridgell wrote it with nought but a packet sniffer. (Tridgell was also indirectly responsible for Linus Torvalds' creation of the Git source code control system, after reverse-engineering the commercial BitKeeper system that the Linux kernel developers were using at the time, thereby infuriating BitKeeper creator Larry McVoy and causing McVoy to revoke the kernel developers' user licenses.)
- Jon "DVD Jon" Johansen is the best known of three authors of the DeCSS library, created in the early 2000s to bypass DVD copy protection.
- George "geohot" Hotz[22] was among the pioneers of jailbreaking Apple's iOS platform, and got massively sued by Sony for doing the same thing to the Playstation 3 after Sony removed Linux support from the platform.
[edit] Effects on the market and accusations of antitrust violations
A small minority of open source opponents like Catherine Fitzpatrick and Daniel Wallace, as well as some corporate personalities like Steve Ballmer, have attacked the concept of open source software as communist and/or an illegitimate price fixing scheme to keep software developers from making money. However, the Free Software Foundation and the Open Source Initiative have generally taken the position that there's nothing stopping developers from charging for their software and code or for physical delivery or support for the software in question.
The deeper question is how this affects the market overall. There have been a few aborted efforts to tax or otherwise regulate open source software to preserve proprietary software's position in the market, but they've generally been laughed out of existence. That hasn't stopped some governmental entities from, presumably at the bidding of groups like the Business Software Association, trying to stigmatize countries switching their IT infrastructure to open source products as not respecting intellectual property rights. FOSS licensing has also been crucial in a number of efforts to break DRM chokeholds (the DeCSS DVD decryption algorithm and jailbreaks for platforms like iOS and the Playstation 3 are current examples) as well as to insure continuity of crucial infrastructure projects.[23]
Perhaps ironically, the market generally ignores open source software till it can't. Oracle still prices their flagship database software as if MySQL (which they currently own) doesn't exist. Cisco sold off Linksys to Belkin in part because being able to run software like dd-wrt on home/SOHO network gear rendered Cisco's lower-end pro networking products more or less useless.[24] Creative tools like Photoshop seem to take advantage of the somewhat more arcane interfaces of their open source equivalents in order to continue charging customers traditionally high prices for their software; although this usually includes the promise of tech support (as well as providing a convenient blame sink for software snafus), it still prices people out of the market who would otherwise find such software to be an enabling technology. The lack of support for open source software in much mainstream computer press means that people don't realize they have options.
[edit] Unicorn's law
Unicorn's law states that 'If you are a woman in open source, you will eventually give a talk on being a woman in open source.' Yep, women are so marginalized in programming that there's an internet law about it. So much for equality. And if you know the numbers, the law is nessercery. Depending on which survey you look at, there could be as little as 1.5% of open source programmers being women, with 5%, being the highest result. Naturally there are attempts to even out the numbers.
[edit] See also
| |
For those of you in the mood, RationalWiki has a fun article about Open source. |
[edit] Footnotes
- ↑ GNU's Bulletin, Volume 1 Number 1, page 8
- ↑ History of the OSI
- ↑ It has also been flagrantly abused, not for money, but simply to spite a competitor; a notorious incident where a minority copyright holder with a known conflict of interest scuttled the iOS port of the VLC media player is mentioned in Essay:Open Source and the insanity problem.
- ↑ http://makezine.com
- ↑ http://arduino.cc
- ↑ The American Radio Relay League (http://arrl.org, also known by the callsign of its founder W1AW) is the main interest group for amateur radio operators in the United States.
- ↑ Including, but not limited to: radio transmitters and receivers, simple computing devices, audio electronics, musical instrument-related circuits such as guitar effects, and so on.
- ↑ http://makezine.com/2013/08/02/seeed-studios-arduino-phone/ http://www.instructables.com/id/ArduinoPhone/ http://blog.arduino.cc/2013/08/12/diy-cellphone/
- ↑ http://beagleboard.org
- ↑ Interestingly, the original IBM PC was very close to being an open source design, having been cobbled together mostly from off-the-shelf Intel components, and even shipping with a full motherboard schematic. The only sticking point was the BIOS, and when Compaq created their own version, it was off to the races. Ultimately, Microsoft won, of course.
- ↑ This is one reason the popular Raspberry Pi single-board computers are not considered open source; the developers work for and sourced their parts from Broadcom, and Broadcom doesn't deal with the hobbyist market. At all. Not even to allow people to write open source drivers for their graphics or networking hardware.
- ↑ In fact, the Maker market very likely saved RadioShack's moribund DIY sector; by 2005, they'd become known as "that place where they're always trying to sell you a cell phone", but eight years later they've rebounded and once again carry a respectable and very modern selection of DIY electronic parts.
- ↑ There is a more thorough discussion at http://en.wikipedia.org/wiki/Gratis_versus_libre.
- ↑ Some people like the term "copycenter", as in "take it down to Kinko's and run off a couple copies".
- ↑ http://www.cliki.net/LLGPL
- ↑ http://en.wikipedia.org/wiki/GNAT_Modified_General_Public_License
- ↑ Microsoft license spurns open source
- ↑ MS' Ballmer: Linux is communism
- ↑ Microsoft CEO takes launch break with the Sun-Times
- ↑ Well, if you want to be technical, they
were forced to releasekindly and selflessly donated 20,000 lines of Hyper-V driver code to the Linux kernel after being caught with GPL violation. - ↑ http://samba.org
- ↑ http://en.wikipedia.org/wiki/George_Hotz
- ↑ The Qt application framework, for example, was created by TrollTech with the assurance that if they ever went under, it would be released under a BSD-type license. After Nokia bought TrollTech, the point was rendered moot by releasing Qt 4.x under the LGPL; current owner Digia has done something similar, keeping control of the commercial side of the brand while releasing it to the community at the Gitorious public repository site. Similarly, OpenOffice.org, under a cloud after Oracle's takeover of Sun, was first forked to create LibreOffice, then donated to the Apache foundation.
- ↑ Under Belkin's ownership, Linksys has reintroduced Linux-based hardware targeted specifically to the hacker community.