[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: gEDA-user: Notes from this evening's Free Dog meeting



Hi --

> I've been giving a look to Kicad, and have a few things to say about the
> features that it has, and PCB/gaf does not.
> 
> - Kicad has the ability to calculate and clear dead polygons on the PCB
> layout. PCB does not.
> - Automatic refdes assignemnt. A few mounth ago I wrote some code to
> implement it, and I'm using it. Unfortunatelly it's like the refdes-renum
> script. It's an individual program, but using different renumber methode.
> 
> http://web.interware.hu/lekovacs/cuccok/grenum.tar.bz2

This is exactly my point about an integrated program (Kicad) vs. a
"suite" (gEDA/gaf/PCB).   In an integrated program, you never have to
leave the program to do what you want.  In a loosely coupled suite,
you use separate, individual programs to perform specific tasks.
Example:  In Kicad your parts are refdes'ed inside the program; in
gEDA/gaf you must leave gschem & run a separate utility to refdes your
parts.

The question is: which approach is better?  I think this is probably a
religious issue, but my observations (sure to touch off a flame war)
are these:

*   An integrated program is usually preferred by newbies since they
don't need to know anything more than just how to click on a button in
the program.  The suite approach requires you to learn several
different programs.

 *  The loosely-coupled suite approach is arguably better for
experienced users.  For one thing, it allows for multiple, competing
program to exist to acheive the same task.  For example, you didn't
like refdes_renum, so you wrote grenum.  You can't do that with
Kicad.  Therefore, the suite's components tend to improve over time
as each developer writes his own new, improved solution to a problem.

Another example is spice-sdb, which (I like to think) is an
improvement over the two SPICE netlister which already existed in
gEDA/gaf.  If gEDA/gaf was tightly integrated, I wouldn't have been
able to breadk into the netlisting chain and improve it with my own
program.  I'll note that Kicad's SPICE netlister is not nearly as
feature rich as spice-sdb.  Who will improve it?

Finally, one question we raised last night was: Can we write a
gnetlist netlister to Kicad's newpcb layout program?  The answer is:
Sure!  It would be a good idea and not too difficult!  The
loose-couple suite approach taken by gEDA/gaf means that we can mix
and match programs to achieve a "best of breed" workflow.  

*   The integrated program is often not architected to allow for
scripting, or extensibility.  A big issue with Kicad is that it only
exports a couple of netlist formats: SPICE and newpcb.  Unfortunately,
there are no hooks available (that we found) to allow users to write
other netlisters (unlike gnetlist).  Therefore, if you want to netlist
to, say, Protel with Kicad, you're out of luck.  (Unless you want to
pour through all the C++ used to write the program, and hope that your
patches are accepted once you are done.)

*   From a software ecology perspective, you could argue that a suite
is a better way to foster a living community.  That is, a monolithic,
integrated program (like Kicad) is usually the product of one guy (or
one company).  Will the writer accept patches or new features
implemented by others?  I don't know.  And what happens when Mr. Kicad
stops supporting his program?  Will anybody else be motivated to step
in and keep the project alive? 

OTOH, with a program suite, each developer
of components of the suite has made a small contribution to the whole
commensurate with his ability.  Therefore, *many* developers feel a
sense of ownership towards the entire suite.  Accordingly, if Ales
decides to quit software and become a buddhist monk in Nepal (just
kidding, Ales!) then others will probably step in and keep gEDA alive.   

This may seem like a strange point, but I can think of a couple of
open-source programs I use which have been abandoned by their sole
developer (e.g. XTrkCad, a model railroad planning program).  Once the
program is abandoned, nobody can make patches, nobody is on the
mailing list to answer newbie questions, and the program is
effectively frozen.  

> - It would be nice to have buttons, or menu item in gschem to start produci=
> ng
> pcb layout. (running gsch2pcb) This would help, and the user may feel
> him/herself in an integrated environment. And, the command line tools would
> remain the same; if someone wold like to do everything manualy, it could be
> still possible.

Yes, this is the integrated program vs. loosely-couple suite dichotomy
again.  Kicad has taken the integrated program path, and gEDA/gaf/PCB
has taken the loose-coupling path (albeit inadvertently).  Recall that
your specific example of gsch2pcb didn't exist until a year or two
ago; if gEDA/gaf was more tightly integrated, then Bill Wilson may
have never written gsch2pcb in the first place.  Either he wouldn't
have had to (best case), or he wouldn't have been able to (worst case).

> - Also in PCB, it would be nice have one thing (button, menuitem, etc...) to
> reload the whole layout, reload the netlist, put the xxxx.pcb.new into the
> buffer.

I agree that the menu layout and actions in PCB are a little ad hoc.
The program is 20 years old, after all.   This may change now that the
GTK version is available & people have better visibility into how the
code works. 

> Ignore it, if it's just
> rubbish.

No, your points are interesting & important, but the issue is probably
more of a religious argument than you think.  Not to boost gEDA/gaf or
put Kicad down.  They just belong to two different religions:  tightly
integrated program vs. loosely coupled suite.

Stuart