← Back to team overview

geda-developers team mailing list archive

Re: Future

 

> Various more random thoughts...
>
>
> Regarding file-formats, consider also:
>
> Database vs. file? (Would a database even require explicit saving?)
> ZIP container vs. separate files

As this is a clean sheet of paper, start with *everything* being a plugin.
There is no base/core beyond the plugin manager, command line parser (
http://www.boost.org/doc/libs/1_52_0/doc/html/program_options.html )
and a message passing system (DBus won't run on Windows, please don't use it).

http://blog.nuclex-games.com/tutorials/cxx/plugin-architecture/
Explains the correct way and the wrong ways to do plugins.

Plugins have the advantage of enforcing Separations of Concerns,
so it is not possible for things to slowly evolve into a tangled mess
over the years.

Taking your database vs file.  Start with a simple file plugin, then a
SQLite plugin, then a full up database (FireBird is easier to embedded
than the rest) plugin.
They can all exist at once as well.

An other plugin example would allow for different renderers for
example.  Maybe we need a renderer for some technology that has not
even been conceived of yet.

Also if the hairy math parts are plugins they are easier to evolve as
they are learned and easier to add new ones.

> What about copy-on-write like various modern file-systems?

COW is not always a win performance wise, however I'd still probably use it.

> Do we _want_ undo data to persist on disk somewhere? (We could have a manual
> operation to throw it away and condense the design history).

Is there really an advantage to a undo history that goes back days/weeks/years?
I'm not seeing it.  Autosave snap shots seem like a better option.

A couple of other items.  YAML has an self-referral system that XML
and JASON lack.
For example a resistor is an anchored base, with R1 being a reference
back to the single base resistor.

Something else to throw out as an example, look at
http://www.digikey.com/us/en/mkt/scheme-it.html that runs in the
browser.
Big downside to it is there is no concept of a netlist.

"Scheme-it is an online schematic and diagramming tool that allows
anyone to design and share electronic circuit diagrams. The tool
includes a comprehensive electronic symbol library and an integrated
Digi-Key component catalog that allows for a wide range of circuit
designs. Additionally, a built-in bill of materials manager is
provided to keep track of parts used in a design. Once a schematic
drawing is complete, users can export it to an image file or share it
via email with others. Scheme-it works natively in all major web
browsers without requiring the use of any plugins. Only users
registered at www.digikey.com are able to share and save designs."


References