Sunday, May 1, 2011

What is a Software Repository?


A software repository is where software packages are stored.  This location is usually a server on the internet.  The software packages can be accessed from the software repository to install on a computer.  Software publishers maintain the software repository.  Access to their server may be free or a subscription fee is required.  A software repository can be for just one program like Perl to an entire operating system.


You can find many things in a software repository.  The software repositories for Linux, for example, have software for just about anything from games to audio/video applications to Instant Messaging to web browsers among many other things.  In Linux, they have more than one software repositories.  Some repositories for Linux can be seen in the image above.


Those that maintain software repositories usually provide a packet management system.  The packet management system generally provides the necessary tools needed to install and remove software packages.  The packet managing system used by Linux is called APT (Advanced Packaging Tool).  Upgrade, with respects to APT, is used to install newest versions of all the packages that are currently installed on a system.  Packages that are already installed with a new version available are upgraded as opposed to removing the current package and installing the new version.

Friday, April 22, 2011

The Kinect Driver Controversy


Over the years, video game console technologies have improved dramatically for the player.  I grew up playing Centipede on the Commodore 64, Jungle Hunt on Atari, and then came my classic Nintendo, the system I played most throughout my childhood years.  Since then, Genesis, Super Nintendo, Playstation, Xbox and Wii among many others came out.  With the graphics and ways to control the games we see today, it is amazing.

In 2006, Wii came out with a system that uses a wireless controller that detects movements in three dimensions.  In 2010, Kinect for Xbox was launched with a very similar idea to the concept of Wii and improving upon that by making it controller free.  You could play a game by simple hand gestures and voice commands.  A webcam-like device was used to track a player's movements.
In November 2010, Adafruit offered a bounty of $3000 for an open-source driver for Kinect.  Microsoft was upset about this because they did not want any modification performed on any of its systems including Kinect and Xbox.  Microsoft did not want someone hacking into their system to retrieve the code used for their products.  With the original bounty offered by Adafruit, hacking was not what was being asked for.  Microsoft later stated that they do not warrant hacking of the console itself but that the USB port was left open for design.

Within the same month, a winner was announced by Adafruit.  The winner, only 19 years old at the time, published the first Kinect open driver.  He created a Linux driver that allowed both the use of an RGB camera and also depth sensitivity functions of the system.  Interestingly, it seems that an individual who was a key player in the Microsoft Kinect development team also went after the bounty offered by Adafruit. 

Since the controversy between Adafruit and Microsoft, many companies and developers have since released their own open source drivers with various capabilities.  Since the start of creating an open source driver, a team was able to control a browser with hand gestures, another was able to simulate playing a piano by simply tapping their fingers to a surface and even NASA has shown interest in the technology after seeing a live 3-dimensional videoconferencing.

I feel that it is awesome that Adafruit initially came up with the idea to offer a small prize for creating the first Kinect open driver.  It seems obvious to me that if Microsoft had the brains and capability to do what the teams mentioned above are doing, they would have done it already.  I give a lot of credit to the young man that won the bounty and was able to produce the advancements to the system. 

As stated before with the Cathedral vs. Bazaar blog, Microsoft is in it for the profit and nothing else. There are only so many developers on the project team, meaning fewer ideas and less overall "eyes" to develop and enhance a project in addition to fixing bugs.  I think having this open source driver will allow advancements with many technologies.  Whether the advancement is intended for education, science, the military, or just simply for gaming experience pleasure, it will benefit all parties I believe...even Microsoft.

Saturday, April 16, 2011

What is "Net Neutrality"?


Net Neutrality is basically a guiding principle stating that all internet traffic is equal.  When you are on the internet and access a website, you are both sending and receiving "packets" across the World Wide Web.  If using DSL for example, these packets of data flow across the copper phone line.  With Net Neutrality, the packets sent from your computer at home should get the same amount of equal importance as packets sent from your neighbor or even packets sent from a person across the United States.

Network Neutrality has been around since the beginnings of the internet.  Those involved with the creation of the internet, including Vint Cerf, Robert Kahn and Tim Berners-Lee, designed the internet with full expectations that it would be a neutral network.  Although the internet is considered self regulating, the Federal Communications Commission (FCC) watches over Internet Service Providers (ISPs) to ensure they are operating within legal guidelines.


In 2006, Comcast, the largest home internet service provider in the United States, was reported as using hardware called Sandvine that sends forged TCP RST (reset) packets which prevented most Comcast users from uploading files.  In 2007, a peer-to-peer file sharing site called BitTorrent, said that Comcast was not allowing its users to send files.  In 2008, the FCC ruled that Comcast has broken the law by blocking the bandwidth of come customers.  In 2010, the court ruled that the FCC lacks the authority to force ISPs to maintain networks open to all types of content.  The FCC has since approved new rules that Republicans in Congress plan to reverse.

I feel that Net Neutrality is extremely important in making sure ISPs do not discriminate between various types of content online.  The major cable and phone companies of the United States, including Comcast and AT&T, want to have full control over how fast a website goes or cause the site not to load altogether.  They will control what you see content wise and discriminate so you see their own websites and not their competitors.

With cable television, for example, you can choose between various packages.  There is generally a Basic package where you get perhaps a half-dozen channels you like, if you are lucky, and the remaining channels are fluff like the Home Shopping Network and the Jewelry Network.  In order to get the channels you want, you have to upgrade to the Premium package.  Even then, you may not get your favorite channel like History or Animal Planet to where you must then upgrade to Super Premium.  With even the highest Super Premium package, you are still missing kid-oriented shows to where you must add-on additional Family packages.  You then must pay for additional add-ons if you want any movie channels. 


If we were to live in a world without Net Neutrality, the internet would be completely different from what it is today.  Just like ordering cable service as described above, you would be ordering what content and applications are available.  If the content is not offered by them, then you are out of luck.  They may offer YouTube but in order to access it, you must pay more, like a premium movie channel.  Your favorite news website, say The Huffington Post, a site you frequented daily, may no longer be available if Net Neutrality was taken away.


If you would like to remain in control of what websites you want to see, perhaps visit savetheinternet.com, a coalition of 2 million people with one common goal: to protect Internet freedom.

Wednesday, April 13, 2011

A Career in the Linux Field



There are many job opportunities throughout the United States that list Linux as an important skill required.  The demand for IT jobs has increased dramatically over the years.  More and more IT jobs are now requiring knowledge of Linux and including it in their job description.  Many companies are moving towards a Linux-based system and those job candidates knowing their way around the open source world are in high demand.




A career in specifically Linux is not as common as one where knowledge of Linux is one of many requirements.  Many jobs available now require not only Linux, but also Java, C++, Oracle, among other skills.  The minimum degree specified for various jobs in the IT world where Linux is used is a Bachelor in Computer Science.  Fields such as Computer Programming or Web Development now require at least intermediate knowledge of Linux or other open source software.




The pay range varies widely for jobs requiring Linux, based on location, job title, education level and level of experience with not only Linux but also programming languages and database design.  With researching PayScale.com for jobs requiring Linux as a skill, I found that a System Administrator can make nearly $55,000 a year while a Sr. Software Engineer can make upwards of $97,000 a year.  Both jobs listed above do require much more extensive education and experience and knowledge of many other skills.




There was an interesting job at HP that looks more specific to Linux.  The title of the job is Linux Administrator – Linux Clusters.  It is a part-time job in Omaha, Nebraska requiring a Bachelors Degree and 16+ years experience.  They want 3 years experience working with clusters, a strong expertise with RedHat Linux, Cluster Management Utility, Linux operating systems and networking, among other skills.  There was no mention of needing to know various programming languages like many of the other jobs I've seen posted.  I did not see a salary posted for the job but indeed.com shows that a Linux Administrator in Omaha, Nebraska would make about $67,000.  The same job title here in Reno would have a salary of $78,000 a year.




With what I have seen online, most jobs that require Linux also require a higher education and many years of experience.  With just starting out in the field, it would be beneficial I think to look into finding entry-level jobs or work as an intern.  There is a job for a Linux Desktop Support Intern in Chicago, Illinois for DRW Trading Group.  The requirements seem to be more suited for just starting out in the field after perhaps an associate's degree.  They require a strong experience supporting Linux with strong Ubuntu skills a plus.  That was interesting to actually see what we use in class, Ubuntu, as a skill desired among the company.  Other skills include basic support for various operating systems, desktops, mobile devices, etc. 




After researching the many jobs available out there, I believe the best one for me would an internship.  Although there is little to no pay involved, there are many benefits.  For example, the job listed above in Chicago offers fully furnished apartments, medical insurance, 401k, tuition reimbursement among other things.  I feel it would be an excellent way to get your foot in the door and also make invaluable networking connections.  With the economy still hurting leaving many without jobs, those jobs still left are competed for by highly qualified individuals.  With that, I think an internship sounds like a smart move.

Sunday, April 3, 2011

The SCO vs. Novell Trial


SCO versus Novell was a lengthy lawsuit battle that lasted nearly 6 years.  Novell, who owned the rights to the UNIX source code, entered into an Asset Purchase Agreement (APA) with the Santa Cruz Operation, which later became the SCO Group (SCO) after Caldera Systems acquired it.  SCO wanted Linux users to start paying them for software license fees claiming that Linux had code that SCO owned.  SCO also claimed that they were the owners of UNIX.


SCO (who was known to file lawsuits against many companies including HP and IBM) filed a Slander of Title lawsuit against Novell requesting that all UNIX copyrights be given to SCO and also forcing Novell to give up all claims to the UNIX code.  The case was eventually dismissed and Novell filed a counter-suit against SCO claiming Slander of Title and Breach of Contract among other things.  This legal battle lasted for years and went through many different court systems.


For the most part, the lawsuit battle seems to be over.  In June of 2010, Judge and jury ruled in favor of Novell on all issues and was thereby closing the case.  They ruled that Novell did indeed own the copyrights to UNIX.  Although SCO appealed the court judgment to the US Court of Appeals in July of 2010, it seems that this case is indeed finally over.  This was a major victory for the entire open source community, including Linux. 

Wednesday, March 9, 2011

Open-Source Crowd Shoots For The Moon


The Google Lunar X Prize is offering $30 million dollars for the first privately funded team who successfully lands a robot on the surface of the Moon.  The robot must also travel 500 meters over the lunar surface and then finally send both data and images back to the Earth.  Seems simple enough, right?  Hardly, just coming up with ways to safely get to the moon seems daunting for most people.


Well, one team in particular, Team FREDNET, is taking a whole new approach to this spectacular task.   They are moving forward this project open source style.  You may already know of large open source projects like Linux.  With open source, a team of many individuals can come together to work on the same goal.  The founder and organizer of FREDNET, Fred Bourgeois, believes that the goal of the prize is to make space more open.  With that in mind, he feels why not make the entire project open, open to any wanting to participate and creating an open-source team.
Most of the other teams are funded by larger companies with a wealth of money and resources.  With team FREDNET, it is more about bringing people together to accomplish a common goal.  They also want to bring more awareness to people, and especially young children, the wonders of technology and space.  FREDNET has members on the team from dozens of countries across the world.  This is truly an international open-source project.


Team FREDNET plans to use a small Lander that will deploy a small lunar rover that will use the Lander to communicate back to Earth.  The team has three main components to their project mission: (1) getting the rover to the moon, (2) completing required tasks with the rover while on the moon, (3) and finally transmitting data back to Earth. 


At least two of the members of the project are children under the age of 18.  They were interested in the project and although they had little experience or knowledge in the field, they want to help with whatever they can.  Team FREDNET has been very involved with educational programs by having science projects that fit within the requirements of the mission to help gain awareness to young children.  The team is also having an elementary school level competition that will be used to give a name to the Rover.


I think the creation of Team FREDNET and their open-source ideas and ultimate goals in mind are excellent.  They already have many great members on their team including scientists and engineers along with "regular folks" like you and I.  They are in definite need of participants to help with the overall project and also sponsors to help with funding.  The team has already raised over $3,600.00 by 99 contributors so far.  Team FREDNET is the first and only 100% open-source competitor for the Google Lunar X Prize.  I encourage you to check out their team online at http://www.teamfrednet.org/.  If you like their idea and want to contribute in any way by joining the team and/or donating money, please visit their site and become a sponsor today!


Sunday, March 6, 2011

How are Linux Kernels Numbered?

As mentioned in my earlier blog of "What is a Kernel," a kernel is the central component that works to link the user applications with the processing data found at the hardware platform.  In essence, it is the very core of the operating system.  With so many ideas, fixes, improvement, etc to be made, Linux creates and distributes new versions based on a particular numbering system.
First though, a little history on how Linux was numbered before.  The initial Linux kernels had a simple numbering system.  The first kernel released in 1991 was given the number 0.01.  The next month was followed with a kernel with 0.02.  It was not until 1994 that the current version number system was implemented with a kernel of 1.0.

The kernel versioning system of today is both interesting and unique.  It follows a four number system such as W - X – Y – Z.  The W is the most important number when looking at the version of a Linux kernel.  The W shows the version of the kernel.  As of yet, there have been only 2 series kernels; the first 1.0 kernel mentioned above and also the 2.0 available in 1996. 
The X value shows you two things, first the number of release within the series (X) showing a major revision of the kernel version and second, it's status.  If the X value is even, then the kernel is stable.  If the X value is odd, the kernel is still in its development stage and may still contain bugs.  With this, when the two latest kernels are available, one (the even numbered one) will have already been tested and only contain the necessary drivers.  The second kernel available (the odd numbered on) will have all of the current ideas of the time and allow for further testing to eventually make it stable.  With the Linux 2.6.x series though, new development now takes place in the same revision number.

The Y value, the third number of Linux kernel's versioning system, is the minor number which shows the user progression with the series.   It indicates the minor revision of the kernel and is changed to reflect when new features or drivers are added.  The Z value, the final number in the versioning system represents corrections within the Linux kernel like errors, bug fixes and security patches.  You may even see letters following the numbers.  These letters refer to a release candidate.  If you see these letters following the numbers, it generally means it is a non-official release.  Often the letters represent the individual responsible for that particular release.

I find that the advantage of using the Linux kernel's versioning system is that as a user, you can find what version best suits your particular needs.  You may not need the latest and greatest that there is too offer.  You also may want to know whether or not you are using a stable version as opposed to a version still within its testing phases.  I believe the numbering system is pretty straightforward and users will recognize, with perhaps a little research, what version will work for them specifically.
As a side note, if you are curious as to what version or release of the kernel is being used on your particular operating system, you can use one of several commands.  One of the easiest commands is to use the uname command followed with the –r option.  You will get more detailed information about your system's hardware and software.  The uname shows system information and the –r will show the kernel release.  For my system, when I type in uname –r, I get 2.6.24.  I have version 2 with a major revision release of 6 and minor revision of 24.

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.