I was watching rather apprehensively the split in Hudson development (Hudson/Jenkins fork). My team was using Hudson CI for over a year now, and we came to rely on it as a key component of our Software Development Ecosystem, with extensive customization and integration; we really like the product and the idea that we would have to replace it was enough to give me jitters (I even blogged about it here)
I view this as a positive development, even as some in the field disagree
"Oracle today announced that it has submitted a proposal to the Eclipse Foundation to create a Hudson project in Eclipse and contribute the Hudson core code to that project."
"Under the new proposal, Oracle will be the project lead with Sonatype, Tasktop, and VMware as initial contributors.Other companies are also listed as project supporters."
Looks like my celebration was a bit premature, and there appear to be a lot of acrimonious feeling in the developers community. They voice their frustrations here, in the post by Mik Kersten
At the same time, Kohsuke Kawaguchi uploaded a presentation on SlideShare with his own narrative on the split, and his perspective on the future developments.
I guess we have no choice but wait until the dust settles.
It did not take long for Oracle to tighten its grip on the jewels which it fond itself in possession of with Sun Microsystems acquisition. The examples include Java spat resulting in Google's Android lawsuit and changes that lead to Apache Foundation withdrawal from the Java Community Process. Here's the recent one - expropriation of Hudson Continuous Integration Server
Not surprisingly, the Hudson developers bailed out, leaving Oracle with the only asset that it really owns - the name "Hudson". The fork of the code is fait accompli: the new Jenkins site is up and running, and the project is being considered for Apache Foundation umbrella - where it logically belongs.
Oracle maintains that this ousting of the project's founder Kohsuke Kawaguchi was in the best interests of the project because now they'll be able to bring in "real structure" and make the project "corporate friendly". Needless to say that neither are the top priorities of the open source community, Oracle has pushed the wrong key - again.
Thirty plus years of a proud history came to an end: Novell is no more
Those old enough to remember glory days of Digital, Informix and Borland will take the assurances of the new master - Attachmate Corporation with a grain of salt, recalling what had happened to the revolutionary technologies pioneered by the respective companies.
There will be seismic shifts in the industry; organizations (my own included) would have to make tough choices about what to do with Novell technologies acquired over the years.
Of particular interest to me is what would happen to the Mono Project - "an open source implementation of Microsoft's .Net Framework based on the ECMA standards for C# and the Common Language Runtime." While only a blip on the corporate balance sheet, it gave many people assurance that this time things might be different; that Microsoft finally gets it, and open source will lead the way out of corporate slumber... It remains to be seen how the thing will work out, but I would not hold my breath for Attachmate making commitment to open source; it is simply not in their DNA; I wonder though whether Microsoft would recognize the opportunity, and take the Mono team (lead by Miguel de Icaza) in.
Another cool piece of technology I've been watching was Novell Pulse - cloud-based, real-time collaboration platform for the enterprise - written in Scala programming language. RIP?
Market consolidation spells trouble for technology innovation...
By now, open source software has found its ways into enterprise development, and it is no longer a subject for discussion - whether it could be used or not. It can. It is being used by major corporations, and entirely new business models were created around supporting open source, often also free, software.
The prime examples, such as Apache, JBoss, PostgreSQL, MySQL, Drupal, Subversion, Pentaho - to name but a few - are counting their deployments into hundreds of thousands. And then there are less known projects, hosted at sites dedicated to open source such as Apache Foundation, SourceForge and Codeplex Foundation, which provide components that could be used in your own development (checking licensing terms is highly recommended!)
The good news is that these projects could be used to solve your particular problems; the bad news is that because of limited developers resources these projects might have inadequate documentation, in some cases - non-existent. Here's where the "open" nature of the software is at its best. You can do it yourself.
My current favourite tool to document source code is Doxygen. The tool was developed by Dmitry van Heesch, and released under GNU General public license. It compiles superb documentation for C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP, C#, and to some extent D. Here are but two examples of of the documentation I've generated from the open source code:
iTextSharp library (a port of the hugely popular iText open source Java library for PDF generation written entirely in C# for the .NET platform) and SharpSSH (a secure Shell library for .Net, created by Tamir Gal and released under BSD style license).
Doxygen generated documentation for iTextSharp 5.0.2
Once in awhile I stumble across an article that raises questions I am chewing upon myself. Here is one, The Decade of Development by Darryl K. Taft.
He proposes a Top 10 list of trends that had impacted Software Development in the past decade. And, of course, I had something to say about each of his points
1. Web Services/SOA
Yes, most definitely. This is logical evolution of distributed computing. And it is past its potty-training stage as well. Combined with platform as a service it would virtually (pun intended :)) guarantee interesting future.
2. Rise of Open Source Software
Yes... No.. Maybe. Definitely not to the same extent as other trends listed
3. Web becomes #1 development platform
A bit redundant after Web Services/SOA , and hardly a major trend unto itself. Distributing computing, WOA (Web Oriented Architecture) would be more relevant.
4. The Emergence of Web Frameworks
Most emphatically - YES. Once we stop re-inventing the wheel things will began to improve. Take a hint from electronics: hardware engineers do not start designing ASIC from sifting sand, and yet their creativity still has room to flourish (most often heard complaint from framework-phobic developers). Component based approach and frameworks will lift software engineering from craftsmanship into industry. It goes down to a nitty-gritty technical detail such as unit testing and logging and all the way up to Application Life Cycle Management frameworks in context of Enterprise Architecture
5. Web 2.0
I believe that this is a hopelessly over-hyped buzzword. Yes, there are new tools for collaboration, but the idea is hardly new. Groupthink blown to epic proportions.
6. Simple Beats Complex
Any time, I mus add! Hardly a decade-long trend. I would argue that this goes back as far as human history (though not necessarily in straight line): arcane system of tribal lore and taboos gets replaced by a codified law system (though some might argue that it is no less arcane...) Also, one must beware of oversimplification. Albert Einstein once famously remarked: "As simple as possible but no simpler"
7. The Rise of Scripting/Dynamic Languages
I have to admit, this caught me completely off-guard at the beginning of the century. I used to regard these dynamic languages as second class citizens, even having witnessed power of the Shell (KORN, C, bash). I suspect that the major factor is increased hardware power which alleviated inherently slow performance of scripting languages. Another pet peeve of mine was that scripting languages used to be weakly typed; this either changed (Ruby), or was adressed through a variety of frameworks...[interesting discussion on (de)merits of weakly vs. strongly typed languages here) In retrospect it appears logical (de)evolution: compiled -> byte code -> script... I predict that pendulum will swing back, and we'll see resurgence of compiled languages, maybe self-compiled, JIT compiled etc. Just take a look at emerging EXI - binary XML standard - one of the oft-touted features of XML was that it is "human readable"; apparently this ceased to be of paramount importance
8. The Developer Community Bifurcates
I disagree, I do not see it as a trend, but rather as a human trait. Once the entry barrier into the field was lowered (thanks a lot, Visual Basic!), the field was swamped with accidental programmers. Even before that, there were sloppy written COBOL and Algol code and atrocious pointer math (just look out there how many tools are created to detect memory leaks in C code)
9. Heterogeneity Rules
Yes, this is an unexpected twist on the old "best-of-breed" adage, and facilitated by inherently heterogeneous web. XML, Web Services and scripting languages complete the picture.
10. The Emergence of Team Development (and the rise of Agile development)
This is a biggie. Finally, we are at the dawn of engineering, with (emerging) body of knowledge and methods to tackle notoriously hard-to-pin-down software problems. Methodology and frameworks (yes, I do see Software Factories on the horizon!)
I would also add raise of Architecture, especially Enterprise Architecture; understanding of the ultimate importance of ecosystem in this inteconnected age.
Now it can be considered an established fact: cell phones cannot survive water immersion. Not that I went out of my way to prove it but things happen. It’s time for a new cell phone. First comes the sticker price shock – the cheapest phone that your current provider is willing to sell you would be around $300; and I am taking about stripped down, no frills, no gimmicks phone. I could buy plasma TV for this money! Well, almost. After poking around some time, the rep comes up with a solution – you can get this phone FREE if only you sign additional two years contract. What a deal! And I did not even have to give up my firstborn son…
What does it have to do with software? Plenty. Consider a free open source software package. It’s free, right? The online manual (in Greek) says that it can do everything you need, and is incredibly easy to install and deploy – just install it, tweak umpteen plus configuration files - and you’re in business! All you’d need to make sure that you have all the libraries and drivers, but that’s it, honest. Oh, and build it, too. You do not know what Maven2 is?! What’s wrong with you? RTFM, man! Now you are looking around to hire someone who can speak the language, and can make this darn thing to work…or not.
Meanwhile, you have a business to run, so you go out and buy a packaged solution from a well established pira… I mean, vendor. First comes the sticker price shock, then - adding insult to injury, a maintenance contract. You will get all the updates, and help, and exclusive access to knowledge base where all bugs…features, that is… are discussed. All for just 25% of the purchase price. Into perpetuity, as long as you use the software. And just to make sure that you won’t wander off, your data will be stored in a format that only vendor’s software could make sense of. But it will run 6.5% faster because of it, and we’ll give you 5% discount... But you'll need to upgrade your hardware to make best use of it…