SpringSource to stop providing maintenance releases for free

Is this possibly the latest Java community buzz? SpringSource Announces Enterprise Maintenance Policy.

Mats Henricson asks What is SpringSource doing with its license? and while the SpringSource Enterprise Maintenance Policy FAQ states that there is no license change, the SpringSource Enterprise Maintenance Policy sure is a change. They summarize it quite consise themselves:

After a new major version of Spring is released, community maintenance updates will be issued for three months to address initial stability issues.  Subsequent maintenance releases will be available to SpringSource Enterprise customers. Bug fixes will be folded into the open source development trunk and will be made available in the next major community release of the software.

Accelerated Agile on Øresund Agile 2008

Yesterday I participated in the Accelerated Agile workshop at Øresund Agile 2008. It was attended by both developers and non-developers. Some parts of the workshop were common for the two groups and others were separate.  Me and another developer actually did both TDD and pair programming! BestBrains, the company that organized the workshop, had prepared an Eclipse project in a Subversion repository, using Maven to build and with CruiseControl for automated build on commit. We pair programmed on an MS Windows machine but I tried on my Ubuntu Linux machine to and it worked fine.

Update Photos and comments from BestBrains.

Agile Architecture on Øresund Agile 2008

Today, on the first day of Øresund Agile 2008, I attended the Agile Architecture workshop held by Jim Coplien. He is a really great speaker! Some things that stuck in my head:

  • Don’t use TDD, it destroys architecture because it makes the programmer focus on individual methods, losing the bigger picture on the way
  • Don’t bother with unit tests, they make a bigger code base (equal amounts of application and unit test code is not unlikely), meaning more defects! The system tests should be enough
  • A subset of system tests that run in less than ten minutes should be used as a smoke test.
  • For interactive systems he was able to unify Agile software development, Model-View-Controller(-User) and Object Orientation.
  • MVC inventor Trygve Reenskaug was referred to a few times, and Jim told us that Trygve’s Data-Collaboration-Algorithm (DCA) was going to be the next big thing in software development! (This will be the seventh hit or so on a Google search for "Data-Collaboration-Algorithm". Maybe I should make a dedicated blog post about it.)
  • Domain Specific Languages (DSLs) are bad because they add new languages to learn when new people should work on a system, and it takes years to create a good language.
  • UML could be used to visualize a system, but should be generated from source code. Quote: "No hand should ever touch a UML diagram."

Food for thought, isn’t it?

The list above is unfortunately a little short on things that Jim advocates but I need some good sleep before the Accelerated Agile workshop tomorrow and my writing would not be half as good as hearing him saying it.

Beautiful Code

I’ve been reading Beautiful Code from time to time during the autumn. It’s mixed bag and I actually skipped some chapter that was too deep into maths for my taste. Chapter 22: A Spoonful of Sewage was an instant favorite; it is a a fascinating head-first dive into a bug hunt in Sun Solaris’ synchronization primitives. It was a bit over my head but interesting nevertheless. Another very interesting chapter was Chapter 23: Distributed Programming with MapReduce about Google’s “programming system for large-scale data processing problems”.

Only because of the title of this blog, I’d like to mention that more than one chapter mentions the Divide and Conquer approach used by the Quick Sort algorithm, including using a subtle bug found in early (or naive) C, C++ and Java implementations to show off JUnit.

I’ve thought of sorting the chapters by programming languages and see what language the most author used for his or her beautiful code. At least Lisp, Python, Perl, Ruby, Java, C# and C++ are present. Some day I want to do a bit of Lisp programming, but I haven’t found a suitable project yet. Maybe I should buy a Lisp book too first…

Where is my own Beautiful Code then? If “get the job done” is considered beautiful, it could be the PHP code for any of my web sites! 🙂 I’m pretty happy about the architecture for my unfinished MidaSync project; maybe I should try to describe it here some day.

For MidaSync I also wrote a D-BUS wrapper for C++ that I’m quite proud of, but at some point it became a bit “magic”. For example it relies on the presence of a partial specialization to create a D-BUS path from an object exposed through D-BUS. I’ve never released this properly and I think that the D-BUS wrapper in OpenWengo is used by today’s C++ developers in need of D-BUS support.