# ToDo

These lists are meant to provide 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.

## Things to be done before the next release

- TBD

## 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
  - Merge per-page netlisting from gnetlist (or re-write if necessary).
  - Make postscript output more friendly to the LaTeX package “pstricks”.
    - Use the “show” command to display a whole string at once instead of rendering character by character.
    - Might not be possible / simple as the current approach is due to the overbar drawing postscript.
- Gschem:
  - Enable hierarchical bus support.
  - Make gschemrc variables settable from within gschem using a “settings” pull-down menu item (new).
  - 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.
  - 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?
- Gattrib:
  - Make it export CSV to support BOM generation.
  - Get printing working.
  - Enable attachment of attributes to nets.
  - Consider using GTK’s mechanism to display `-``-`help flag text.
- 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.
- 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.
  - Provide `-``-`gentle option, which doesn’t clobber (overwrite) any refdeses which are already assigned.

## 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).
- Create a Gerber → .pcb conversion tool. Result is metal layer or footprint editable by PCB. This might be a Perl script.
- Implement lockfiles between gattrib and gschem.

## 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.