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
