[squeak-dev] Brave New World

keith keith_hodges at yahoo.co.uk
Sat Jan 23 21:48:33 UTC 2010


> No.  Trunk is an enabler, not an institution.

Trunk is a fork. It is one product serving one agenda.

We had already moved beyond this in detailed discussions with the  
board, recognising that squeak is no longer one product, we wanted a  
process that supports multiple products, and multiple forks, because  
that is the reality we are in, and so we specified the components to  
develop and the approach that would be required as a basis to enable  
this to happen.

Cross fertilisation cannot happen effectively if everyone is working  
to a moving target all of the time, and fixed points only occur once  
every 1-2 years.

What is needed conceptually is the following, fixed points every 2  
months at the minimum, and each innovation packaged for that fixed  
point, or provided as a delta, relative to those fixed points. The  
number of big compatibility breaking innovations published per fixed  
point should be limited to 1 or two per month, in order not to  
overwhelm people with too much.

Then if you are a non-mainsteam fork (like cobalt) you can look at the  
innovation and work out how to port it to your local fork, because you  
can see the stable state of the other dependencies in the fixed point.

Please think about this. Then you will understand why trunk is a bad  
thing, it is the antithesis of what we actually decided we needed.

>  The squeak board doesn't count as much of an institution because it  
> lacks funds.  Trunk excludes no one, everyone has read rights.

The board is an institution if it acts like one. It is a dictatorship  
if it acts like one.

Trunk excludes me, I have made this clear several times.

Trunk only has one head, so it excludes anyone who wants to go in a  
different direction, or those who are already supporting images that  
are not trunk compatible, like me.

> t is clearly not an obstacle to progress;

Trunk is an obstacle to progress, because I cant make my contributions  
to it.

Trunk is an obstacle to progress because we have to wait a year for a  
release, again!

Trunk is an obstacle to cross fertilisation of patches or innovations  
because it is a moving target.

> Once we have smaller kernels

Trunk is not a fast route to smaller kernels, since no actual thought  
was put in to how you would get from A to B. Getting from A-B and back  
again if you want to, requires thought and tools to do so. This is why  
we developed the tools first, rather than throw a new image at the  
community with no tools.

> we will be able to evolve the underlying execution machinery more  
> easily and implement different object representations and more  
> efficient garbage collectors, but the broader community won't be  
> inconvenienced because their packages will still load.  Assuredly  
> however old images will be left behind, and the best way of bringing  
> old code forward will be to publish it as a package and load it into  
> a new image.

The best way of bringing old code forward, is to back-port the new api  
into the old image, so that you only need to maintain one codebase for  
both. When all of your packages are individually working in both the  
old image and the new, then you can migrate to the new image, and  
there is never a point at which anything stopped working.

For example, the change which merged ifNotNil: and ifNotNilDo: [:n | ]

If you do it your way, and have to port 60 packages, even ones you  
don't own, then you end up with months of what is effectively  
downtime, or months where you have to maintain two codebases.

> What we really need as an essential starting point is actually the  
> kernel image that we have talked about for so long. So thank you  
> Juan Vuletich, thank you for your kernel image, I am sure it will go  
> far.
>
> And who is making the fastest progress towards that goal right now?   
> You or Andreas and Juan?

Looks like it is Juan.

>  Are you helping them or hindering them?

Why cant it be, are they helping me or hindering me? Andreas is the  
new kid on the block when it comes to working towards a smaller image  
and multiple forks. I have been working on it for 3 years, tools first.

The board should not play favourites. I put 4 years of effort into  
squeak too you know. However I had to write a proposal, and get it  
voted upon. Andreas didn't because he used his position on the board  
to impose his non-plan. We already had a shared repository, it was  
called somewhat logically squeaksource.com/311

Andreas started by going backwards, he started with not understanding  
(which he later admitted), then not-communicating, he started by using  
squeak-dev when I specifically asked him not to. He started by  
instituting a process I could not contribute to, and he started by not  
building upon anything that we had worked on already.

This is just as rude as the pharo guys starting on 3.9 and insulting  
Edgar's long-suffering efforts.

> We're free to make that choice.  But even better were free to not  
> make a false or forced choice.  In the package world there is no  
> insurmountable separation between Cuis and Trunk or Pharo or Etoys.

Yes there is if the packages are all being developed relative to a  
moving target.

Your rose-tinted view is to be expected as a low level guy. Those who  
simply write packages on top of their one chosen image, dont really  
get effected by this very much. This is why the pharo guys who are  
academics producing a package for the purpose of writing a paper or  
two dint understand this either and those who write all their code  
themselves dont understand what I am going on about.

However if you are building large systems which integrate on top of  
packages on top of packages, and between packages, then the number of  
moving targets ups the variables considerably, and at some point  
progress becomes impossible. Think fragile base class problem x 100.

>  Code is moving in packages between all of them (and in changesets  
> when it can't be accomplished easily with packages).  Open your eyes  
> and ears man, and stop shouting at deaf ears.

Yep shouting at deaf ears is about right, you aint listening, and you  
aint understanding.
>
> P.S.  In offence of Godwin's law I can't help but see the metaphor  
> between Keith's model of continuous integration of everything into  
> everything else and of Clay Shirkey's institutions vs communities  
> and of Stalinism and the fall of Communism.  There are great virtues  
> in socialism (change sets) but when institutionalised (bob) it  
> becomes monstrous (inefficiency of maintaining pointless backwards  
> compatibility).  ;) ;) ;)

You got this a bit wrong, again you lot didnt bother understanding  
before pronouncing. Bob is the non-institutional tool, because it is a  
standalone service, that can get an image from anywhere, perform a  
task on that image and test it, without requiring the image to have  
any dependencies.

Trunk, requires you to have an image with a specific version of  
Monticello, and PackageInfo, MonticelloConfigurations, HTTPSocket,  
HTTPClient, Network, Compession etc etc etc.

My reference to facism, is primarily based upon the boards lack of  
willingness to define a constitution or boundaries for itself. This  
approach has been seen before. Secondly it appears that many members  
of the community here present do not have the moral fibre to see that  
if someone is mistreated, actual steps need to be taken to make sure  
it doesnt happen again. It is not ok. You are 51 years old, you have  
kids, you know this really.

cheers

Keith




-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20100123/5f1021f1/attachment.htm


More information about the Squeak-dev mailing list