grt-talk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [grt-talk] GRT in the year 2004 (space and beyond!)


From: Nikodemus Siivola
Subject: Re: [grt-talk] GRT in the year 2004 (space and beyond!)
Date: Tue, 25 May 2004 18:20:56 +0300 (EEST)

On Tue, 25 May 2004, Jason Dagit wrote:

> Hello?  Is this thing on?

Lound and clear. ;-)

> I'm unemployed at the moment so I'm going to have plenty of time to
> spend hacking away.  I thought I'd try to revive GRT.
>
> Nikodemus gave me a copy of his unfinished 'move to shaders' code.  I
> now have it compiling on sbcl, which is great news.  It's broken
> though, I'll have to write some examples, and finish learning about
> shaders.

I just realized, some of that stuff may already be on the savannah CVS on
some branch.

> I can check it into CVS as a different branch, but I wanted to make
> sure everyone is okay with that?  Maybe grt-shaders or something?
> Suggestions?

Branch is fine with me.

> Nikodemus w.r.t our conversation in #lisp the other day.  I know
> optimization is very important, but I'm going to put it on the back
> burner for a while and just get some working code out.  We can think
> about optimizations later.

Sure, though on my grt hacking todo-list they have moved waayys up in
priority since I realized how frustrated I was with wierd bottlenecks.

> Nikodemus, this might be a good time to mention license issues.

Indeed. As I've mentioned earlier I'm planning to relicense GRT under a
MIT-style license (more permissive then GPL). This is due to several
factors, none of them commercial, most of them personal, "feels right",
"better match for lisp" kind of things. For the MIT-license, see for
example:

 http://www.jclark.com/xml/copying.txt

How can this happen? Unless everyone who has contributed agrees it means
a rewrite, using only code whose copyright owners agree to the license
change. If everyone agrees it's trivial -- though I don't know what sort
of red tape savannah wants to put out for this sort of thing.

How will this actually happen?

 * I'm going to rewrite the low-level math routines (vectors & matrices),
   and jump on them till they're within an acceptable factor of equivalent
   C (say within 1.3?). This also means dipping into SBCL equivalent of
   inline assembly if necessary (though I plan to provide portable
   versions as well), and working on SBCL itself to improve the efficiency
   of some things (eg. MAKE-ARRAY with :INITIAL-CONTENTS).

 * These will then be bundled up as "GAL, Graphics Algebra for
   Lisp" (or some other name), and made a separate project, under a MIT
   style license. Licensewise this is clear and simple, since a) unless
   I'm horribly mistaken all the GRT math code is by my hand b) it'll be a
   rewrite anyways.

 * My tentative schedule for the above it "during the summer", but
   as I'm also working on some other projects it remains to be seen
   how this pans out.

One that is done I need to settle my thoughs about architecture, and
figure out how to rebuild GRT on top of this new substrate. I will also
agressively factor out any other separate components into individual
libraries, whenever it makes sense. The degree to which this stage can
reuse old GRT code depends on the getting permissions from copyright
holders (and of course the applicability of that code).

Some things that I want to take into account in the future architecture
are:

 * Supporting both wavelength and RGB models. I have no idea how to
   do this yet, or what it involves.

 * Better scene introspection thru layered scene component representation:
   scene objects will be CLOS objects, making it easy to poke around a
   scene. They will be compiled into an efficient representation
   (similar to what is used now) for actual rendering. The compiled
   representation may or may not have a back-pointer to the original --
   keeping it *might* make *some* fancy stuff easier, but is also less
   space-efficient.

I'll most likely get hosting for the separated components from
Common-lisp.net. (I'm not entirely impartial here, being a clnet
admin myself...). For the "main" body of future GRT I can easily imagine a
few options:

 0) Relicense under MIT and keep on savannah.

 1) Relicense under MIT and move to common-lisp.net.

 2) Fork. GPL body stays on savannah and MIT goes on common-lisp.net.
    (Note: I don't think this is necessarily a bad option *if* someone
    either wants to keep GRT under GPL, or is interested in a different
    development strategy then my current third-system syndrome. Witness
    CMUCL and SBCL cross-fertilization for example.)

 3) Same as above, but both under MIT.

The *vital*, most important thing is that I don't want to obstruct anyone
wanting to hack on GRT: don't feel oblidged to wait on me getting GAL
done, or waiting till license stuff is sorted out, or waiting till some
vapourware architecture of mine turns into real code. If you feel like
hacking on GRT, please do so.

Opinions, flames, thoughts, etc. welcome as always.

Hum. This turned out a tad longer then I planned...

Cheers,

 -- Nikodemus                   "Not as clumsy or random as a C++ or Java.
                             An elegant weapon for a more civilized time."




reply via email to

[Prev in Thread] Current Thread [Next in Thread]