# Todos

These lists are meant to provide the developers a reminder of undone projects. It is also a wish list capturing user’s desires for new features. New developers can also look here for projects which they might be interested in working on.

See tasks for non-programmer tasks.

## Release roadmap

This section should contain a list of only those issues that are considered as being important enough to block release until they are resolved. If a feature or bug gets bumped or has its importance reduced, please remove it from the list or move it to the appropriate later release.

Todos for past releases can be seen on the historical page.

### 1.6.1 (stable)

Target release date: February 2010
Actual release date: TBD

Description | SF bug | Developer(s) | Status
--- | --- | --- | ---
Screenshots of release version for a publicity revamp of gEDA website. | n/a | Peter C |
Merge translations from Launchpad upstream. | n/a | Peter C | Ongoing sync
Check copyright headers are up-to-date | n/a | Ales H | Done

### 1.6.2 (stable)

Target release date: Unknown
Actual release date: TBD

Description | SF bug | Developer(s) | Status
--- | --- | --- | ---
Screenshots of release version for a publicity revamp of gEDA website. | n/a | Peter C |
Merge translations from Launchpad upstream. | n/a | Peter C |
Check copyright headers are up-to-date | n/a |  |
UTF-8 / system / filesystem encoding bugs | 1868072 |  |
Prettify symbols (e.g. gates) using paths | n/a |  |
Cure all: “warning : ignoring return value of ‘…’, declared with attribute warn_unused_result” compiling with recent GCC versions |  |  |

### 1.8 (stable)

Target release date: Unknown
Actual release date: TBD

Description | SF bug | Developer(s) | Status
--- | --- | --- | ---
TinyScheme instead of Guile |  | Peter B |
Per-page netlisting in libgeda |  | Peter C |
Refactor / improve gnetlist |  | Peter C |
gnetlist support for buses |  | Peter C | Started!
Avoid direct use of /tmp/ for undo schemaics |  |  |
New config mechanism to support non-turing complete config |  | Peter B | Started!
Config GUI for gschem (and gattrib?) |  | Peter B |
More non-modal dialog boxes in gschem |  | Ed (?) |
Refactor gschem’s action state machine and event dispatching code |  | Ed |
Where possible, ensure gEDA compiles with deprecated GTK / GLib APIs disabled |  |  |
Edit embedded symbols |  | Werner (?) |
Per project symbol storage to make the schematics independant from the symbol library |  | Werner (?) |
Clipboard support for copy / paste with text representations of gEDA schematic data |  | Peter C (?) |
Clipboard support for copy / paste with graphic representation of gEDA schematic data |  | Peter C (?) |
Refactor rendering code to allow its use outside of gschem |  | Peter C |
Refactor preview widget to make it available outside gschem |  | Peter C |

Wishlist

Description | SF bug | Developer(s) | Status
--- | --- | --- | ---
Printing improvements (Arbitrary UTF8 postscript) - print with cairo | n/a | Peter B, Peter C | 50%
gschem: interface for creating paths and inserting / deleting nodes | n/a |  |
Bitmap export options: allow specifying DPI rather than / as well as absolute page size | 2226522 |  |
Set print border size | 2243238 | Werner |
Allow setting gschem on-screen border | 2243238 |  |

## Longer term upgrades desired for specific tools

- Libgeda:
  - Enable handling of .sch files with symbols having some (but not all) pins promoted onto the .sch file. This will enable pin-swapping via backannotation from PCB. (Architectural change)
  - Merge per-page netlisting from gnetlist (or re-write if necessary). (Bounty)
- Gschem:
  - Create a button in gschem which will invoke gsch2pcb to create a netlist file ready for PCB to read in. (Bounty, once PCB is modified to support an action file.)
  - Enable hierarchical bus support. (Architectural change)
  - Make gschemrc variables settable from within gschem using a “settings” pull-down menu item (new). The idea is to update the contents of the gschemrc or gafrc files using pull-down menus, and write the changes out to the correct RC files. (Bounty)
  - Improve symbol library to handle very large symbol collections better.
  - Now the SELECTION is a GedaList and we can get “changed” signals, make more dialogs non-modal:
    - Single attribute editor
    - Text properties
    - Line width and type
    - Fill type
    - Edit slot
    - Edit color
    - Text size (Sets size for new text, so doesn’t rely on the selection anyway)
  - Enable `-``-`help flag. (Currently supports -h only). Consider using GTK’s mechanism for this. (Bounty)
  - Support for embedding LaTeX maths to be rendered in text.
    - This could be output only, or preview bitmaps could be generated and cached by calling LaTeX, dvips and ps2epsi.
    - Would we add a new type of object for this, or allow attaching a “latex=1” attribute to the text object its self?
- Gnetlist:
  - Enable `-``-`help flag. Do other gEDA/gaf programs recognize this flag? (Bounty)
- Gattrib:
  - Get printing working. (Bounty)
  - Enable attachment of attributes to nets. (Architectural)
  - Consider using GTK’s mechanism to display `-``-`help flag text. (Bounty)
- Garchive:
  - Incorporate guile so that it reads RC files using the same mechanism as the rest of gEDA/gaf.
- CD Installer:
  - Change it so that the user is presented a pick-list at the beginning of the install, instead of blindly installing everything. (Architectural)
  - Make the new CD Installer install Ales’s binary distribution. (Bounty)
- Refdes_renum:
  - Doesn’t currently work properly with slotted parts (it gives new refdes numbers to slotted parts). Fix it so it recognizes slotted parts and assigns refdes appropriately. (Bounty)
- PCB
  - Put various commands which are only accessible via a :command(foo) into the top menu. Newbies want to see what actions are in the menus since that way they know what PCB can do. (Bounty on a per-action basis)
  - Provide a toolbar of buttons for common actions. (Bounty)
  - Make the difference between editing footprints and PCBs much more obvious. If you’re in footprint editing mode, then perhaps make the background color change. (Architectural)
  - Create a “file → save” dialog window. In the dialog window, provide a pull-down giving the option to save as a PCB (default) or as a footprint. (Bounty)
  - Modify to PCB read an “actions” file, which tells PCB what actions to take when importing a new layout. This actions file will be created by gsch2pcb and other forward annotation programs used to take a gschem design to layout. This will also harmonize the paths which *gsch2pcb use to find footprints. (Architectural)
- gsch2pcb
  - Modify gsch2pcb to emit an “action” file, which can be fed to PCB when forward annotating a new or updated PCB layout. (Bounty, once PCB is modified)

## Ideas for new tools or gEDA Suite-wide enhancements

- Develop scheme for backward annotation of changes from PCB to gschem. Requires modifications to libgeda to support, e.g. pin promotion from .sym file to .sch file (enabling pin swapping). (Architectural)
- Create a Gerber → .pcb conversion tool. Result is metal layer or footprint editable by PCB. This might be a Perl script. (Bounty)
- Implement lockfiles between gattrib and gschem. (Bounty)
- Upgrade PCB to use action files in forward annotation as described above. (Architectural)

## Code cleanup and refactoring

- Remove use of non GList linked lists. This is very invasive work, but allows much code cleanup where mixtures of the old and GList methods were available.
- Remove unused variables and functions from various structures. Unused may also include “used”, but ineffective.

- Remove back-exports to libgeda of global function pointers from gschem and other libgeda “clients”. These aren’t portable.
- Clean up / produce generic API interfaces to act on an object of any type, or lists of objects.
- Convert functions used within one ".c” file, and not useful for public API into static functions, removing from prototype.h.