Can a project edited with newer version of KiCad be opened with older version?

KiCad’s software versioning scheme x.y.z is defined so that all released versions with the same x are project (file format) compatible with each other. The development versions x.99 are not compatible: for example projects edited with 6.99 can’t necessarily be opened with 6.0.

When the first number x changes, by definition there have been changes to the file format so that the projects edited with a later version can’t be anymore opened with an earlier version. For example 6.0 can’t open projects edited with 7.0.

There’s no reliable way to convert the project back.

The KiCad developers have decided to not support back conversion officially because it would require way too much work for little benefit for the project. The possible conversion process from v6 to v5 or in the future v7 to v6 is yet uncharted territory. Details will be added if the situation changes.

Remember that KiCad is Open Source, so older versions will always be available, if not in binary format, at least as source code to be compiled. Also the latest version is always freely available and – sans possible bugs – can import older projects, so KiCad doesn’t lock you into any vendor or version. You have to make the decision between having several KiCad versions for different projects and porting old projects to the newest version.

Compatibility between versions 5 and 6

There are some major file format changes between versions 5 and 6.

  • The schematic file format has been changed completely from one “language” to another.
  • The symbol file format has been changed completely from one “language” to another.
  • The symbols used in a schematic are saved into that schematic file in v6, so there’s no need for a symbol library cache file in the project.
  • A schematic file is standalone, it should be possible to share it for viewing, unlike in v5.

The layout and footprint file formats haven’t changed so radically. There are new features, though.

When a project made with v5 is opened with v6 and the schematic is opened, KiCad converts the schematic to the new format. The old schematic and symbol files will be kept. Saving saves the new files only. All further changes go to the new files.

The new files (schematic and symbols) can’t be converted back to the old formats. It may be theoretically possible to write a converter script or program, but at least at the moment there isn’t any. In any case, if the files were edited with v6, many things would be lost in the conversion process, depending on the new features used in the symbols/schematic. A converter would require considerable efforts to make, it’s yet to be seen if anyone will do it.

When the old layout file is opened with v6 it will be converted to the new format and the old file is overwritten on save. That shouldn’t be done without having a backup. Make a backup first if you open a v5 project with v6!

Some changes in file format will be realized only if you use the new features. However, certain things are changed immediately when opening the old file. Therefore you can’t open it anymore with v5 even when you don’t edit the layout at all before saving.

Because there are only additions in the layout and footprint formats (and some things are moved from the layout file to other project files) it’s easier to go back to the old format. If the layout hasn’t been edited by the user it should be possible to do some automatic edits, removing some new data, and recover the old file format. It may be as simple as removing some sections and using a simple script, like

cat nightly.kicad_pcb | sed -r "s/\(tstamp [^\)]*\)//" | sed -r "s/\(pinfunction [^\)]*\)//" > stable.kicad_pcb

(see the post Downgrade kicad_pcb to stable from nightly? - #5 by halachal by halachal.)

Design rules and netclass information is project-wide files in v6, so they also should be moved back to the v5 layout file if there’s need to continue editing the project with v5, but unfortunately they are in different format than they were in v5.

If the layout has been edited and new features have been used there will necessarily be some data loss. It’s not known yet how easy such conversion would be.

Other project files have been changed, too. Project wide configuration was in .pro file in v5. Now there are .kicad_pro – where design rules and netclasses are moved to – and .kicad_prl with certain configuration data which may differ between users but belong to the project. Version 5 can’t open a project created with v6 at all, but the old .pro file is kept if an old project is opened with v6.

As a conclusion we can say that at the moment people haven’t tried to backport whole projects from v6 to v5 and we don’t know yet how that could be done and how good the result would be. Backporting the layout may be relatively easy if it hasn’t been edited with new features. Backporting the schematic is much more difficult and hasn’t been attempted yet.