gEDA

Note

If you need help with using gEDA, or you think you've found a bug, please visit the gEDA page on Launchpad.

gEDA is the GNU Electronic Design Automation suite. For a while in Summer 2006 I was employed to work on it by Cambridge University Engineering Department as part of an undergraduate research opportunity. Since then I have continued to work on it.

Things in gEDA I have worked on extensively include:

I tend to focus my attention on the low-level infrastructure of gEDA, such as the libgeda library.

If you wish to find out what I've been working on recently, you can read my blog posts about gEDA. I also have a personal git repository where many of my changes get put to mature; it can be obtained using:

git clone git://repo.or.cz/geda-gaf/peter-b.git

You are likely to be more interested in branches other than master, which tends to track the main gEDA unstable branch.

At the moment I have two development branches on the go:

libgedacairo

This branch factors out gschem's schematic rendering code into a separate GObject- and Cairo-based shared library. This is designed with several aims in mind:

  • We should only have to maintain one rendering codebase (rather than the current two).
  • It would be nice to have a nice, easy-to-use command-line program for batch conversion of schematics to e.g. PDF, rather than the gschem + print.scm mess we currently have.
  • Other applications might want to render or display gEDA schematics/symbols.
  • Support via GTK for using a standard print dialog in gschem to print directly to a printer, get access to printer options via CUPS, etc.

Currently, the state of the branch is that the library is more-or-less complete. Most gschem rendering occurs via libgedacairo, with the exception of "rubber" drawing operations. It's 90% done, just the last fiddly 90% to go. ;-)

config-sys
gEDA has a fairly serious security vulnerability in the fact that it executes rc files from project directories. A better solution would be not to execute configuration files at all, and this branch contains a specification for a possible configuration system (but no implementation yet). This branch isn't very interesting yet -- it contains a full specification for what I want to do, but no code.

Page Menu