Daily Archive for March 29th, 2005

Why don’t we contribute to Mozilla?

I was browsing the CNET commentary archive when I stumbled across an article discussing the new Netscape 8.0 beta. Interested to see if perhaps the Internet community was intending to open another front in the browser war I felt inclined to read on. Nothing interesting was said in the commentary and as a general rule, I find that to be a trend of sorts from CNET, skirting the border between those who are tech users, and those who are truly technological in nature. But what became much more interesting was the collection of links at the bottom of the page. Most of them were to a variety of reviews and public opinions on Firefox. I realized that as a contributing member of the open source community (not on some wizardly hacker level, but I have contributed the occasional bug fix… Although I am guilty of far more bug reports) I really was not used to viewing an application as a user would. And more importantly, what did the world outside of the occasional pro-Firefox article I read think of it, how did those who defended IE justify it? Normally I dismiss pro-IE works as stupid propaganda or simply works by the un-enlightened. I decided to attack this open minded, to not, even for one second think about the actual code, not wonder why the poor bastard who created this site choose to half ass his CSS implementation and ignore any semblance of standards compliance. Just be a user.

That didn’t last… I would love to have an incredible review here that tells a tale of some mind altering experience in which I realize that to be effective developers we have to better understand the needs of our users. I find myself too “l33t” to think that we should alter (in a fundamental sense) how we approach software development in the open (or bazaar) model. But what did strike me as odd was the astounding number of times that the Mozilla foundation was quoted as saying they had not built up the developer base they had expected or desired. I felt the need to re-read the sentences and quotes several times over. While they did go on to acknowledge the stunning financial support received, and how users are great about submitting bugs and coordinating standards compliance movements, actual developers, the ones that fix those bugs and create the utterly stunning and innovative feature additions (that originated as simple solutions to a problem they had personally) are not present in the force that can be found in other projects.

I almost felt offended, here was one of our flagship projects, demonstrating that Open Source projects could indeed have desktop implementations and interact with everyday users. Perhaps the single most publicized slab of OSS that we can find, the real challenger to an arena of MS dominance, a true underdog. Sure Apache has IIS whimpering and a super computer running some MS product is akin to Jeff Gordon being given a Pinto and asked to compete in Daytona, but here we have a genuine foothold deep in enemy territory. Here we are at Normandy, but apparently only the British are fighting, the Americans and Canadians are off in Italy looking for new mopeds or something. It stands to reason that we would be throwing everything we have at this opening, trying to hit 25% of market share before the IE 7 release. (While I have no doubts about its futility, it will have an influence on users) I decided that as a small time contributor to Open Source projects, I should make an attempt to find a simple bug and attempt to fix it. I would make a point of searching for one thing (something simple, but none-the-less this is more of a ‘its the thought that counts’ type thing) I want to know why an obviously appealing and strategically important project does not have substantial community support.

First things first, I am a Gentoo user for about a year and a half now, and one of the most important things about contribution to Open Source projects is using the vanilla CVS tree for your fixes, this means avoiding portage and its USE flags, (even when they probably have no effect whatsoever on the branch I have chosen to focus my attention on) . So, first step, I head on off to find the 1.0.2 source, I know I’ll need either the CVS tree or nightly build later, but the latest release is a nice starting point and saves the developers site’s servers a few cycles and a bit-o-bandwidth on a project this big, probably not a concern, but courtesy is generally appreciated, especially if I look like an idiot later and need help while attempting to help.

My starting place was http://www.getfirefox.com, granted, I probably should have looked for a developers site first, so sue me, I was ignorant. Unfortunately, they only distribute pre-compiled binaries as near as I could see, not a major roadblock, but automatically providing Linux users (the group most likely to be interested in the source and most likely to provide developmental contributions in the form of real code) with a binary as opposed to source sets a tone that seems to build throughout my investigation. At this early phase, I noticed nothing, but as we progressed, it seemed representative of what was to come.

To digress slightly, I feel that I should give any readers a more comprehensive idea of my technical background. That way, as you flame me and form your opinions, you will know my biases and predispositions. Here is my view on OSS. I have been deeply involved in the computer world for about three years at this point. It was at that time I took a short one week class on C++, namely because I had done well in my Computer Applications by Design class. I would love to tell you all the glorious door this opened but suffice it to say, that up until this point, problem solving (as a skill) was only valued in its slightly abstract application to problems that existed in a very ‘real’ world. I have always struggled with computational skills, and have faced challenges in math because of it (Up until Pre-Calculus, it was at that point people realized, if I could understand what was going on, who gives a rats ass if I can multiply 6 by 8? Answer: Nobody beyond your 3rd grade math teacher) My core programming knowledge stems from my work with C/C++. First on windows but a little over two years ago, I heard about Linux, having an old crapped out Windows box that couldn’t boot into an environment capable of running a virus scanner, I decided why not? My C/C++ is pretty strong, but a bit under practiced as I then took our schools AP Computer Science class. (For those of you not familiar with our current public education system, the AP Comp Sci test is in Java with a strong focus on OO concepts and OO program design) Thus most of my programming work has been focused on Java, as I have taken a liking to Eclipse. And while I will admit that swing is quite ugly, its a handy learning tool and effective for simple UI task. More recently I have had some interesting success with the GTK bindings for Java. I have spent some time in the past 6 months or so messing with scripting languages namely BASH, PERL, and Python, with the last being my preference currently. I am obviously web literate and can handle basic HTML/XHTML and CSS work, but resent the idea that markup languages can be used for UI. Thus I have done my work with Java Script, as a principal I resent client side processing, but do accept that for today’s web based applications, server side solutions are near impossible, both technically and economically. So there you have it Java buff, with a solid C/C++ background and scripting experience including Java Script.

Since we are back on track (that last paragraph was about three pages of rant initially, I forked about 80 percent of that into another post for a later date). At this point I can tell that Mozilla is aware that they are not pitching the ideals of contribution to most of their users, who are supportive of the Open Source idea simply because it also generally results in free programs. I instead hop on over to http://www.mozilla.org/developer/ (a page one link) and think jackpot! The contributions I have made to projects were small, the projects were small, at absolute best, generally a pre-beta/late-alpha release (those programs are a more manageable size and problems easier to find without a great deal of familiarity with the code). Not much manpower to spend on development documentation or anything of the like. Generally a Bug Tracker and CVS tree was about what you could hope for. So perhaps I’m naive but all this, but not only is there a host of documentation and documents (something I will get to in a second) but a series of powerful tools, unfortunately this was of little help to me, the ‘newbie’ (and I use the term humbly, I consider my self a proficient programmer, but having little professional team development experience, I assume that this are tools that I simply need to build familiarity with) in the world of Firefox source, I couldn’t make much of these utilities. Here I found all the links necessary to acquire my source including CVS instructions, I downloaded one of the snapshots and followed the instructions on the site verbatim to synchronize my source.

I am actually out of town during this little experiment, enjoying my spring break in Arizona. (Yes, I am outdoors, wireless… duh.. but yes… it is still sad) basically, this new resort has about 5mb/s of bandwidth, all good and read, except they have room for some 10,000 guest it seems, and apparently all of them have decided that 2:30 Thursday afternoon is an excellent downloading time. So while that CVS sync process plods along, I attempt to browse around the documents provided, including the Mozilla Hacker’s Getting Started Guide one of the best done guides to a projects policies on developer expectation.

One of the first things that the authors or the developer documentation make a point of is the portability that Mozilla products all implement. Next, a point is made that the core of Firefox is C/C++ and JavaScript (at this point I am encouraged, I probably won’t need much beyond a library lookup site to reference a few functions before I can get hacking) I proceed to read about the NSPR or Netscape Portable Runtime, I realize that I am going to be working with a near completely alien set of libraries. While it is wonderful that Mozilla has made cross platform implementation so solid, as a new developer, I’m intimidated frankly. However, I’m not out, there is a link to a very thorough and comprehensive set of documentation for the NSPR, enough that this should be relatively painless. But that didn’t last long, by the time the document had finished, I had come to the conclusion that I would need to learn not only a hybrid C/C++ but a foreign UI language in addition to implementing several words and ideas that I don’t even know the meaning of. Now this might just be a wakeup call to me, that my programming habits are not with the mainstream, and that I should probably dig up a nice howto or tutorial on the latest and greatest. Or is this not my fault? Am I a decent programmer who wants to get involved, but simply can’t offer much to a project of this magnitude.

I break at this point because it was there that I realized why Mozilla didn’t have the support it desired. Despite an extensible format and widespread use and user support, they started the project with a massive code base. A code base that was developed in a closed system. While most contributors to open projects were not working with the project when the foundation was being laid, the community as a whole worked on each step. Small projects can be opened after development in a closed environment for a period of time because a talented programmer can sit down and digest all the code needed to add a feature or fix a bug. Mozilla’s size and widespread appeal prevent this. One cannot get fed up with a bug and just crack open the source then start searching, there are no hackers who just decide that the table rendering is too slow, and rework it. While certainly most of the heavy lifting done in development is not done in this spontaneous manner, once you have made a submission of that nature you continue to contribute to the project. It is that thrill of trying something radically new and having it work that drives a hacker. Firefox is not a system that really encourages that, being so large and unifying all the cross platform development trees make hacking Firefox too much like an obligation.

Well what about extensions? Firefox had provided a VERY simple and powerful method for creating extensions. Building on the heavy use of JavaScript in Firefox’s interface, creating an extension is really quite similar to web based application design. Because of this, there are plenty of extensions under development, many containing quite useful and stable features. This in addition to the financial support proves that we are more than willing to help Mozilla continue, but there simply doesn’t seem to be some way for potential developers to get involved painlessly. I wish I could see some magical solution that would make development work on Mozilla simpler, but it seems that the sheer size of the project will continue to alienate developers who don’t have the time, dedication, or ADD medication to work through the steep learning curve.

OSS Now

I felt that I should get my offical views on where the OSS movement (primarly GNU/Linux) stands at the moment.

As I see it we are nearing a point in time when we will be ready to cross a line and cast off our current image (that we are a counterculture and software archive that existing purely as an anit-Microsoft). Rather, we can be known as just GNU/Linux, an Operating System paired with a collection of solid commercial grade applications, (we have this from a portion of the technologicaly literate) that interacts with users in a consistent and easy to understand manner.
Eventually the last portion will bypass that of other options with a gap large enough to justify large scale migration to the GNU/Linux platform. Unfortunelty, OSS is not ready for this yet (my $0.02, not a fact, so chill) and perhaps the greatest threat to the Open Source or Bazaar style of development is not (as many analyst who have become overly accustomed to closed or Cathedral development models claim) the frequent fragmentation and threading of projects (that is a natural part of the open development cycle, especially because most branches are short lived and minor, eventually folding back into the primary development tree) but instead a premature push for the adoption of OSS on a global stage. While we love to tout the security of Linux and its immunity to malware as a whole, it still has security holes. The Bugtraq mailing list has plenty of Linux vunerabilites to go hand in hand with its Windows ones. While the severity, ease of exploitation and patch speed are all up for grabs, we are still a David fighting Goliath. If David had missed by only a few inches, or if there were only sand sized pebbles, or his sling broke, then he would have become Goliath paste. We are fighting an uphill battle and it is not simply a matter of being better than our competitors. We have to be so much better that people are willing to switch. And we have to create this image without the corperate marketing and advertising engines that power Microsoft for years on end, convincing users of whatever is needed to keep them from jumping. Someone who already commands 90% of the market doesn’t need innovation, they just need for things to not foul up so bad that they hire more PR people then the budget allows. We don’t have that luxury, we have to be almost perfect, we have to not just win the crowds attention, but then dazzle them.

It is here that I think the community needs to take a second and think. You really only get one shot every two years, if your lucky. Recently some Mac lovers made the mistake of pushing something too hard too fast. While the idea of the contest is admirable, they have hurt the Mac image of virul immunity. Now I know that most slashdot readers are techno-literate enough to be aware of the reality of virus’ and how its perfectly possible to have a virus on a Mac. Its more difficult than Windows, but for $50K US most would be willing to do the reaserch. While GNU/Linux is ready in some capacities to venture out onto a larger stage, we MUST be cautions. I was performing the family pitch, convincing them that it was worthwhile and they could send e-mail just as well from Linux (actauly when I told them that e-mail servers are commonly Linux they jumped at the idea.. I have no clue why that would make a teenage girl switch, but so be it). I think SuSE and Knoppix both seem to have the general idea. I know that taking it too far will get you Linspired, but Yast is a configuration utility that can actualy detect most desktop hardware and handle it.

I dunno what lies ahead for OSS (I would love to say global domination) but I want to be on record stating that there are great things ahead for OSS. But at the moment, we need to polish and perfect. And I mean wait in a general sense. I’m not pushing pause on our global ad campaign (that doesn’t exist if some of you are scratching you heads, that was sarcasm.. just in text… so you can’t tell) But should you be working at a small firm, don’t force Linux, just mention it offhand. Soon enough there will be an upgrade or a cost cut, and someone will remember what you said. If you have relatives or friends who are on the line, be absolutly sure it meets their needs. While there certainly is a piece of OSS out there for every niche, there is not nessicarly a 1.0 release for every niche. Sometimes the best game is waiting, or if your gonna complain, you could help out.