← Back to team overview

kicad-developers team mailing list archive

Re: my recent experiments with KiCad


On 3/14/2011 10:16 PM, Clive Nicolson wrote:
> A few months ago I had a need to reverse engineer a legacy pcb for which all I
> had was the pcb board.
> I looked around for a tool to help me with this and could only find Deltasoft's
> CBR 5.0, then I discovered kiCad ...
> I modified pcbnew (ver 2709) so that I could display an underlay image of my
> pcb above the background and behind any foot prints. I soon discovered that
> although I could place foot prints corresponding to those on the pcb I could
> not easily get back to a schematic in eeschema.
> I then added the following:
> 1) the image underlay code to eeschema, the component editor and the foot
>    print editor.
> 2) modified modedit.cpp so that I could create components from foot prints.
> 3) modified schframe.cpp and sch_component so that at the press of a button I
>    could flip between a schematic of components and a schematic of foot prints,
>    with the wire end points following the pins to which they are connected.
>    Newly placed foot prints are automatically given sensible positions.
> 4) created some components and corresponding foot prints for junctions and vias.
> 5) some other stuff!
> Some of this code is buggy, incomplete and a little hackish and without too
> many changes to the GUI (ie no dialog changes), but now I can edit both a
> schematic and it's pcb dual in eeschema.


This is a lot to absorb and I'm not sure I understand everything you have done
but I'll try to give you a reasonable response.  First I would like to thank
you for your interest in contributing to Kicad.  The Kicad developers are
always looking for new developers who are willing to contribute to the project.
 That being said, there is a preferred process to making contributions to
Kicad.  Generally, you start by making smaller fixes and improvements and
submitting them as patches to the mailing list.  If your patch is accepted, it
will be committed by one of the developers who has commit access.  You may be
asked to make some changes in order to get your patch accepted.  After you have
proven to be a capable coder who is willing to work within the development
process, you will be given commit access to the testing branch.  The length of
this process depends on the quality and frequency of your patches and your
willingness to work the rest of the development team.  There is a lot of good
information for developers on Kicad project page on launchpad at

> I would like to add the following to eeschema/KiCad (not nessecarily in this
> order):
> i) layers as in pcbnew.

I'm not sure this is necessary.  Layers in the schematic editor aren't as
useful as they are in the PCB editor.  You generally don't have a lot of
overlapping items that require turning layers on and off.  Architecturally
there are only two types of objects in the schematic editor, objects that have
connections and objects that do not have connections.  I'm not sure the added
complexity of layers buys the user anything useful.

> ii) auto routing of a schematic.

I'm assuming that you are talking about routing the schematic from the PCB lay
out.  This might be useful for folks who have to do what you did.  I'm not sure
most people would approach it this way.  I would think most people would
generate the schematic first and then duplicating the PCB layout.

> iii) component locking etc as in pcbnew.

This would certainly be useful.

> iv) some functionally from cvpcb to ease adding footprint names to components.

Also useful.

> v) make images drawable just like lines arcs etc.

If by images you mean bitmaps and vector graphics, I'm all for that.

> vi) copy foot print position and orientation info into the net list files.

Also useful.

> vii) make some newly added behaviour controlable via dialogs.
> iix) ...
> It is a pity that eeschema and pcbnew (and their corresponding component and
> foot print editors) do not share more code and file formats!

The file formats are being worked on.  The initial push is in the component
library file format and the schematic file format.  Once that is complete,
we'll shift our attention to the module library file and PCB file formats.

The shared code issue is something that I've been working on.  The PCBNew code
needs a lot of clean up before we can push the improvements I made to the
EESchema code down a layer where it can be shared with PCBNew without creating
a bunch of problems.  These changes will happen slowly over time.

> Any interest in this technology?

You have proposed some of useful changes to Kicad.  Getting these changes into
Kicad depends on your willingness to work within the development process to get
them committed.  I hope you have been keeping your branch up to date because
merging from r2709 is not likely to be very successful as the current testing
branch is at r2900.  If this is the case, don't feel bad.  I made this same
mistake when I first started working on Kicad.  I wrote a complete working
autotools build environment to replace the original hand made make files only
to find out that CMake was going to be the default build tool.  I learned a
valuable lesson.  Now whenever I plan on making any significant changes to
Kicad, I post them to the mailing list to make sure I'm not duplicating any
effort or heading in the wrong direction.  I find that small incremental
improvements are generally more successful than large change sets.  I hope you
consider contributing to Kicad.  We could always use more help.


> Clive
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp