Thursday, February 10, 2011

The Cathedral vs. the Bazaar

The Cathedral and the Bazaar is an in-depth essay written by Eric S. Raymond which was later published as part of a book.  The essay goes over many important aspects of software engineering methods.  The author uses his experiences with the process of Linux kernel development.  The essay also includes his observations with time spent managing a mail utility known as fetchmail, an open source project.  Listed in the essay are 19 guidelines for help with creating good open source software.  With each guideline, the author expands upon it and gives his own experience and thoughts. 
So what exactly is the Cathedral and what is the Bazaar?  They are both free software development models but their differences in development style sets them widely apart. 
The Cathedral model likened to a cathedral structure is software built by organizations such as Microsoft.  In the Cathedral model, there are only a small group of developers in control of the development of a piece of software.  The source code is only available with each software release.  In between releases though, the code is not available to the public but rather the small group of developers.
The Bazaar model of the Linux world on the other hand is open source.  The code is available to the public.  The code is developed by many internet users around the world.  With open source code, developers everywhere were writing code and fixing bugs for the software.  The reasons for a developer to take the time to develop and write code are many.  They may simply enjoy writing software, solving problems and enjoy working together in almost a democratic way to exchange ideas and information on improving the software.
The main thesis and argument of the essay is what the author Raymond states as "Given enough eyeballs, all bugs are shallow."  With the Cathedral model, there are only a restricted few software developers overseeing the software and code.  When problems do become evident, the bugs are not only hard enough to discover with such a small group of developers, but the prospects of a viable solution is left up to the same few.  With the Bazaar model, there are many thousands of people looking over the software daily.  These "many eyes" are finding bugs sooner and giving opportunity for others to find solutions quicker. 
As pointed out by Raymond, many users of open source like Linux are hackers.  With the code available to them, they are able to be extremely helpful with the debugging process.  With encouragement of just knowing that they were the one to fix the problem or find a bug can go along way with the hacker's loyalty to not only the software but also to the continuing overall progress of the project.

Overall, The Cathedral and the Bazaar is an excellent read for understanding more about the benefits of open source software.  I believe the importance of the theories and guidelines contained within the essay are to at the very least acknowledge them and see how important of a role they play in today's software development.  With more and more emerging technologies in computer software, the proven efficiency of the Bazaar model (open source) can be considered and used as an approach to creating usable software in less time.

Wednesday, February 2, 2011

What is a kernel?

At the very basic, a kernel can be described as an important central component that works as a linking point between user applications and the processing of data found at the hardware platform.  A kernel is an extremely important part of your operating system.



The hardware that the kernel connects to from application's needs include many of the core pieces that make up your computer including for example, the brain of your system, the Central Processing Unit (CPU) and also memory for storing data. 



In addition to the CPU and memory allocations, a kernel also manages your input/output devices.  These are the devices that you connect to your computer or laptop to either give data like a mouse or keyboard or to receive data like a printer or monitor.



The kernel is the one that controls and manages the resources mentioned above...the CPU, I/O devices and memory.  Through process management, processes or threads are executed.  Your computer at any moment can be processing many threads.  All the threads need access to the CPU.  Each thread is given an equal amount of time to process.  This rule of sharing is called the O(1) scheduler.  Without this scheduler, only one process can be performed at a time.



There are many operating system kernels available now.  Generally, they each perform the very basic of functions for what they were originally intended for.  What sets them apart is additional features which are becoming more widely available as each day goes on.  Some features that seem to be getting more attention today relates to security, integrated firewalls and debugging.