← Back to team overview

kicad-developers team mailing list archive

Forward-compatibility in s-expression formats

 

I think it would be a good idea to allow unknown fields in the
s-expression formats so that an older KiCad doesn't choke on things it
doesn't understand, and doesn't need to.

For example, I was thinking that it might be helpful to add a field to
the footprint format: "part_reference", which would hold a list of
manufacturer and/or vendor IDs associated with this part. For example:

    (part_reference (fci 343233222) (farnell 1234567))

Leaving discussions on the actual usefulness of this field aside,
clearly, an older KiCad does not need this field, it can be ignored
harmlessly. However, when saving a footprint, an older KiCad should not
remove this field.

Ignoring *every* unknown field might also not be the best idea, in case
there is one day a field which an older KiCad can't understand, but
should realise "no, this means I can't use this footprint". So maybe
also a "fp_version" field, which, if missing, is assumed to be "1".
Then, if a future footprint declares "(version 2)", because it knows it
contains features a version-1 KiCad will misinterpret, that version-1
KiCad can say "sorry, I'm version 1, you need version 2 or higher". In
this case, it would be nicer to not set the version to 2 if you didn't
need to, so version-1 KiCads can use the footprint.

As it currently stands, *any* KiCad would refuse to load a footprint
with either of these fields, which is what I am proposing that we
change. The "part_reference" field is just an example, and needs more
thought. I was pointed to a discussion about a "device" concept, but
that is outside the scope of this.

Cheers,

John


Follow ups