[software] Rapport2

Bob F citibob at comcast.net
Mon Oct 27 19:47:02 UTC 2008


>

We all have our preferences in languages, but I think this should  
play a minor role in our thinking.  The maintainability of code  
depends not just on the language but also on the various frameworks  
and libraries employed, and of course the design of the software  
itself.  I would guess that language is the least of those issues,  
unless the language being used is completely inappropriate for the  
task at hand.  Moreover, the ability of a particular programmer to be  
productive in a particular language or framework depends so much on  
that programmer's experience with said system.

> (The other is that the
> licensing is completely unclear, because patchers must send changes
> under an AGPLv3-incompatible license, yet the project is AGPLv3'd.  It
> makes no sense, and would make it impossible for me and many others to
> contribute.)

This, I believe, is a more serious issue.  I noticed that problem  
too.  Actually, I can't figure out what they're doing:
	http://civicrm.org/licensing
Their lack of explanation doesn't help either.  It's just "here's  
licensing terms to apply to your code when you give it to us."  I  
don't trust this, and I would not want to donate code under these  
terms. My guess is that when you license to them under the Artistic  
License, that allows them to build proprietary forks with your code,  
if they wish.

Maybe we should rule out CiviCRM for this reason alone, unless we're  
prepared to make an all-free fork (as with Joomla).

I believe in free software that remains free for all, without the  
possibility of proprietary forks.  I am prepared to sign over the  
codebase of OA to an appropriate non-profit organization that is  
committed to keeping it free forever.  And I would expect  
contributors to do the same.  I believe this is how core FSF software  
is licensed?

> Java is not a language that I am opposed to, but I am not likely to  
> look
> at OA until we have a tutorial that shows exactly how to run it with a
> Free Java system.

I will put this together.  I think it's going to be just about:
  1. Install the system.
  2. Install the appropriate Java packages.
  3. Run OA like you would on a non-free system.
But we will see when we see.

> I am ready to use all the political capital (not
> lots, but I do have some) I can burn to get the Free Java folks I know
> involved to help try to get it running, once we're at a point where  
> they
> can be helpful.

What I really need is just to know which IcedTea builds out there  
today are actually 100% free; that's what's stalling me now.  I can  
take it from there.

> I understand Dave's point about not wanting to sacrifice nice system
> design for a plugin architecture, but I think it's worth keeping it in
> mind.

As I mentioned before, a system that allows subclassing and  
overriding can help with this.  I don't know Perl very well, but I do  
know that OO features have become quite widespread these days.  So a  
system of extensions based on subclassing and overriding should be  
possible (I imagine) in many languages.  It's worked surprisingly  
well so far for me.

> Also, Dave, Josh Berkus has argued frequently for trying to push  
> some of
> the unchangeable workflow logic (i.e., database integrity certainty)
> down into database stored procedures.  One reason this is helpful is
> that it can often mean someone can write applications directly to the
> database itself, since they are unlikely to "break" anything by not
> using the standard APIs, since the stored procedures will stop them  
> from
> doing something stupid.


I've built a DB this way in the past.  OA does not use stored  
procedures (except for a few), but rather uses a kind of equivalent  
client-side "stored procedure."  As always, pros and cons of both.   
And I'm not against moving this logic into stored procs either; one  
big advantage of stored procedures is they can reduce round trips  
between server and client, as well as bandwidth.

PostgreSQL now offers stored procedure engines in Java, Perl, etc.   
So it should be relatively easy to just move existing client-side  
code directly into the database.  MySQL seems to take the more  
traditional (and easier for them to support) route of offering just  
one stored procedure language, which is not Java or Perl.  Both these  
choices seem to be in keeping with cultures of these two similar-but- 
different database systems.

-- Bob



More information about the Foundations-software mailing list