Complete.Org: Mailing Lists: Archives: freeciv-dev: December 2003:
[Freeciv-Dev] Re: Python?
Home

[Freeciv-Dev] Re: Python?

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: "Freeciv-Dev" <freeciv-dev@xxxxxxxxxxx>
Subject: [Freeciv-Dev] Re: Python?
From: "Brandon J. Van Every" <vanevery@xxxxxxxxxxxxxxxxxxx>
Date: Sun, 21 Dec 2003 03:26:00 -0800

From: John Goerzen [mailto:jgoerzen@xxxxxxxxxxxx]
> On Fri, Dec 19, 2003 at 03:09:02PM -0800, Brandon J. Van Every wrote:
> >
> > In my own project vision (not necessarily yours), I'm not sure I see
> > why.  My assumptions:
> > - for the moment, I'm only talking about Python code submissions
> > - the submitter has to provide a few informational stubs in
> their code
> > - if they don't, their code simply isn't enableable
> > - sure it's fat in the distro, but that could be cleaned
> occasionally,
> > or even by an automated tool that validates enableability.
>
> What you have is a receipe for total disaster.  If you want
> to eliminate
> C as much as possible, and have Python code submitted in the above way
> only, then you have ceased to have any coherent idea of what
> FreeCiv is.

But my project isn't going to be Freeciv.  Freeciv is just starter code.
Hopefully good starter code, or this is a no go.

> Incompatible extensions will float about everywhere, none
> really working
> with each other, and effective development will grind to a halt.

That's not true.  It depends on project management, and I do have an
alpha / beta / release directory plan that I've posted about.  Briefly,
all distributions will always have alpha / beta / release directories,
and users will turn features on and off with checkboxes.  Only *alpha*
is going to be crazy.  Beta and release will be Gatekeepered.  For
purposes of code working together, not whether some game design idea is
deemed good or unbalancing.  Release will be the most stringently
Gatekeepered, everything must play well together.  The basic idea is,
there is no Gatekeeper for alpha, anyone may stick their foot in the
door and try to get things to work.

> I doubt FreeCiv has any performance components that would be
> unacceptably slow in Python.  I also doubt that rewriting huge volumes
> of code in Python would be worth the effort.

It's not an overnight goal.  It's an "as needed" migration plan.

> You can't just convert piecemael -- at least not with a good result.
> Say you implement whizbang feature X.  It touches 10 C functions and
> adds two new ones.  OK, no new C code, right?
>
> So you are forced to convert those 10 functions to Python right away

No you're not.  Don't implement whizbang feature X.

> (putting a high barrier to entry to anyone wanting to add a feature --
> they not only have to know both C and Python, but also how to link the
> two!).

If they can't get their code past Alpha that's their problem.  I'll
suggest they stick to Python only, and they can heed or ignore my
advice.  I'm not going to support anyone's bad C habit.  I think I will
put all of Freeciv into a directory called /legacy.  If you use anything
from /legacy, no support for your code.  Nothing goes from /beta to
/release unless it is cleaned of all /legacy code.  In the long run, all
C code is killed and these issues go away.  Migration complete!

> You'll still have a major
> rewrite on your hands to really derive any benefit from Python.

Yes, a lot of code will have to be rewritten.  My plan is to start from
client and server main() and see how fast and how far down I can dig
before hitting the "bad dirt."  A lot of the toplevel stuff looks like
"good dirt" and very easily rewritten in Python.  The barrier between
"good" and "bad" dirt is where the initial Python/C boundary will lie.
It will be dug deeper as the project requires it.

Are you feeling a little less sanctimonious yet about why I haven't
"done it already?"  I had a pretty clear idea from the get-go what
magnitude of project I was talking about.  Apparently you hadn't the
foggiest.  'Cuz you were worried about my level of open source hobbyist
respect, not the level of business risk.  I don't care about your
hobbyist respect.  I know how much work things are in the real world, I
measure them by my time and my money.  I'm paying for this, not you, and
I don't care what you think.

And I don't promise you this will make it to proof of concept, either.
Right now, all I know is the code is good enough that this isn't DOA.

> Have you ever actually glued C and Python together?  Please
> show us some code.

I have no interest in your source code fetish, John.  You're going to
have to find someone else to hand you those nice, neat, squeaky clean
chunks of code to give you all those warm fuzzies inside.


Cheers,                         www.indiegamedesign.com
Brandon Van Every               Seattle, WA

20% of the world is real.
80% is gobbledygook we make up inside our own heads.



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