Reflections on the fork, a week later

When I was thinking back on this I found myself wondering, why was I so angry, disappointed and sad  about this, after all forks come and go in the FLOSS world. Often they wither and die or are merged back into the main development line. Sometimes there is enough momentum behind them they continue on, like the BSDs have done.

Forks can happen for a philosophical reason, like Gnote and Tomboy. Forks can happen due to the main trunk stalling, or being unwilling to move development in a direction that people want. Forks can happen due purely to personality conflicts.

So why did the Liblime fork cause so much of a stir, and it is a fork there can be no argument about that, separate development line = fork .. the only argument is whether it will be a long lasting or short lasting fork. So no it wasn’t the fact it was a fork, I had been resigned to that for a while, ever since it became obvious months ago there was significant amounts of work not being committed upstream. No it was the ‘spin’ around the fork that was the most concerning.

All sorts of reasons have been given as to why Liblime ‘had’ to fork.

  • They don’t have the time or resources to send patches upstream. Or another version, recent resignations of staff have meant they don’t have the resources.
  • The community’s code is so bad they have to maintain their own version.
  • They aren’t withholding code, or even if they are its only for a month or 2 (which still makes it a fork for a month or 2)
  • And lately, there is customer data bound in with their code so they can’t make it publicly available.

I’m not going to rebut each of these excuses, people have already done so, and suffice to say reality doesn’t support these. But it is distressing that what appears to me to be the real reason for maintaining their own repository and version has not been said.
Given that the technical reasons for not releasing patches upstream are demonstrably false, the only reason left is to deprive other Koha users and developers of code, to gain some kind of competitive advantage in the market place. This is a valid business strategy, not one I would take, or that I think will succeed, but valid none the less. So I don’t really take huge issue over this. It is just the fact that you should not try to make excuses and in the process cast aspersions about a huge range of people so that you don’t have to admit the real reason you are doing something. It is the fact that in the attempt to justify the fork, Liblime and their supporters have maligned a huge group of people who do not deserve that.

The Koha community retains its Documentation Manager

It has been a week of big news in the koha world. Some bad, like Liblime’s fork of Koha finally becoming public knowledge and some good like Nicole staying on as Documentation Manager.

What makes this news even better, is the fact that two of the Koha support vendors teamed up to insure Nicole could stay in the community

In an environment when some people are actively trying to paint the community as a bad thing, it’s great to see that the people who understand Free Software are prepared to walk the walk, not just talk the talk

Koha unsung heroes – Part 15

The #koha irc channel

On irc.katipo.co.nz we have a #koha irc channel (have had since 2000). There have been literally thousands of times someone has been helped on there. Here are some of my favourites:

  • Thd helps audrey with understanding MARC21
  • si teaches kados about ssh-keychain
  • I help kados out with html::template
  • We help 2 people with Koha installs, and then discussion turns to cricket and rugby
  • Lots of talk about cricket
  • Even more talk about rugby

(I’ve only done the early years, and I leave it as an exercise for the reader to find other gems and link them in the comments)

DBIx::Class and Koha

I did some work today with DBIx::Class and Koha, and got opac-account.pl partially using it.

You can see the schema here and I had to make a few changes to C4::Context, and a few to opac-account.pl.

Here is what they were.

diff --cc C4/Context.pm
index 7ba57fb,4dab9a9..cafc0ca
--- a/C4/Context.pm
+++ b/C4/Context.pm
@@@ -18,6 -18,6 +18,8 @@@ package C4::Context
use strict;
use warnings;
++use Koha::Schema;
++
use vars qw($VERSION $AUTOLOAD $context @context_stack);
BEGIN {
@@@ -191,6 -191,6 +193,27 @@@ $context = undef;        # Initially, n
=cut
++sub schema {
++    my $self = shift;
++    my $db_driver;
++    if ($context->config("db_scheme")){
++        $db_driver=db_scheme2dbi($context->config("db_scheme"));
++    }
++    else {
++        $db_driver="mysql";
++    }
++
++    my $db_name   = $context->config("database");
++    my $db_host   = $context->config("hostname");
++    my $db_port   = $context->config("port") || '';
++    my $db_user   = $context->config("user");
++    my $db_passwd = $context->config("pass");
++    my $schema = Koha::Schema->connect( "DBI:$db_driver:dbname=$db_name;host=$db_host;port=$db_port",
++      $db_user, $db_passwd);
++    return $schema;
++}
++
++
sub KOHAVERSION {
my $cgidir = C4::Context->intranetdir;
diff --cc opac/opac-account.pl
index 43a1e0c,43a1e0c..376ae98
--- a/opac/opac-account.pl
+++ b/opac/opac-account.pl
@@@ -17,16 -17,16 +17,20 @@@
# wrriten 15/10/2002 by finlay@katipo.oc.nz
# script to display borrowers account details in the opac
++# Edited by chrisc@catalyst.net.nz
use strict;
use CGI;
use C4::Members;
++use C4::Context;
use C4::Circulation;
use C4::Auth;
use C4::Output;
use C4::Dates qw/format_date/;
++use DBIx::Class::ResultClass::HashRefInflator;
use warnings;
++
my $query = new CGI;
my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
{
@@@ -40,9 -40,9 +44,16 @@@
);
# get borrower information ....
--my $borr = GetMemberDetails( $borrowernumber );
++# my $borr = GetMemberDetails( $borrowernumber );
++my $context = C4::Context->new;
++my $schema = $context->schema;
++my $rs = $schema->resultset('Borrowers')->search({ borrowernumber => $borrowernumber });
++$rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
++my $borr = $rs->first;
++use Data::Dumper;
++warn Dumper $borr;
my @bordat;
--$bordat[0] = $borr;
++push @bordat,$borr;
$template->param( BORROWER_INFO => @bordat );

So not many changes at all, i’ll work on changing some more, but it looks like adding DBIx::Class can be done in a gradual way.

Unsung Koha Heroes – Part 14

Rob Weir

On the 13 of December 2002, Rob Weir posted the first link to his windows packages for Koha. This begun countless volunteer hours spent packaging and testing windows installs. Packages were created all the way up to version 2.2.9. There is a current perl module dependency that is uninstallable on windows, which is blocking the packages for 3.0.x. I’m sure as soon as that is fixed, Rob will be hard at work creating packages again.

Windows users around the world thank you Rob.