Posts Tagged ‘open source’

Documenting Open Source Software with Doxygen

Wednesday, July 28th, 2010

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

Doxygen generated documentation for SharpSSH 1.1.1.13





Software Development Trends

Friday, January 22nd, 2010

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.

Between Scylla and Charybdis (software version)

Thursday, October 1st, 2009

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…  

I believe the Ancient Greeks knew a thing or two about software…