You have reached the blog of Keith Elder. Thank you for visiting! Feel free to click the twitter icon to the right and follow me on twitter.

Apple and open source, state of Linux

Posted by Keith Elder | Posted in Open Source, PC Software | Posted on 29-06-2006


Joe Stagner posted on his blog about the 10 people who don’t matter that was spurred by an article on CNN.  Joe’s post got me to thinking about open and commercial software and how the two mix.  It also got me to thinking about why one fails and another succeeds.  I’m not sure where this is going to wind up but here are some thoughts.

Apple has already found a way to use open source in a commercial business. I think they have a great blend of commercial and open source software.  For example, Mac OSX was built out of the open source operating system BSD.  We know this effort today as the open source project Darwin.  So yes, if you are using a Mac, your operating system is open source based.  Apple chose BSD over Linux for the OS primarily because the license that Linux used wasn’t condusive for a business.  If you read the GPL license and compare it to the BSD license you’ll understand.

Apple also took the foundation for Konqueror, the web browser integrated with the KDE environment, and turned it into Safari.  Well, sorta took, let me clarify that.  Apple primarily took the rendering engine just to be clear.  There have been some rumblings in the KDE community about Apple “not giving back” and the Firefox guys have had some issues as well , just checkout some of the newsgroups.  Time will tell if this relationship will work or not.

There are tons of other examples as to how Apple has embraced open source software.  Two more examples come to mind that I think other companies could learn from are:  OpenLDAP and Samba.  OpenLDAP is the open source equilvalent to Active Directory if you want to think of it in those terms.  Samba is the tool used to allow Unix operating systems to connect to Windows computer shares or printers.  The problem with these two packages is it would take a novice 6 months or an expert the good part of a day or maybe even more reading howtos to figure out how they work.  It’s not sometehing you are going to install by clicking next, next, next, next.  LDAP would probably take a month, it’s a beast.  What Apple did though is take these two projects and incorporate them into the OS so users could easily connect to a Windows PC or join and Active Directory domain.   Kinda smart if you think about it because they didn’t have to write it from scratch.

Now stop and think about it for a second.  Apple built their Mac OS X on an already existing open source operating system, built their browser on an already existing engine, and utilized standard protocols that were built by the open source community and incorporated those into their OS.  Hmmm.  Do you see a pattern?  I do.  What Apple is doing is taking the best of breed open source projects in certain areas and then providing a much needed feature to those projects so the average end-user can use them which is an Interface.  This is important and I’ll give some more insight to this down the road.

I’ve said this over and over again when I taught Linux certification classes at the college level.

“The open source community is great at building things based on a protocol or an RFC.  If you don’t give them a spec, you never know what you’ll get.”

That’s a bold statement I know, but allow me to give a few samples.  The main reason this occurs is the developers don’t have to think about what they are building.  The spec is already written so all they have to do is write their code to the spec.  Anyone that’s a developer will tell you this is some one of the easiest programming tasks in the world to do.  If all of the hard “engineering” has already been done for you, you are simply converting english sentences into code.  I like to call it translation programming.  If you have ever wondered what the difference is between a “Developer” and a “Software Engineer”, this is it.

This is why Apache, Sendmail, OpenLDAP, IMAP, POP3, OpenSSL, OpenSSH and other programs based on standard protocols and specs work very well in the open source world.  When you move away from these documented protocols and into something less tangible that businesses really want, like the ability to have a single application that does calendering, scheduling, email, etc (you know.. Outlook?), the open source community fails to produce anything.  To this day there is no equilvalent to Exchange in the open source community.  Why is that?  More on why later.  The only thing out there currently is Evolution which is an Outlook client knock off written for the Gnome Desktop that looks 15 years old (yes I am not a fan of the GTK interface).   Suse Linux has tried to “piece the puzzle” together by offering a web based version of Exchange using open source tools derived from standard protocols such as LDAP, IMAP, ICAL, etc.  I’ve demoed the product and it doesn’t work.  Sorry but: Microsoft 1, Suse 0. 

Let me answer my own question as to why the open source community hasn’t produced an Exchange equilvalent.    The simple answer:  There isn’t a spec.  Tell me how  the open source community is going to do user testing, gather wants and needs from businesses around the world and role that into an open source product?  The answer is they are not!  This is where things unravel for the open source advocate that preaches all software should be open source.  Open source projects (normally run by geeks) don’t specialize in interacting with businesses, end users, user testing, and usability.   Aha!  So now you see why Apple providing the missing piece to the open source products they’ve added into their OS works.  Notice I haven’t said one bad thing about open source projects.  Honestly, the ones built around protocols and existings RFCs are great but they lack that vital last piece, Interface.  Apple and Micrsoft for this matter shine in this area.  Microsoft to take this one step further shines at the collecting of business wants and needs and then rolling it into a product.  Businesses need to do word processing so they created Office.  Businesses want to do calendaring and email so they created Exchange.  Businesses wanted to share information across different boundaries in the Enterprise so they created Sharepoint.  Where is Apple in all of this?  Well they are hardware focused and simply use software to sell their hardware so they could care less what the Enterprise wants or needs.  But they’ll sell all of your employees an Ipod though!

Something else you should take note of is the correlation of successful open source projects that have a true “leader” to those that don’t.  For example:  linux, perl, php, python, ruby just to name a few.  I bet most open source advocates could name you the person behind each of those projects.  Perl has been around for years and if you don’t know of Larry Wall then I can’t help you.  The reason these projects are successful is they didn’t adhere to the full “bazaar” concept as outlined by Eric Raymond.  Instead, there was one guy making the final decision, not the bazaar.  Even if that decision was wrong, one person ultimately said what was going to happen or be in the release of the product.  What about Steve Jobs or the Program Manager for Exchange? This is no different.  At some point, you have to have someone at the end of the Lifecycle of development to say, “Yes” or “No”.  Whether this is your PM or the guy who started the project in the first place it doesn’t matter.  If you let people program wildly on your project you are going to wind up with extreme inconsistencies.  Some great examples of this can be found in an open source prorgramming language that I’ve used extensively called PHP.  Even PHP programmers are disgruntled because of inconsistencies.  Is it str_replace() or strreplace() just as a quick example.

Everyone looks at Linux as the open source defacto standard but honestly after having used it for years the whole thing is just a mess in my opinion.  There are over 10 prominent versions of Linux in the wild each with their own way of doing things and their own packages.  Why is that?  Well, Linus just focuses on the kernel, but who is the “go to guy” that says Yes or No for the rest of it?  The answer is he/she doesn’t exist.  If you install the various versions of Linux you’ll find files in different places, different versions of software bundled with each system and different packaging systems.  From a developer standpoint developers can’t even write to a standard interface API.  Should they write their app so it works in KDE, or Gnome, or Enlighenment, or FVWM, or whatever?  How are vendors suppose to write programs to all of this?  Most of the time they don’t.  They choose one vendor’s project like Redhat and write to it.  This fact has made me mad on one or more occassions when I had a server running something other than Redhat that I needed to install a commercial product on.  After all wouldn’t you think the open source community would want vendors to write stuff for their platform to give it more market share?  It appears they don’t because there is so much effort going into creating new ways of doing things.  Release early and often they say and if we break something in the process for someone else who cares. 

My point to all of this is Linux is a mess because of the “bazaar”.  Sure Linux is great for a web server and I use it for that to this day.  Why is it such a great web server?  Easy.  Because there was a spec on how to build the web server.  Anything other than a web server and I’m not interested.  I want to dabble in open source software that’s been polished I’ll turn on my Powerbook and play.  This probably explains why a lot of fellow linux advocates that were disgruntled like myself switched to Mac OS X.

So you see there are problems with open source software.   The open source world isn’t a perfect little bubble where everything is all dandy with penguins jumping around hither and tither.  To get the results from the open source community into the hands of end users  the open source projects need commericial interaction.  The project needs the “guy” to say whether or not something is going to get put into the product.  The project needs a lot of TLC spent on it to polish documentation, make things “Forrest Gump” and easy to use.  Look at MySQL as another example of a company who’s product is open source and the difference between it and PostGreSQL.  If you didn’t know anything about either one, which would you rather use?  More than likely MySQL because it has better documentation is easier to setup and configure, has a better interface etc. 

Companies like Microsoft, Apple, Sun, IBM and others can get ahead of the competition if they choose to add that missing piece and use open source effectively.  The question now is, which one besides Apple is going to do it?

How an open source developer transitioned to .Net

Posted by Keith Elder | Posted in .Net, Asp.Net, Open Source, PHP, Programming | Posted on 11-03-2006


For a long time I’ve been wanting to put this together.  A lot of my friends who were open source advocates like myself are perplexed with my transition to what they call the “Dark Side” of development.  Referring of course to Microsoft as the evil empire.  I took some time this morning to finish how and why I migrated from programming mainly in PHP to .Net.  I didn’t want to put this information into a blog post because as I was writing it, it just didn’t feel right so I created an article out of it.  In order to give you the full picture I give some information on my background to cement how firmly planted I was in open source technologies.  Then I give you some of my thoughts on the conversion process.  In the end, I give some advice for others that might be curious as how to make this conversion.  

Read the article “How An Open Source Developer Transitioned to .Net”



Scaling PHP

Posted by Keith Elder | Posted in Open Source, PHP, Programming | Posted on 24-05-2004


I found a really good article which outlines some nice tips to scaling PHP. The article is written by George Schlossnagle. In his article he explains why you do not need large DB abstraction layers like PEAR and ADODB and why you should NEVER use relative paths to images. The article can be found here.

Raid MySQL Tables

Posted by Keith Elder | Posted in Linux, Open Source, PC Software, Programming | Posted on 15-05-2004


The following was taken from Linux Magazine from an article written by Jeremy Zawodny. It talks about a litlte known feature of the MyISAM tables in MySQL which allows you to create raid tables. The snippet of the article is publised below.

RAID Tables The final variety of MyISAM tables isn’t widely known, but can be useful in some circumstances. RAID tables are simply MyISAM tables whose data (.MYD) files have been broken into multiple files. CREATE TABLE mytable … TYPE=MyISAM RAID_TYPE=STRIPED RAID_CHUNKS=4 RAID_CHUNKSIZE=8 Running that SQL command breaks the MyISAM table into 4 separate files (chunks) that are written to in a round-robin fashion in 8 KB stripes. Why do that? If you’re using a filesystem that places a limit on how large a file can be (2 GB or 4 GB), RAID tables work around that limitation. (However, file size limits are becoming more and more rare, as recent Linux kernels don’t have size limits anywhere near that low.) Performance is another reason for RAID tables. By putting each chunk on a separate physical disk, you can spread the I/O work out more evenly. In most MySQL installations, the main bottleneck is disk I/O, so this isn’t very far fetched. However, if you have the option of using hardware RAID or even software RAID at the OS level, you’re probably better off doing so.

Reference: LAMP Post, by Jeremy Zawodny

LogiCreate Application Server Open Sourced

Posted by Keith Elder | Posted in Open Source, PHP, Programming | Posted on 07-06-2003


The LogiCreate Applicaton Server built with PHP was released as open source on June 5th, 2003. LogiCreate is a framework to build portals, CMS, CRM or custom web applications. It is extremely fast to start developing applications with, very little code for the developer to start writing and is extremely different from pretty much anything else out there right now. You can download the PDF presentation on the LogiCreate site as well as register on the site to download the system. We’ve been using it for several years now and will start offering hosting accounts pre-packaged with it soon.