Looking for the previous guiStuff?
It's still here, the content didn't go anywhere. You may want to check out this new guiStuff though -- It's rather informative.
References/Tutorials:
Intro Documents:
guiStuff:
::Stuff for the multi-spec coder;
Coding, formats, standards, and other practical things.
<!-- Guides & Articles
What is Free Software?
The definition of Free Software is often confused with various other definitions, such as "Freeware", and "Free" in relation to price. What this document is referring to is Free Software as defined by the Free Software Foundation, which means software which can be used, copied, studied, modified, and redistributed with little or no restriction. Freedom from said restrictions is central to the concept, with the opposite of Free Software being Proprietery Software (which, again, does not pertain to price).The Free Software Foundation defines the four freedoms which make up Free Software:
- Freedom 0) The freedom to run the program, for any purpose.
- Freedom 1) The freedom to study how the program works, and adapt it to your needs. Access to the source code is a precondition for this.
- 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 to the public, so that the whole community benefits. Access to the source code is a precondition for this.
All of the software that guiStuff covers and/or suggests is such Free Software. This is not a stance against proprietary or commercial software, but simply a practical way to ensure that users of the website are not hindered either by monetary barriers, nor the operating system on their computers (Free Software, as mentioned above, does not relate to its price, but the four freedoms make it necessary for such software to be released for free in monetary terms as well). Actually, Free Software does not require it to be platform-independant (which means it can run on any of the major personal computer operating systems), but most of it is so by nature, and the software mentioned on guiStuff was specifically selected to be so.
What are some Examples of Free Software?
If you're a desktop user, you're probably already using Free Software quite a bit. Every software package released by the Mozilla Foundation, including the Firefox Browser, and the Thunderbird E-Mail client, among dozens of other programs, is Free Software. You've probably heard of Open Office, the Gaim IM application, the GIMP image manipulation software, the Azureus BitTorrent Client, the VLC Media Player, and the Audacity audio editing software. All of these are Free Software, and you can download them for free right now, use them for as long as you like, and share them with whomever you like. While you're at it, I'd recommend reading Tools of the Trade for more Free Software suggestions.But those were the Desktop Applications. The software that's running the internet as we know it today is made up primarily of Free Software. First, the Operating Systems: Linux, FreeBSD, and OpenSolaris are all Free Software Operating Systems. Each has several "flavors", often referred to as 'distributions', or 'distros' for short. These are the Operating Systems that are being used by the large majority of small, medium, and large businesses all over the world to run their servers. By servers I mean all types of servers -- from Web Server computers to Databases. Make no mistake, however: Both Linux and FreeBSD have Desktop-dedicated versions which you can download and try for free, and use in conjunction with whichever Operating System you're using now. I'd recommend trying out Ubuntu since it's the easiest and most user-frieldy, all the while not sacrificing Linux's powerful features.
But by "running the internet" I wasn't just referring to the Operating Systems. The most popular Web Server software, by a large margin, is the Apache Web Server. One of the most powerful and versatile Databases is MySQL. Not only are they both Free Software, but you don't need any special hardware to try them out on your local machine. You can just go and download the 'desktop versions' (these are really the normal versions with a GUI, mostly for development purposes) from their respective websites, and setup a server environment on your own desktop, no matter what Operating System you're running.
What about the scripting languages? Are they standards or languages? That depends. In the case of JavaScript, for example, it's a standard. It's called ECMAScript or ECMA-262. In that case, it's a matter of how you run that standard, and since the specification for that standard is open, there are plenty of Free JavaScript Interpreters out there. Now as for other scripting languages: The three most used scripting/interpreted languages are the "P" languages -- Perl, PHP, and Python. All of them are Free. You can go to their respective websites and download their interpresters, source codes, specifications, versions, documentation, mods, apps, etc., to your heart's content.
Even proprietary software has Free Software within it. These are commonly libraries that are included within the program that provide some specific function for the program. If you read carefully along the small print of the 'About' page in many commercial software packages, you'll see these software libraries mentioned, because while the developers don't have to pay for them, they can't claim that they wrote what they did not.
It's not just about computers in blocky beige boxes
Have you given any thought to your Wireless Router? Isn't it cool that it lets you connect several computers directly to it via wires, and then a bunch more wirelessly? And to configure it you can log into it, just like logging into a website, and make chages to your configuration. And it only cost, what? $80? Do you see this kind of cheap availability in other hardware? Yes, actually, you do. DVD players, the one that play DIVX, XVID, and a bunch of other formats. Oh, and maybe you have a TiVo. These things really give you a bang for your buck. This is largely due to the Free Software inside them The Wireless Router is running some version of Linux with a modest server inside, along with some other software to handle network traffic. The DVD players have software decoders in them that cost virtually nothing to setup, and once they've been setup, you can upgrade them from the manufacturer's website (yes, DIVX isn't free, and technically some fee has to be paid for somebody to write the letters "MP3" on their device, but the software the does the work is Free). The TiVo is running Linux to quite the extent, actually. It's really using a lot of the features in it, not just the basics like the Wireless Rounter is.And why do all those cell phones and mobile devices have Java in them? Well, at the time, Java was Open Source, but technically, not entirely 'Free' (today, it's completely Free, by the way). But device designers and manufacturers saw that a massive community of people were releasing their Java code as Free Software, and what's better than to release a product that gets better without them having to do anything? They gradually sifted through the software that was released, and adopted what they needed into their devices. Meanwhile, any user of their devices could download or write Java Programs and upload them to the device. It's a no-brainer from the company's point of view.
And what are they placing on mobily devices today? Linux, of course. Why go through the trouble of developing an operating system and upgrading/maintaining it, when somebody else can do the job for them. It allows them to sell cheaper, and still make a larger profit.
Licenses
Free Software is commonly released under one of a recognized group of licenses. While this is not a precondition to the software being free, the licenses that already exist cover just about any paradigm that free software developers personally "relate to" or "reason with", so there's simply no reason to add new licenses. While understanding the specific licenses may seem like drilling a bit deep into the subject, it's actually a central issue in Free Software, and in fact, at its base, a non-technical, and relatively simple to understand subject.For the most part, Free Software licenses are devided into "copy-left" licenses, and "public domain" licenses (that is to say, either a license is very close to one form, or very close to the other). There is a big difference between the two general types. Software released under a permissive, public domain license, can be used within commercial and/or non-Free software releases, with few or no restrictions upon the user. On the other hand, a "copy-left" license states that any software that uses the software released under such license, must also be released under the same license, and provide the same liberties (the 4 freedoms mentioned above) as did the software it is using does. In other words, a "copy-left" license is inherited, or a reciprocal license. The GNU General Public License establiashed this concept, and is the most commonly accepted form of a "copy-left" license used today.
Most Free Software is released under one of the following license agreements:
- GNU General Public License - The strict GPL license is the most common, and the most demanding of users of software released under it. The Linux Kernal is released under (version 2 of) this license, as well as the GNU Compiler Collection (The GCC).
- GNU Lesser General Public License - This license was originally released as a compromise between the strict GPL license and the more permissive licenses such as the BSD license and the MIT license. It does not carry the "inheritance" element that the GPL license does, which means that commercial software may use software released under this license without having to be released under the GPL, or the LGPL license itself.
- BSD Licenses - Sometimes referred to as "BSD-Style" licenses, these licenses are more permissive that the GNU licenses. The original was used for the Berkly Software Distribution (BSD), a Unix-like operating system for which the license was named.
- Mozilla License - The Mozilla Public License was developed for software released by the Mozilla Foundation (it was actually developed prior to that, but today that is its primary use). It is a "weak copy-left" license, that has since been adopted, in modified versions, by several other companies and organisations. Mozilla Firefox, Mozilla Thunderbird, and the Mozilla Application Suite are some of the software programs released under this license.
- MIT License - This license, which originated at the Massachusetts Institute of Technology, is a public domain license. It is one of the most permissive types of licenses, and is the license under which the X Windows System is released under.
- Apache License - Technically, this license is incompatible with the GPL, since it explicitly allows modifications to the software itself to remain secret, and said modifications to be sold. This does not mean that software released under this license is not Free Software, since it does require the party releasing the software to adhere to the 4 Freedoms. The Apache Web Server is released under this license.
- The "as-is" release model - This usually means that the released code is simply placed in the public domain, with no restrictions whatsoever apart from not "claiming rights" to that code, and not claiming that the user wrote it. There are actually quite a few dedicated-purpose libraries released under this lisence, which do something very specific, very efficiently.
FSF, GNU, Debates, and Disagreements
This document is inevitably read by some people who disagree with an all-encompassing support of either some, or many of the opinions of the Free Software Foundation, or of the GNU Project. A person's support of a cause should not be conditioned by that person's agreement with the opinions of every other single person who supports that cause. Suppose that you are an active supporter of the freedom of the press; also, it is your personal opinion that people should not wear bowler hats. If you were to see a fellow supporter of the Freedom of the Press wearing a bowler hat, would you stop actively supporting the Freedom of the Press? This document focuses on Free Software, and the agreed upon definition Free Software was authored by the Free Software Foundation. Look at the overall effect of the acts taken by the Free Software Foundation and the GNU Project. Would you rather live in a world where these acts were not taken? Rather, more specifically, would you rather live in a world where these organizations were not there to take them?The debades and disagreements that are derived from various opinions often reach much farther than the opinions themselves. As mentioned, this document focuses on Free Software. It (the document) also clearly supports the cause of Free Software, as I do, which is partially why this website exists in the form that it does.
Additional Information
So Basically...
The most important thing to remember is to remain curious about how things around you work. Certain things will allow you to drill deep into their mechanism and learn from how they're designed, while others will stop you at the gate. I'm trying not to wrap this up with some sort of propaganda-like paragraph, but I can at least attest for myself that ever since I've shifted my focus to Free Software and Free Standards, I've been able to learn a lot more, and much more rapidly, about how things around me operate.It's simply the nature of the environment -- it draws you in to look for yourself, and examine how it functions. Instead of looking to a closed group of individuals to solve a problem for you, possibly rallying support along the way by finding people who've encountered the same problem as you have, you look for other people with similar issues and you solve the problem yourselves, collectively, and then share the result with everyone else. This way, the amount of developers is much larger, and the same rule that applies to problems applies to features -- if someone adds a feature and shares it with the community, everyone benefits, you don't have to wait for a small group of developers in a closed environment to come up with the latest release. In fact, by nature, the more demand there is for a feature, the more developers will attempt to add it, and they'll often coordinate their efforts to speed up progress. In each project, there could be dozens of such groups, each working on a specific feature that they want implemented into the software, knowing that while they're working to build their 'extension' to the program, other groups are working to build other extensions that may end up working together to form unpredictable benefits when two or more elements are finished and implemented together.
Looking from it from an idealistic point of view, or a pragmatic one, Free Software makes sense. It would not be in such widespread use today if it didn't.
I hope that this article was more enlightening than it was 'preachy'. At the very least, I hope it was informative.
Return to the Guides & Articles section, or go the to Main page.