Book Review of “The ThoughtWorks Anthology: Essays on Software Technology and Innovation”

My very short review of The ThoughtWorks Anthology. The ThoughtWorks Anthology contains 13 essays on software development from different people. The quality of the essays varies widely but in the end: Recommended.

Solving the Business "Last Mile"
Excellent. Worth the book alone. This essay will lead the community to accept that there is a growing last mile problem for companies between the end of development and the going live.
One Lair and Twenty Ruby DSLs
Nothing really new, but an extensive overview over several DSL techniques in Ruby.
The Lush Landscape of Languages
Sub-par. Only interesting if you know nothing about the differences in programming languages. Filler stuff.
Polyglot Programming
Awful. For an explanation see below.
Object Calisthenics
Interesting and thought provoking. Could make you a better developer.
What is an Iteration Manager Anyway?
Good new insights about the general role of Scrum Masters and other Iteration Managers in agile projects.
Project Vital Signs
The team mood chart is genius.
Consumer Driven Contracts: A Service Evolution Pattern
Do your SOA from the consumer side not the provider side, excellent idea.
Domain Annotations
Very good! If your into Domain Driven Design, a must read.
Refactoring Ant Build files
I've been developing Ant build files since the beginning of Ant, but still got some insights.
Single-Click Software Release
Some good points for the deployment process, worth reading.
Agile vs. Waterfall Testing for Enterprise Web Apps
Overview of testing methods and how the fit for agile, solid but could have more punch.
Pragmatic Performance Testing
Sorry to the author, I didn't read this one 🙂

Let me illustrate how bad some parts of the book are. One essay with a clear bias against Java wants to establish how awful Java is and how wonderful other JVM languages like Groovy and JRuby are. After a distorted line number example there is an even more distorted isBlank example. For Java the author presents an implementation from Jakarta Commons, a heap of notoriously bad code.

public static boolean isBlank(String str) {
 int strLen;
 if (str == null || (strLen = str.length()) == 0) {
  return true;
 }
 for (int i = 0; i < strLen; i++) {
  if ((Character.isWhitespace(str.charAt(i)) == false)) {
   return false;
  }
 }
 return true;
}

For comparison the JRuby example (which has other performance and memory characteristics) is short

class String
  def blank?
      empty? || strip.empty?
  end
end

One who is moderatly fluent in Java would write the following code though:

  public static boolean isBlank(String string) {
    return isEmpty(string) || (isEmpty(string.trim()));
  }

  public static boolean isEmpty(String string) {
   return null == string || string.length() == 0;
  }

Not as nice and short as the JRuby example, but much better than the ugly Commons example. And with static imports the methods aren't that ugly to use than before in Java. A isBlank("Hello") works.

But beside some bad essays the book is worth it's money (Well it is cheap).

Thanks for listening.

Update: Lowell: "If you are using Java 6, there is a new method: String.isEmpty(). You could use that in your Java example and then you wouldn't need to write your own." Thanks.

More cluelessness from ExtJS lead developer Jack on the GPL issue

Reading the excellent analysis on A little Madness about the GPL and ExtJS issue, there is more cluelessness in a comment by Jack Slocum the ExtJS lead. He claims that others

"[...] wrap it up and sell it as their own. [...] With no mention of us at all."

Nope, that would be illegal in most countries. You cannot deprive the author of his ownership and tell people the work was yours.

If someone would repackage ExtJS he would be required to keep the headers and original copyrights intact. So by definition he can't "sell it as his own". This just shows how uninformed the ExtJS core developers are.

"Since we started we have been open source and that is the route we will continue on."

Running a company with a distorted view on the GPL ("backend code must be GPL if it generates HTML with ExtJS in it") is not "beiing open source". The open source argument is just a fake front to make more money.

IANAL of course.

The sad thing is though that Java open source projects have learned over the last 10 years that an Apache license leads to much more success. Apache will lead to companies using your library, more developers and in the end more users. More users lead to more support contracts and more license sales. Few users lead to few sales. And with lots and lots and lots of users someone big will buy you (Oracle, Sun, Google, Yahoo, MS). The GPL model only works for standalone products like MySQL, not for libraries. I've needed to learn this the hard way too.

The most important point is: Open Source success is build on the trust of your community. Lots of developers are let down by ExtJS. If you destroy the trust - as ExtJS did - your project is history. Go jQuery UI, go!

It will be interesting how they fare against e.g. Tibco GI which is commercial but liberally BSD licensed.

Thanks for listening.

GPL and ExtJS for Intranets

My latest thought about ExtJS going GPL. Although ExtJS is GPLv3 and the developers claim (falsely) that your backend needs to be GPL too when generating code that contains ExtJS, for internal/intranet applications you still can use ExtJS as you're not distributing ExtJS.

When people don’t understand GPL and LGPL – or – ExtJS is history

The people behind ExtJS are funny. First they have changed their license to the LGPL, without understanding it in any way, now they've changed it to the GPL without understanding it in any way. They claim that server side code which creates HTML pages which contain ExtJS must be GPL, wuahahaha.

I've been running LGPL and GPL open source projects for several years, had lots and lots and lots of discussions about the very fine points of the LGPL and GPL and let me tell you the ExtJS guys have absolutely no clue. Which is a shame because ExtJS was a nice library. Now they're history. No sane company will touch a project which changes it's license frequently and has such an attitude towards the - dangerous - GPL.

Update: My latest thought. Although ExtJS is GPLv3 and the developers claim (falsely) that your backend needs to be GPL too, for internal/intranet applications you still can use ExtJS as you're not distributing ExtJS.

Update 2: A little madness has a nice analyis on the switch.