J-F Bilodeau's Blog @ chronogears.com

Sunday, March 30, 2008

A Silver Lining?

Though it's clear and sunny here, I feel like there's a dark cloud hanging over us.

OOXML seems to have been 'approved.' This is bad on multiple accounts.

To begin with, this is a standard that would have never made the first round had it been any regular Joe that would have proposed it. Why? It's broken and riddled with issues.

Also, had it not been so desperately pushed by Microsoft, this 'standard' would most likely have been voted down by every nations world wide.

On the other hand, I'm seeing a silver lining in the cloud hanging over us. Microsoft is a brand that is losing it's positive image with corporations. In other words, they do not have the power that they used to have.

Furthermore, the EU said that it will investigate any possible manipulation by Microsoft into the Poland vote.

Poland is no longer the only country that is suspected of having been manipulated. The accusations are many.
  • Germany
  • Croatia
  • Norway
  • Sweden
  • US

...and the list goes on.

My hope is that regulators (including ISO) will take a stand, and expose the manipulation that were done during those meeting. Hopefully, this will once and for all expose how Microsoft is desperate to maintain their illegal monopoly world wide.

Oh, and another silver lining to me, Canada voted no. Yay! I'm proud to wear my country's flag.

Labels: , , ,

Thursday, March 27, 2008

Why Should You Consider Linux?

I'm a lucky man. I've married a beautiful woman with wonderful critical skills. She kindly pointed out to me that I may explain this free software and Linux thing, but nowhere do I emphasize the reasons why I think you should consider Linux.

Let me remedy that.

I believe there are many good reasons why an individual or a business should look at open source software and the GNU/Linux operating system in particular. In this article, I will address a range of potential users, from the end-user (everyday user) up to the IT professional. Some of the reasons will be technical, others social or even personal.

1 - It's Fun
I have a lot of fun with Linux, whether it's trying new software packages like Blender, Eclipse or even Alien Arena, trying a new distribution, or recompiling my kernel for the Nth time. There's so much I can do that I never get bored. Also, none of it is illegal, since the software I use is free as in free speech.

2 - It's Secure
Linux had security built into it from the ground up. Windows had security added long after it was created. Windows XP SP2 and Windows Vista are the first Windows versions to offer true desktop security.
One of the things I loved right away about Linux was the fact that applications cannot be modified or erased by end-users. In Windows, there's nothing stopping you from erasing part of the Microsoft Office or Windows folder. Yikes!
But it's not just a question of whether or not you are able to delete an application folder. The code, being opened, undergoes continual verification. Security problems are usually quickly discovered and corrected. It would be very difficult for someone to add a backdoor to any part of the code in Linux without it being noticed very quickly.

3 - It's Virus Free
Currently, there is not a single virus in the wild that can affect Linux. What I like about this is not just the peace of mind that it offers, but the fact that I do not need to install an anti-virus. You can if you really want to, but I generally tell Linux users not to bother.
(Having worked in the anti-virus industry myself, I'm of the opinion that anti-virus softwares are sometimes as obtrusive as the viruses themselves)

4 - It's (Mostly) Free
You can get a good thing for nothing. Open source software is an example of that. Linux is free (as in $$$) to download and use. The only financial commitment on your part is your Internet time, and maybe the cost of a CD.
Did I mention that you can then give the CD to whoever you want? That's right. It's not just legal to share Linux, it's also widely encouraged. For those that do not have a fast Internet connection, or who cannot burn CDs, Ubuntu offers free shipping of their excellent Linux distribution.

5 - Supports Many Hardwares
A few years ago, the situation was inversed. Windows had more drivers for more hardware. Now, it's starting to change. Windows is dropping support for older hardware, and according to the news, Microsoft will not install Service Pack 1 on Windows Vista machines that use unsupported drivers. Furthermore, when installing Windows and new peripherals, it is often necessary to hunt down and install drivers from the web. From personal experience, it is possible to plug in just about any hardware in Linux, and it's typically detected and ready to use.
Not every hardware is supported by Linux, but then again not every hardware is supported by Windows.
(Gripe: Many drivers in Windows are megabytes, if not hundreds of megabytes in size, and can take over your system. This is typically not the case in Linux — HP, I'm looking at you!)

6 - Supports Older Machines
Distributions like Vector Linux and Xubuntu work great on older hardware that simply will not run Windows Vista or even Windows XP. So, if you need to update from older versions of Windows but your current hardware does not support it, you could consider moving up to Linux instead.

7 - It's Stable
I have Linux machines hosting websites, mail servers, database servers, etc, live on the Internet. I kinda forget they exist because they just work. I rarely have to install patches or upgrade software.
How long have you kept your Windows machine running without reboot? Days? Weeks? Months? In my case, I've had servers up for over a year. Some almost two years. I've lost track.
Here's food for thought. In Linux, the only thing that forces a reboot is to load a new kernel. This is something I discovered the first time I installed Gentoo Linux. After I got my kernel compiled and loaded, I continued to build my machine — I compiled a GUI (Gnome), MySql, OpenOffice, sound driver and a whack-load of other stuff. Only after I had loaded my sound driver did I realize I never rebooted once, yet I had a fully loaded, fully functional machine. I was sold!

8 - It's Flexible
Why is it that Internet leaders like Google, Amazon and Wikipedia run Linux? I'm willing to bet that one of the reasons is its flexibility. Since Linux is free software, an organization can endlessly tweak it to suit its very specific needs. The success of Linux's flexibility is also noticeable in the fact that it is available anywhere from hand-held video-game consoles to cell phones to 85% of the world's super computers (Did you notice that Windows' super computer presence is barely 1%. Now, why would that be?).

9 - Free as in Free Speech
Following the idea of flexibility, we should not forget that Linux is free — as in freedom. It is your operating system. You can use it to do whatever you want. Don't be fooled into thinking that Windows gives you the same freedom. I challenge you to compare the terms of the GNU GPL to that of the Windows EULA. Decide which one gives you more rights.

10 - Community
There is a vast and expanding community behind Linux. It started as a community project that is now sponsored by large corporations like IBM and Sun Microsystems.
This community is visible in forums, newsgroups and mailing lists. Though the discussions can sometimes get nasty, most participants desire one thing: to continue the betterment of Linux. This community crosses all national and cultural boundaries.
To get a sense of the community, I invite you to take a peak at Ubuntu forums. You can freely browse without having to register.

11 - Altruism
Linux is developed by countless volunteers around the world. True, some developers make a living writing code for Linux, but without this mostly anonymous army of developers, testers, writers, translators and users, Linux would not be where it is today.
By using it, you are starting to free yourself from Microsoft's illegal grasp over the software world and are rewarding the community that helped bring Linux to where it is today. I'm sure there's nothing more rewarding to those countless individuals than to know that their contribution, minor or otherwise, is appreciated. Furthermore, you are encouraging freedom in the world of computing.

12 - Helping Developing Countries
I live I Canada, and I enjoy a wonderful quality of life, and I only realized how spoiled I am when I had a chance to visit Guinea in Africa. I realized that most folks who are considered 'poor' in my country would be considered quite wealthy in Guinea.
This said, not everyone in the world can (and should) pay Microsoft's tax. The added cost of Windows and Microsoft Office represents a large portion of a new computer.
OMGWTFBBQ!!!!!! I just went to the Microsoft website to check the price of Windows and Office for comparison. $259 for Windows Vista Home and $499 for Ultimate??? I must be living in isolation, because I can't imagine anyone wanting to pay that much just for fancy graphic effects (that Linux already offers). Half a grand for Ultimate? What is Microsoft thinking? I remember paying $99 for Windows 95 fourteen years ago, and I felt that the changes between Windows for Workgroup and Windows 95 was worthwhile. But $259 for a crippled and crippling operating system?
And if that's not bad enough, what about $539 for Office 2007? I don't even want to look at the price of Office Ultimate. (Ok, I did look at the price. Ouch!)
I'm sorry, but that's a total ripoff. This is what happen when a greedy company acquires not one but two monopolies. Do you realize how much of your taxes go to Microsoft? I shudder to think...

Ok, back to the point I wanted to make:

Helping Developing Countries - Second Try
Projects like the One Laptop Per Child are allowing children in developing nations to expand their horizons and join in the wealth of information that is available on the Internet.
I think that the XO is a wonderful piece of work, and I wish that even Canadian children could get a chance to work with it. One of the features of the XO I find amazing is the ability to view and modify the source code of the application they are working with. Talk about a total learning experience!
Such great philanthropic projects are only available thanks to free(dom) software like GNU/Linux, Open Office and many others. Not only is the software free as in free beer, it is free as in free speech.
By using Linux and participating in the communities, you help refine an already excellent product so that the whole world can take advantage of what computers have to offer.
Some Microsoft users point out that Microsoft and the Bill & Melinda Gates Foundation do participate in philanthropic projects — but why are they trying their darndest to stop the propagation of Linux to developing countries? It doesn't sound like they care much about what's best for those children to me.

13 - Popular
You have probably already used at least one device that runs with Linux or some open source software without realizing it. It's everywhere. The moment you hop on the Internet, the information that makes its way to your machine probably passes by half a dozen Linux machines along the way.
By the way, Asus, Dell and even Walmart have started selling PCs with Linux preloaded. Compare the prices with PCs that come with Windows preloaded. Do I need to spell out why those machines are less expensive?

14 - It's Easy
Yes, you read that correctly. You no longer need to be a hard-core computer programmer who is not afraid of bits and bytes to use Linux. Quite the opposite. Thanks to great projects like Ubuntu as well as desktop like Gnome and KDE, using Linux is as easy &mdash if not easier than Windows.
Now, just to make sure we understand each other: I'm stating that Linux is as easy to use as any other modern operating system. I'm not saying that Linux is like Windows. In other words, there is a learning curve — just like there is for Windows. To get you started, please read Is Linux Like Windows?

There you have it — some of the reasons why I'm a die hard Linux user, and reasons why I think you should consider Linux as well. If you are already a Linux or open source user, why do you use it? Did I miss anything?

In a future post, I would like to show you how you can try Linux risk free.

In the meantime, spread the word. It's time that everyone realizes that Microsoft is not the only player in the world of computers and that there are alternatives to their products. If you think that Microsoft is the best thing since sliced bread, please do your research. You may find that beneath Microsoft's glossy packaging, there's a lot of ugliness. But just to be fair, here's the same for Linux.

Hope you have a great day!

Labels: , , , , , , , ,

Tuesday, March 25, 2008

OOXML is a Bad Thing

Don't let Microsoft razzle-dazzle you. OOXML — the 'new' Microsoft Office format they are trying to push throught — is only good for Microsoft. Let me make that clear:
  • It is not good for customers
  • It is not good for business
  • It is not good for developers

The only entity that is bound to win with OOXML is Microsoft. The reason is, there is already a office file format that is certified by ISO called ODF (Open Document Format). It is presently supported by OpenOffice.org, KOffice, and many other suites.
Why is ODF not supported in Microsoft Office? It's not because of technical limitation. Office supports file formats that are technically inferior to ODF like RTF and HTML.

Product and business competition is good for the customer. What would the world be like if you could not choose your car manufacturer (Ford, Honda, BMW, etc), your computer manifacturer (Dell, HP, Levono) or even your gas station? First of all, everybody would be riding the same car painted any colour as long as it's black. You could buy any computer that you want as long as it's a Dell. How little do you think Honda would charge for the Civic if it was the only compact available?

Microsoft has had an illegal monopoly in the world of operating system, office suite and web browser. In the past ten years, the changes that we have seen to their product has been minimal. However, as soon as the competition heated up, notice how much work Microsoft suddenly places in their product:
  • Windows XP -> Windows Vista thanks to Mac OS X
  • Microsoft Office 200X -> Microsoft Office 2007 thanks to OpenOffice.org
  • Internet Explorer 6 -> Internet Explorer 7 thanks to Firefox

These innovations on either side were born out of free competition.

However, competing standards are bad, especially for customers.

Not good for Customers
Imagine a world where there are two CD formats. Two DVD format. Two gasoline types. How would the customer benefit from that? Well, the customer would have to make darn sure that they buy CDs that work with their CD players. Otherwise, they have spend money on a CD that cannot be used.
And what if that said customer purchased another CD player that is incompatible with the first. They can kiss their whole CD collection goodbye, since it won't play in the new player.
Sounds unlikely? It happened very recently where Sony & Microsoft (amongst many other companies) developed two standards: Blu-Ray vs. HD-DVD. Some customers spend thousands of dollars equipping themselves with HD-DVD, only to watch their market collapse, and their investment dissappear. Yes, they can still watch the movies their purchased, but no new movies will be released in HD-DVD.
Do you want the same thing to happen with your documents? Microsoft have changed the Office file format numerous time, and newer versions of Microsoft Office are sometimes unable to open files created in older version.
Who benefits here? The customer, or Microsoft. Hint: Who gets the money at the end of the day?

Not good for business
It may be a good news for developers looking for a job because now there are TWO file format to support. But what about the cost of doing business? Some clients or supplier may want to work with ODF. Others with OOXML. That pretty much doubles the development cost and time.
Of course, a company could alienate customers and suppliers by requesting a single format, but again, I don't think this is a sound solution.
There exists converters for one file format to another, but none are perfect. None can be perfect. Here's a simple experiment for you: Convert an MP3 to a WMA back to an MP3. What happens to the sound quality? It degrades. The same thing happens when we are converting from one office file format to another.

Not good for developers
I hate writing the same code twice. I hate solving the same problem twice. This is exactly what we are heading for.
I was quite excited when XML can to be. Before XML, I had to write so many file parser because everybody and their dog created a custom file format that had to be manually parsed. Now, thanks to XML and the DOM API (Document Object Model Application Programming Interface) to work with XML. I haven't wrote a single line of code to manually parse an XML document. Yay!
As a developer, I don't want to go back to the 'information stone age' by having to support multiple, incompatible standards. Thank you Microsoft for making my just so much more challenging. If Microsoft truly cared for us, ODF would have been supported in Office 2007.




So why is Microsoft pushing their format thought? The answer is simple: Governments and organizations are starting to standardize on ODF because it's an open ISO standard. Microsoft refuses to support ODF because that will mean that users can now choose between Microsoft Office, OpenOffice, StarOffice, KOffice, Corel WordPerfect Office, etc. You get the point. Microsoft does not want to give you choice, they want to remove choice. God forbid you should spend your money elsewhere!

OOXML is meant to work with Microsoft Office and no other office suite on the market. It's a bloated, complex format that is laded with legacy. Working groups world wide have made 3,500 comments and raised a number of technical issues found in the 6,000+ pages of specifications provided by Microsoft. Think about it: 6,000+ pages. That's not for the weak of heart. On the other hand, ODF has 700+.

On March 29th, ISO will announce whether or not OOXML becomes a dual(ing) standard with ODF. This choice is made based on votes made by technical groups in various countries around the world. Microsoft has openly stuffed and bribed some committee to ensure that the vote goes through no matter what.

Thankfully, some countries like India and Cuba voted no. I'm hoping that many more countries (including Canada, my home and native land) will vote against the broken, half-complete standard that would exists to benefit a single organization: Microsoft.

Please visit NoOOXML.org and Gloklaw.net for more information.

Labels: , , , ,

Sunday, March 23, 2008

Is Linux Like Windows?

This is a follow-up to the article on 'What is Linux?'
I'll cut to the chase, and answer right away - no.
It is possible to set up Linux so that it looks very much like Windows, but under the hood, it is not Windows. We have to understand that Linux is very flexible and customizable. Someone with some technical knowledge, time and determination can install a Linux system exactly the way he or she would like. Those who are interested in truly learning Linux from the ground up can take a look at Gentoo or Linux From Scratch. This can be a great technical learning experience, but it is very technical.
If you would like a gentler introduction to Linux, I would heartily recommend Ubuntu.
Ubuntu is a free Linux distribution (distro amongst the initiate). A Linux distribution is a full-fledged, pre-packaged collection of software. Distros makes it easy and convenient to install and use the GNU/Linux operating system. Currently, Ubuntu is one of the most popular distributions due to its ease of use, stability and continued support. It is not the only popular distribution. If you are interested, you can also visit and/or try any of the following:

This is only a sample of some of the many distributions available. All of the above can be installed with minimal difficulty.
However, as mentioned above, Linux is not the same as Windows. It does not strive to be a carbon-copy of Windows, but an operating system that stands on its own merits.
Let's take a look at the important differences you will encounter between Linux & Windows.

No C:\ Drive
Yes. That's right. There is no A: drive, no C: drive and your DVD-ROM is not your D: drive. Your 'C:' drive is called the 'root directory.' Everything starts from the root directory. Also, where Windows uses the backslash (\) Linux uses the forward slash (/).
Here's a little cheat-sheet to help you get started:
C: drive/
My Documents/home/<<your name>>/Documents
Desktop/home/<<your name>>/Desktop
Settings/home/<<your name>>/
CD-ROM / DVD-ROM/media/cdrom
USB Flash Drive/media/<<drive name>>

Mac OS X users may recognize the above structure. Just replace /home/ by /Users/ and /media/ by /Volumes/.

Linux does not use file extensions
In Windows, a file ending with .doc is assumed to be a Word document and a file ending with .exe is an executable. In Linux, the extensions are usually meaningless, especially for executable files. So, firefox.exe becomes firefox, oowriter.exe becomes oowriter, and so on.

Files are case sensitive
In Windows, there can be only one file called letter.odt. It can be called letter.odt or LETTER.ODT, but it will be the same file.
In Linux, letter.odt, Letter.odt and LETTER.ODT are three different files. Furthermore, be aware that if you are asked to enter a command, it may be case sensitive.

No Viruses
Yes, you did read that correctly. There are no viruses in the wild for Linux. This means that you do not need an anti-virus. Should your friend or coworker kindly send you an email virus, you are immune. No need for McAfee or Norton.
I'm not saying that Linux will never have viruses, but I strongly doubt that it will develop the rich virus ecosystem that is present on Windows.

Windows Applications do not work on Linux
Many Windows applications have their equivalent in the Linux world. Actually, many of the applications used in the Linux world are becoming available in the Windows world as well.
Another cheat-sheet to get you started (free of charge!):

Microsoft OfficeOpenOffice.org
Internet ExplorerFirefox or Iceweasel
OutlookEvolution
Outlook ExpressThunderbird
Adobe PhotoshopThe GIMP

By the by, most of these programs are available for Windows if you would like to give them a spin.

No need to download programs
In the Windows world, to install an application like WinZip, it is necessary to go to the WinZip.com website, download the setup executable, run the installation program and then we can use the program.
In most distributions, there is a 'package manager' that does the work for you. In Ubuntu, the Add/Remove Program takes care of everything for you. Just select the program(s) you would like, click Install, and it's done. That's right -- no need to run around the web, manually download setup programs and doing the installation yourself.
Ubuntu Add/Remove Programs

It's Secure
Windows XP Service Pack 2 and Windows Vista are starting to take security seriously. However, Linux has been written with security from the very beginning. This means that you don't immediately have access to every component of your system by default. Linux may refuse to show you a file or run a program. This is for security reasons.
Should you need access to a secure resource, you may be prompted for your password or the 'root' password. Be aware that once you enter the root password, you have complete control over your system. If you want to, you can render your system complete unusable. Note that you can do the same with Windows, except that Windows will not prompt you for your password.

It's Free
Free as in free beer. Yes, you can get something for (nearly) nothing. I add nearly because you need an Internet connection, and maybe a blank CD. Also, some of your time may be required.
Linux is also free as in free speech, and that's the part that is truly valuable for me. Windows is controlled by Microsoft — not by me. Mac OS X is controlled by Apple — not by me. Linux is controlled by — me! — and you!
That's freedom!
However, I know that too much freedom can be intimidating. That's where distros come in handy. They pick the most common option, and pre-package everything for you so that you get up and running quickly. However, once you get the hang of your environment, you can start tweaking stuff, and customizing stuff.

So, how does one get started with Linux? Well, stick along, and in a later post, I would like to show you how you can try Linux risk free!

In the mean time, you are welcome to continue your research. I would recommend Wikipedia as a great place to start. If you can, talk to other Linux users, and find out what they have to say. I personally think it's a great operating system, and I'm excited that you are interested in knowing more.

— and no, I don't make money selling Linux. This is a labour of passion and love.

Labels: , , , , , , , , , ,

Saturday, March 22, 2008

What is Linux?

Talking to Microsoft Windows users I find the conversation usually goes the following way:
  1. They spout out what little they know about Linux from a Microsoft perspective, trying to sound like they actually know what this Linux thing is.
  2. There is a silence in the conversation.
  3. I'm asked the question: 'Is Linux really that different from Windows?'

It's a simple question, but I find it a tough one to answer. What makes it difficult is the fact that most users equate GUI (Graphical User Interface) with the OS (operating system).
Before moving along, let's make sure that we understand the difference between a GUI and an OS. For starters, Windows is an operating system that includes a GUI. Mac OS X is an operating system that includes a GUI. Linux is an operating system that may or may not include a GUI.

So, what's an OS?
The simplest way to think of an operating system is in terms of hardware vs. software. The hardware consists of the parts of your computer that you can touch. Software is the logical, invisible part that makes your hardware do things. Software is simply a series of instructions that your computer follows. The software is typically packaged up in 'programs,' like OpenOffice, Microsoft Office, Firefox, etc...

Computers are really dumb and don't think. They blindly follow whatever instructions they are given.
This said, the operating system is a program that exists to control access to hardware and software resources like your memory (RAM), hard-drives, network, display, keyboard, mouse and so on.
Thus, a program like OpenOffice needs to ask the OS which keys were pressed on the keyboard. OpenOffice also needs to ask the operation system to draw letters on the screen. Behind the scenes, OpenOffice also needs to ask the operating system to allocate memory, load and save information to the hard disk, and send printing instructions to your printer.
The application communicates to the operating system using services or APIs (Application Programming Interface).

In turn, the operating system will rely on a 'kernel' to translate the service request to commands that the specific hardware of your machine can understand.
The following diagram displays the relationships between some applications and the operating system.
Operating System Layers
Let's go back to the original question: What is Linux?
The answer is: Linux is a kernel. No more. No less. It is the fundamental piece of code that controls the resources on your machine. Windows has a kernel. Mac OS X has a kernel. Pretty much every operating system has a kernel.
However, a kernel provides API that computer programmers use to write programs. End users do not interact directly with the kernel. To allow users to interact with their computer, a set of tools are provided with the operating system. In the world of Windows, you are familiar with the Start menu, the Control Panel and the Windows Explorer. These are some of the operating system's tools that one uses everyday to control the machine. These program are part of the operating system, but run on top of the operating system APIs. Such tools are sometimes called shell programs.

Linux is only a kernel. It does not include a shell or programs. However, Linux is most commonly packaged with a combination of free programs from another--as of yet incomplete--operating system called GNU. Because it borrows from the GNU project, you may hear people refer to the operating system as GNU/Linux.
With the combination of the GNU tools and the Linux kernel, we now have a complete operating system.
Well, it's complete in terms of functionality, but the average, everyday user would not consider it complete due to the fact that you do not have a GUI at this point. In other word, there are no graphics, icons, mouse, etc. Just 'cryptic' commands typed on a white on black screen.
So, the answer to the question: Is Linux like Windows seems to be no for multiple reasons.
  1. The Linux kernel has comparable functionality to the Windows kernel, but exposes the API differently. Thus, programs written for Linux do not work on Windows, and vice-versa.
  2. Windows is an operating system, while Linux is just a kernel (a part of the operating system).
  3. Linux is free software that is open to anyone to see and modify. Windows is proprietary and is closed -- no touchy the kernel!

There are more differences to discuss, but I would like to finish this post with the following point to consider. Linux is not a GUI. In other words, it is not the program that controls what you see on the screen and how you interact with your machine. It is the glue that ties together your hardware with your machine. The nitty-gritty technical details are very different from Windows.

BUT, we haven't talked GUI. In the world of Linux, there is not one GUI, not two GUIs, not three GUIs, but dozens of GUIs available. Linux has been used anywhere from digital video recorders to supercomputers to your average, every day desktop machine (like mine ;)).
In future installments, I would like to discuss how Linux can look and behave in a fashion that is familiar to Windows users. However, I will continue to emphasize that Linux is not like Windows...and why that's a good thing!

Labels: , , , , ,

Free Software 201

If you haven't read my previous entry, Free Software 101, I would recommend you do so before moving onto this one.

In this article, I would like to continue the discussion on the definition of free software. Previously, we explored the four freedoms attached to free software. For a software to be called free, it needs to meet those criteria.

Some software are given away, like the giftware license of the Allegro game library. Others are said to be public domain, in the sense that they do not have a copyright, and thus, have no limitations in terms of use.

Software that falls under the 'giftware' license or public domain may have the four freedoms. Any individual or organization can use the source code for any purpose, including proprietary and commercial software. Their use and the changes that they bring to the code does not have to be given back to the community. Thus, the new implementation of the software and its users looses the four freedoms.

To protect those four freedoms, the Free Software Foundation, founded and headed by Richard Stallman, created the GNU GPL (General Public License). The goal of the GPL is to ensure that any softwares licensed so would not lose their four freedoms.

This is the license that is used in countless open-source softwares like the Linux kernel, the MySQL Database and the Java programming language. Even Wikipedia uses the GPL to protect the content of their articles. A quick search on SourceForge found over 79,000 projects that uses the GPL.

The GPL is written so that anyone can use it -- both the developer of the original code, and the end user of the code. Agreeing to the GPL pretty much binds you to the four freedoms. That is, you can use the code, view the code, copy the code and share your changes, but you cannot remove those four freedoms from your work.

The GPL allows you to sell a product that includes GPL code as long as you do not remove those four freedoms in any way.

There is more to the GPL than what I've discussed here. For instance, the GPL protects the copyright holder by offering no warranty and the GPL version 3 addresses software patents. However, what I believe is important here is the spirit of the license. If you are considering using GPL code in a commercial project, you may want to consult a lawyer or contact the Free Software Foundation to clarify your right (I'm a coder Jim, not a lawyer). However, keep in mind that there are thousands of successful commercial products out there that uses GPL code. The Asus Eee PC readily comes to mind.

The GPL is one of many licenses that are designed to preserve the four freedoms. Such licenses are known as copyleft licenses. The symbol for copyleft is a reverse copyright (©) but has no legal meaning. Copyleft licenses are also known as viral licenses, since your use and derivative of the work is bound by the same terms as the original license, like a computer virus that infects every executable it touches. The analogy may be less than savory and also misleading. Installing a GPL software like OpenOffice on a machine does not spread the GPL to all your programs. However, using OpenOffice's code in a development project does bind you with the GPL. Whatever use and modification you bring to that code must retain the four freedoms. That is, you could not commercialize a new office suite based on the OpenOffice source code without releasing the source.

Does that mean you could not create a commercial software product based on GPL code? There are many commercial products that include GPL code. As a matter of fact, many commercial applications were later released under the GPL.

Examples include the Linux kernel, which is used in a number of software packages, such as paid-for distributions like Mandriva Linux. Another example is TransGaming Cedega, a program that runs most Windows games on the Linux platform.

There are many advantages to open sourcing software under the GPL, or another open source license. However, I will leave this discussion to another post.

Labels: , , , , , , ,

Friday, March 21, 2008

Free Software 101

Is Free Software software for free? If you are confused about the meaning of Free Software, then this article is for you.

To start with, let's demystify the word 'free.' Free software is often described by Richard Stallman as 'Free as in free speech, not as in free beer.' We are talking freedom and not cost here. This implies that the software can be used for just about any purpose.

To put this in context, I wonder how many people have read the license for the proprietary (non-free) software they install on their machines. Whenever you install a program, you are requested to agree to a license. This can be a legally binding contract that determines what you can and cannot do. Typically, those contract distills down to a simple fact: The vendor chooses what you are allowed to do, and you're not allowed to sue the vendor for any reasons.

Let's take a look at parts of the Windows Vista Home's EULA (End User License Agreement). Here are some semi-random snippets:

2.a Licensed Device. You may install one copy of the software on the licensed device. You may use the software on up to two processors on that device at one time. Except as provided in the Storage and Network Use (Ultimate edition) sections below, you may not use the software on any other device.
In other words, you cannot install Vista on more than one computer. In you have three computers, you need to buy Vista three times.

8. [...] you must comply with any technical limitations in the software that only allow you to use it in certain ways. [...] You may not work around any technical limitations in the software reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;
In other words: You can't 'fix' it or look under the hood.

9. MICROSOFT .NET BENCHMARK TESTING. The software includes one or more components of the .NET Framework 3.0 (“.NET Components”). You may conduct internal benchmark testing of those components. You may disclose the results of any benchmark test of those components, provided that you comply with the conditions set forth at http://go.microsoft.com/fwlink/?LinkID=66406.
Interesting but fair. To release information about benchmarks, I need to do it the was Microsoft wants me to do it. But what about freedom of speech?

25. LIMITATION ON AND EXCLUSION OF DAMAGES. You can recover from Microsoft and its suppliers only direct damages up to the amount you paid for the software. You cannot recover any other damages, including consequential, lost profits, special, indirect or incidental damages.
In other words, if Vista dies and wipes out all your corporate data, you can only get a refund for Windows. Yay!

4. USE WITH VIRTUALIZATION TECHNOLOGIES. You may not use the software installed on the licensed device within a virtual (or otherwise emulated) hardware system.
That's an interesting one. You cannot run Vista Home with VMware or VirtualBox. Why? Hint: It's not a technical reason. Second hint: Draw an S and place a vertical stroke through it.

The above as some example of limitations placed on you if you choose to install and use Windows Vista Home.

Most software that you install on your machine is going to carry some restriction. I hope you take the time to read was you are agreeing to when you click the 'I Agree' button. Just like commercial software, free (as in speech) software have their license.

The most common free software license is the GNU GPL (General Public License). It is used with the Linux kernel (the 'heart' of the Linux operating system), most of the command-line tools used in the Unix world, including Linux and Mac OS X, Open Java 7, MySQL and countless other software.

The goal of the GNU GPL is to provide the 'four freedom' of free software. Here are the four freedoms:

  • Freedom 0: The freedom to run the program for any purpose.
  • Freedom 1: The freedom to study and modify the program.
  • Freedom 2: The freedom to copy the program 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.
(NB: Computer programmers like to start counting at zero instead of one)

The four freedoms work together to ensure that any software that is licensed as free software (ie: GPL), continues to remain free software.

Freedom 0
The first freedom is pretty straight forward: The freedom to run the program for any purpose. In other words, Microsoft Windows Vista Home is not free software because I cannot run it for any purpose. For example, I cannot run it in a virtual machine -- Microsoft chooses what I can and cannot do with Windows. On the other hand, I can run the Linux kernel just about anywhere I like. Proof: the Linux kernel is used in everything from digital cameras to routers to super computers. Oh, and it serves me marvelously as a desktop and server operating system

Freedom 1
The second freedom is one of my personal favourite - The freedom to study and modify the program. I can look under the hood! I cannot emphasize how much I learned from looking at other developer's code. Furthermore, if something does not work for me, I can fix it. This is why the Linux kernel is found in places like digital cameras and supercomputers. We are allowed to modify it.

Freedom 2
Freedom 2: The freedom to copy the program so you can help your neighbor. Yes. You read that right. You are allowed -- and encouraged -- to copy the software. Can you do this with Windows? Legally? I do not advocate copying software illegally. Quite the opposite. However, I'm always happy to 'help my neighbor.'

Freedom 3
And finally, Freedom 3: The freedom to improve the program, and release your improvements to the public, so that the whole community benefits. This may sound like a given, but some program come with the source file, and you are allowed to modify it, but cannot release the modification to the public. An example of that is the Torque game engine by GarageGames.

Linux Torvalds initially offered his kernel for free under the GNU GPL, giving any developers who were interested the four freedoms mentioned above. In the very first posting, Linus said "It is NOT protable [...], and it probably never will support anything other than AT-harddisks, as that's all I have :-(." Interestingly, Linus predicted that his kernel would never evolve beyond the 386 of the days. Today, the Linux kernel is available practically everywhere. Had Linus removed any of the four freedoms, chances our his kernel would be a forgotten piece of code today.

The four freedoms are the heart of free software. However, it does not mean that free software is without restriction. Some of those restrictions will be explored in my next entry: Free Software 202.

Labels: , , , , , , , ,

Thursday, March 20, 2008

MS-DOS - Vista Edition

MS-DOS Lives!

Using Windows is usually a frustrating experience. However, sometimes, it does provide me with glee.

In January, while setting up Windows Vista and Visual Studio 2008 in VirtualBox, I got an error message that cracked me up. The following image has not been doctored or generated in any ways.

Invalid MS-DOS function
How do you like that? Invalid MS-DOS function? I thought MS-DOS was totally gone from Windows ages ago. Here's the full screenshot. Click to zoom in.



(Yes, I was running KDE 4.0 beta. It's kool!)

Have a great day!

Labels: , , , , , ,

Wednesday, March 19, 2008

Three Things Microsoft Should Do

In the last year or so, Microsoft has earned the ire of partners, governments and customers. Forgetting about the Vista blunders, I think that one of Microsoft biggest mistake is to try to induce FUD (Fear Uncertainty & Doubt) into the FLOSS (Free/Libre/Open Source Software) movement.

In a way, I can't blame Microsoft for that. After all, Linux is on the rise, the cost of machines is on the drop and customers continue to look for ways to save money and free themselves from Microsoft's illegal monopoly.

What irks me is that Microsoft seems to think I'm stupid and I'm just going to swallow whatever FUD they send my way. I'd like to think that I'm far from being the only user who is annoyed at how Microsoft is treating us. We are not sheep that exists only to pay a tax to Microsoft (which I don't).

If Microsoft is serious about working with the open source community, here are three things I need to see before I consider working with Microsoft.

Support ODF in Microsoft Office
Sure, they can keep using their half-baked OOXML, but there is not a single valid technical reason why Microsoft Office does not support ODF. Microsoft does not want documents to be interchangeable from office suite to office suite. In other words, OOXML and it's attempt at ISO certification is there only so that Microsoft continues to entrench governments with Microsoft Office.

Use the GNU GPL 3
Most free software is released under the GNU GPL 2 or 3, which is incompatible with Microsoft's OSP (Open Specification Promise) and the Ms-PL (Microsoft Public License). This is not an accident. Microsoft does not want software written using their technology to spread to other platform. Again, it's vendor lock-in. If Microsoft truly wanted to work with the Open Source community, they should abandon the OSP and the Ms-PL for the GPL, or another OSI certified license.

Use and Contribute to Existing Standards
I know this is very similar to the above to challenges, but Microsoft has a fascination with re-writing code that already exists. For example, NUnit provides everything that a developer needs to do unit testing, but Microsoft re-created the same functionality in Visual Studio Team Edition. Using Windows Metafiles and DrawingML instead of the W3C SVG (Scalable Vector Graphics) recommendation. Creating the WMA file format when MP3 or Ogg already exists. Let's not get into Java vs. .NET!

This fascination with re-creating the wheel means that the world is always split between true standards (ISO, W3C, etc), and Microsoft. More standards is not better for the customer. If that was the case, there would be different type of incompatible CDs, DVDs and even television that work only for a single cable providers. By having a single standard for CDs, it means that I can buy a CD from Sony (minus the rootkit), and play it in a Panasonic player without having to worry about incompatibilities.

Until I see more action from Microsoft on those three fronts, I will happily continue to develop application on my Linux machine, and I will not care if they work on Microsoft platforms or not.

Links:
OSP - Incompatibility with open source
Ms-LP
Free Software Foundation

Labels: , , , , , ,

Why I (Still) Love the Pascal Programming Language

Day-to-day, I use Java, C++, Python and a host of other programming languages. I like my modern programming languages. However, my first programming language love refuses to die -- Pascal.

Pascal is not a perfect language. For that matter, there are no perfect language. However, some languages can arguably be said to be better than others. This said, I will readily accept that Pascal has important flaws, which I will discuss later. However, here are the reason why I like Pascal, and why I think you should give it a spin:

Available on Most Platform
The Free Pascal and GNU Pascal compiler is available for most platforms, including most *NIX, Macs and Windows. Heck, you can even write code for the GameBoy DS! Furthermore, the code is usually portable with minimal or no changes.
The Free Pascal motto is 'Write Once, Compile Anywhere.'

Compiled
It's not interpreted. It doesn't use bytecode or IL. It's compiled straight to machine code. Thus, your Pascal applications can run as fast as any C application.

Lightning Fast Compiler
That's one cool thing about (most) Pascal compilers I've used. It's blazingly fast. This greatly reduces the write-compile-debug cycle.

Still Active
Though far from being as popular as C or Java, there is still strong support for the language. I don't think we can consider it a 'dead' language yet.

Structured
I think many people may disagree with me, but I like Pascal's strict structure. It forces me to think my code through a bit before I hack away. Also, once the code is written, I find it's usually very readable. Nicely written Pascal code can be close to English.

Native Data Structure
Arrays and numbers with any lower and upper bounds, sets and enumeration native to the language make Pascal a lot of fun to play with. You don't even has a set data structure in .NET 2.0!

Pascal also has a fairly complete collection of basic data types, and they're all first-class citizens. In other words, they are not classes that implement the functionality. Thus, they can be optimized by the compiler.

Multiple Paradigm
Pascal supports procedural programming and object-oriented programming, and the two can coexists peacefully.

LCL
Though not a standard part of Pascal, the LCL (Lazarus Component Library) is strongly supported by the Free Pascal community. It's a wonderful way of building GUI application and is available of all major platforms (Linux (GTK2, QT), Mac OS X & Windows)

As I mentionned above, Pascal is not perfect. The language was created in 1970 and was originally designed to encourage structured programming (no gotos).

Here are some of the things I would like to see improved in modern Pascal:

Precedence of Operators
Pascal has only four level of precedence of operators, which makes writing some conditional statements (and, or, etc) ackward. Brackets can be used, but they can also make the code more difficult to read.

Garbage Collection
The memory management is Pascal is up to the programmer. Being a C++ developer, I like manual memory management is some context. However, being also a Java developer, I would like to take advantage of automatic garbage collection. It would be nice if I could choose the memory management strategy for my application.

Templates / Generics
C++, Java and .NET supports Generics. They can same a lot of dynamic casting while making your application type-safe. By eliminating dynamic typecast, the execution speed can be improved.

I would love to have a generic TList or TMap.

True Platform Independent VCL
The VCL (Visual Component Library) was born out of Delphi -- a beautiful competitor to Visual Basic that never enjoyed the success it deserved. The VCL was created on Windows for Windows and during a very short time, ported to Linux.

The Lazarus project recreated (and expanded) most of the VCL called the LCL (Lazarus Component Library, but aimed to retain compatibility with the VCL. This is great if one is developing on Windows, but makes it ackward on other platform like Gtk2 (Gnome), QT (KDE) or Carbon (Mac OS X). This is due to the fact that the (V|L)CL refers to Windows API and constants by name. A layer of abstraction between the LCL and the underlying system would make the code look native on any platform.

Furthermore, having dynamic layouts like Java that adapt themselves automatically to the platform would be almost essential.

Object Oriented Version of String, Array, Set, Enumeration, etc...
Using strings or array remains procedural. I would love to have a compatible but object-oriented version of the build-in data types (I know that seems to contradict one of my points above, but they could remains 'compiler' classes). A simple solution would be to make a string class, and recreate the string functions to call the method on the string class, thus preserving backwards compatibility.

Pascal has survived nearly 40 years mostly unchanged. There has been refinements, additions and extensions added to the language. However, a Pascal program written 30 years ago may still compile in a modern Pascal compiler.

Though nowhere near as popular as C/C++, Java or .Net, I think that Pascal has a lot to offer. If you've never used Pascal before, consider downloading Lazarus to help you get started. There are plenty of great Pascal tutorial available on the web.

Happy coding!

Labels: , , ,

Tuesday, March 18, 2008

Welcome

Welcome to my blog!

I'm a software developer and trainer with over 15 years of professional experience. I've worked extensively in C/C++, Java and .NET on various platforms including DOS, Windows & Unix/Linux. Though my professional experience is mostly business development, my true passions are video games & interpreter/compilers.

Here, you will find short thoughts/articles concerning topics that are especially important to me. This includes:
  • Free/Libre/Open-Source Movement
  • Software development
  • Linux operating system
  • Video games
  • Maybe humour?
I don't pretend to be neutral. Quite the opposite. I do have my own viewpoints, and I hope not to hide from them. You're welcome to agree or disagree with anything I write.

Have a great day, and I hope you enjoy!

J-F