Should test cases of GPLed software be under GPL as well?


  1. By definition, source code is the form of software, which is easiest to modify. The actual executable is created from it by an automatic build process, which may include compilation and linking. If you modify a complicated piece of software, you want to make sure that your modifications broke nothing. To do this efficiently, you need test cases.
  2. If your modifications are not generally useful, owners of secret test cases won’t test your modifications. The same applies if you were forced to fork the software package in question.


  1. RMS didn’t require this so far. RMS’ printer driver problem can be solved without test cases. This has not been a requirement so far.
  2. Some test cases may embody proprietary software usage scenarios, and releasing them to the world, as required by GPL, would reveal too much of the company’s trade secrets.
  3. When you add your modifications to a GPLed software package, users with secret test scenarios will test your modifications, if they are useful for them. If your modifications break the software, they will fix them and you’ll get back their fixes thanks to the GPL.

At any case, there is a case for strong recommendation that test cases be constructed for GPLed software, and that they be released together with it and under the same license (GPL or LGPL).

Selling your software – a brief review of two articles by Eric Sink

Closing the Gap, part 1 talks about the function of proactive sales in a small ISV.
Closing the Gap, Part 2 describes an alternative to hiring a sales guy.

Both parts elaborate on closing the gap between your product and a prospective customer.
Part 2 also has links to further reading about the subject.
Those parts and several other articles by Eric Sink are worth the time spent reading them.

What happens if we cross physics with Scheme?

The data structures in Scheme (and for that matter, also in Lisp) can be used to model different realities. Functional programming corresponds to closed systems, which evolute in time without interaction with their surroundings beyond initial conditions and harvesting of computation results. Imperative programming corresponds to open systems, which interact with their surroundings and their state contains a record of such interactions which occurred in the past.

So I am wondering whether additional models of reality can be investigated by means of Scheme. Such as open systems, which hold memory of both past and future events.

In my Google search, I found only the following:
SCMUTILS Reference Manual, which is referred to by Christopher Browne’s Web Pages. However SCMUTILS is not what I am looking for.

Source of inspiration: chapter 3 of the SICP 2nd edition.

PyGTK Hell

I am prototyping a keyword search based application.

For easy programming, I use Python.
For easy GUI design, I chose glade.
So I have to use PyGTK.
The application is not demanding in terms of innovative technology or software versions, so I use a PC with RedHat 8.0.

However, I ran into a snag:
I wanted to use the gtk.TreeRowReference binding to refer to rows of a listbox, which I want to delete.
However, it turns out that the Python bindings of GTK didn’t cover 100% of the GTK’s API. One of the missing APIs is… gtk.TreeRowReference, which was added only to PyGTK 2.4.
The PyGTK version which came with RedHat 8.0 is 1.99.12.

I worked around the problem by using paths. Since paths (unlike references) become invalid if rows are inserted/deleted into the listbox before the row referred to, I had to delete the rows in reverse order – from the end to the beginning.

I promise to myself that next time I install Linux from fresh, I’ll use Debian. Then I’ll be able to solve the problem by upgrading packages until I get PyGTK 2.4 and the appropriate versions of packages upon which it depends.

Another book on software development methodology

Joel on Software recommends Mike Gunderloy’s book Coder to Developer.
There are additional rave reviews.

I am still in middle of Richard Dawkins’ A Devil’s Chaplain (about evolution theory, religion, etc.).

How do other people cope with 20 excellent books waiting to be read, especially if they have family obligations?

Websites for lifetime students

If you have free time to learn something new for the sake of learning rather than for grades, diploma, degree or qualification:

Red Rock Eater News Service –
This is mostly about social and political aspects of computing and networking. –
If you, like everyone, need to troubleshoot something such as a malfunctioning car or a mysterious software bug, read what this Web site has to say about being more productive troubleshooter.

Perfecting the art of building embedded systems –
For those fortunate to have a career developing software for embedded systems.
Several articles have relevance also for people, who do not do embedded development.