# PCB Roadmap

This is a guide to the future direction of the PCB layout editor.

- gEDA roadmap has some PCB items.
- gEDA To-Dos also has some PCB items.
- PCB Projects lists some wish-list items.

## General Guidelines for Releases

In general, there are three types of changes that go into PCB - bug fixes, new features, and incompatible changes. A bug fix is when PCB doesn't do what it's supposed to do - this includes documentation bugs as well as code problems. A new feature is something that adds functionality to PCB but doesn't change any existing functionality. An incompatible change is anything that causes (intentional) compatibility issues with older versions of PCB, and usually means a large design change. Note that a new feature that adds a backwards-incompatible change to the file format when it's used is not in this category.

The current plans are as follows:

- Bug fix releases every two months or so until we clear the backlog.

- Start on a PCB 4.0 release that folds in some large design changes we've been talking about for years.

At the moment, bugfix releases will be of the form `pcb-YYYYMMDD`. Once 4.0 is released, the major.minor.bugfix numbers will correspond to the three categories listed above: bugfixes cause a *.*.N release, new features cause a *.N release, major changes cause a N.0 release. The `YYYYMMDD` release numbers will then be used for regular non-release snapshots.

The remainder of this page will list the various changes that are planned (or at least hoped for) for upcoming and future releases.

Bugs, patches, and feature requests should be added to the Launchpad trackers. The default status undecided. Requests with that priority will be considered “unreviewed”.

## Next Bug Release

This is a list of fixes that must be fixed before the next bug release, in addition to any “next bug release” artifacts in the bug tracker.

## Future Bug Releases

This is a list of fixes that should be fixed eventually.

## Next Feature Release

This is a list of new features that will be added before the next feature release (or, perhaps the next bug release, if time permits).

Make the code C++ compatible.

Allow via annulii to overlap each other.

More route styles.

Nanometer resolution - this is the “metric units” change we've talked about many times.

Real layer types. Silks, keepouts, mask docs at least. Maybe anti-draw or paste.

## Future Feature Releases

Other features that should be added eventually.

## Next Incompatible Release

This is a list of major changes that we think are desirable to include in PCB, and wish to put effort into.

## Future Incompatible Releases

This is a list of other major changes that we think are desirable to include in PCB, but so far have not committed any effort to.

## Wish List

This section lists possible projects for future releases, which either haven't been agreed on, or haven't been scheduled. If you'd like to work on one of these, go ahead

New Layers proposal is here.

Other GUI cleanups. Gtk upgraded to “best practices”. Importer config.

import/wizard plugins (as well as exports)

DRC cleanups/rewrite

CAM engine? (i.e. ability to say “draw outline on top soldermask” via script/config)

New file format we've been discussing.

Variable-angle arcs. 90 degrees is extremely limiting.

Filled circles, sans kludge. Currently, to get a filled circle you create a zero-length trace of the right width.

Unification of shortcuts in gschem and PCB, or at least an easy option for PCB to mimic gschem's shortcuts.

Better support for free-rotated components: assert that pads at funky angles are rendered correctly, fix autorouter for components at weird angles (the latest git version has a tendency to either ignore the route command or to segfault, depending on the specifics), add rotation to the ctrl-R report, etcetera.

Ability to copy a footprint's name from the library dialogue (so it can be pasted into gschem's attribute list).

Ability to edit netlist in-situ (possibly by drawing on the rat lines layer) - e.g, when you want to add a heatsink soldered to ground, it will always show up as shorted until the netlist is edited to incorporate it.

Trace impedance calculator, with automatic adjustment capability (fill in thickness, stray capacitance and desired impedance, and the width is adjusted to satisfy the conditions).

Integrated footprint lookup and fetch from gedasymbols.org.

Heirarchical pcb model - subcells, footprints-as-pcb, etc.

A shape I've often wanted on a pad is circle with the sides cut off. This is slightly different than an oval. Something like Inkscape's boolean operations would be excellent.

How about text at not-90 degree angles? Or support for rotated square pads (I know, the file format doesn't support those two.)

Editing on the grid has got to go! Counting grid points is the worst possible way to enter positional information into a computer.

Make every field in object reports editable.

Allow direct entry of offsets and absolute positions when editing.

Add “offset” and “trim” feature à la 2D CAD programs.

Add “point to tangent” and “tangent to tangent” line drawing feature à la 2D CAD programs.

Automatic least version required file saving. Set the file format version based on features used, not the version of PCB This will become valuable as we add features like blind vias, custom pad stacks etc….