File stability between versions

Now that V8 is getting close, it appears that there is yet again a format change in the files that stops backward compatibility. Yes I know that new functionality is requiring this,but man I would like to be able to investigate the new versions and new capabilities with actual real work product, but still be able to go back to a stable version if needed.

Anyone heard any information where things will stabilize enough that this will become a reality? I would even take an extra step of having to run a converter between versions.

The only real solution is to keep backups before you move to a major version that way you can revert if you run into issues.

I think there will always be format changes between major version.

[Feature Request] Save as an older (i.e. current release) version for nightly build (#16954) · Issues · KiCad / KiCad Source Code / kicad · GitLab is something we’ve talked about possibly doing.

1 Like

Yes a backup works unless you make major changes then what?

This has always bothered me as KiCAD seems to be the only software that I have used that is not backward compatible for at least a version or two.

I like the save as an older version idea. Not a software guy but this seems at possible as the code should be able to be reused from the older versions the do the save.

Not that simple. If the new format has new features then those can’t be saved. If those features cannot be removed without breaking the project then what?

In the software world if you write a program and expect the IDE to convert it to only use older language constructs you will be disappointed. Moving backwards is not easy.

That said, it’s possible that in future changes in the format will be in features that can be ignored by older software versions, such as inessential attributes. But for now the pace of development is rapid.

Then, please, vote for/thumbs up it with the link provided.

The real feature is not backward compatibility (KiCad already has backward compatibility. Files from old KiCad versions (at least as far back as V4) can be imported in KiCad, and problems with this are mostly inherited because of limitations in the old file formats, or user error).

What you mean is forward compatibility. The option to import files made with a newer KiCad version. There has been some discussion about this (on gitlab I think) a few years ago. Back then it was not really an option because of big file format changes, and the limited developer resources.

In the mean time, most of KiCad’s files have changed to an S-expression format, and this compartmentalizes additions of new features. It is quite simple during file reading, to just ignore (and dump) parts of S-expressions into a text window, and read the rest. With a bit of luck this can import everything, except unsupported (too new) features.

Now KiCad V8 has been released it may be time to make this an official feature request. If it gets implemented, it would mean it would get implemented in KiCad V8.99, and then would be able to import files from V10 or later.

In many cases, it will not be full forward compatibility (the ability to open arbirtrary new design with old kicad), but the scenario of progressive kicad upgrades. So one have a project base made in older, proven version and wants to jump onto the next one.
The fact that right now it’s an one way tickets, holds back many of us - probably. You have a proven, working environment and once you switch, there’s no way back (unless you have a backup of your project and the project was unchanged using the new version).
What could be possibly done, would be per-feature versioning. Each feature could have minversion assigned, and the resulting output file could be saved with minimum version needed to support all necessary features. Moreover, an attempt to use a certain design feature requiring newer file version could display proper message so the user could decide if one prefers more compatibility or more features but trading the compatibility.
Right now you can open a file in new version, save it without touching anything and you’re locked to the new version - this is simple to code, but not “friendly”. Many major software packages deal with file compatibility across wide spectrum of versions.
This is not only the design files, but also libraries. I cannot share my libraries between V7 (my workhorse today) and V8 (my plaground) as there’s a format change. And this means, twice the work (and need to rememeber) to keep both libraries in sync.
So the idea would be, to allow open and save old file with new KiCad version, in a format that allows to open it properly with previous (original for the file) version as long as no new features are used; and attempt to use these new features would warn the user that one enters a one-way path.

Incorrect. Tonnes of software has this

  1. Matlab Simulink - but there is a export to old BUT they refactor soo many things every 6months that this still involves knife and forking AND refactoring IF a downgrade is needed
  2. Mentor Xpedition… this is a one-way conversion of the design database with zero path back except backups.

This is just two that I use daily

1 Like

Except of KiCad I practically use only Borland C++ Builder (two versions, both old). I have never tried to open project from never version by the older one but don’t expect it is possible.

The problem you can be afraid is that you move to never version and then you find a bug that simply not allows you to finish your work. It can be a serious problem if you have to wait long time to bug be fixed.
But it is not the case in KiCad. Serious bugs are frequently fixed in one day time. It happened me to report (not serious) bugs and find them fixed in few hours.
If you consider limited manpower answer a question is it better when developers spend time on adding new features and fixing bugs or to spend their time on ensuring a way to move with your work to previous version.

1 Like