Project/Files backward compatibility

Out of curiosity I just tested to edit the first row in the pcb and the sch files in a text editor:

PCB file:
“(kicad_pcb (version 20220131) (generator pcbnew)” (=a KiCad Nightly build version)
To: “(kicad_pcb (version 20211014) (generator pcbnew)” ()KiCad 6.04)

SCH file:
“(kicad_sch (version 20220126) (generator eeschema)” (=a KiCad Nightly build version)
To: “(kicad_pcb (version 20211014) (generator pcbnew)” (=KiCad 6.04)

This way the schematics can be opened in the current “stable” version of KiCad (6.04) but not the PCB file. Does this mean it’s a simple task for a a programmer/developer who want to fix this to do it?

Which is why V6 can open V5 and even V4 versions.
V6 adds new features, expanding capabilities. Old features are not discarded

That was a funny reply :slight_smile:

In general, there is backward compatibility for file formats and stable APIs (newer software can deal with older files), and forward compatibility with unstable APIs if the vendor cares (e.g. the latest release of the previous major version will provide a compatibility layer so that there is always a “stable” API between two major releases to allow customers and third parties to migrate at their own pace, and to less pollute the next API).

“In general, there is backward compatibility for file formats and stable APIs (newer software can deal with older files)”

Ah sorry, then this topic should be named “Project/Files forward compatibility”…

In short, what I mean here is it’s wanted to be able to open newer made projects/files in older versions of the software.

Officially, it has been mention a couple of times that “fordward” compatibility is not going to be supported, your best bet would be to support a user effort in this regard, e.g.

Another route if you absolutely need that kind of feature is to get in contact with KiPro

However, any effort in this regard will be inherently lossy, as the new file format contains more information than the old file format.

People keep saying this without explaining why. Could you explain why?

The conversion does not need to be 1:1 most of the time. The converter has to generate a circuit that matches, other parts are not that important.

Works very well in Eagle so why not try it also here. This to be able to run a project also in a case of emergency, that might be the main point here…

There have been applications in the past that supported this (FrameMaker's MIF comes to mind). But it’s not compatible with a business approach like Microsoft’s (vendor and version lock-in, etc.)… So maybe you can achieve this by exporting and importing to different formats (and maybe even use that destination app to do this as well)…

Why not just include it in KiCad, make it simple? Like Apple would have made it. What’s the problem?

One example that comes to mind, which would be an issue when “back-porting” 6.0 to 5.1 is that 6.0 can have curved traces based on arcs, whereas this is not supported in 5.1, where curves are made/approximated with many short straight segments.
The conversion can of course be done, but is non-trivial.

Or was it 6.99 to 6.0? I am not sure at this late hour…

Ah you are talking about the layout. The layout accepts any shape since long time ago. Kicad 6 improved in a way that it is possible to draw these round tracks directly from PCBNew. But you can make round tracks on another software, let’s say inkscape and then import them back into the layout. Also, even if it is not possible to replicate arcs, the tool can generate multiple small segments mimicking this feature.

I have difficulty understanding this argument.

Why go to the trouble of installing a new version of a program, learn to use, and create something in that program, then revert to an old version to view the creation?

Why not just use the older version in the first place for the creation and just not bother with all the effort required to master new versions?

Arguments regarding X.99 programs just do not hold as there are warnings stating these are development programs ONLY and any serious work attempted is at the users risk.

This is what I mean with lossy, I do not mean mangled or broken, I implied that information present in the v6 files will be lost as it won’t be possible to expressed with the v5 file format. Other way to see it is, a project converte from V6 to V5 and again to V6 won’t be the same as the original file.


Because KiCad doesn’t have the resources (money and manpower) that apple does. That is a very unfair comparison.

1 Like

In Cadsoft/Autodesk Eagle, files made in version Autodesk Eagle 9.62 (2020) can be opened in Cadsoft Eagle 6.6 (2014), even if the traces are curved. Both the schematics and the layout are still automatically, correctly annotated – pure and simple Back To The Future, and the opposite…

Why would you bother trying to open something made in a current version from an six year old version of the same program?

Would probably not do it, that’s correct, what this topic is all about is compatibility/possible development. For example, again, to make it possible to try out s nightly build without total horror.

Maybe because 5.1 is officially not supported anymore and has known security problems (Gerber Viewer) that have been fixed in 6.0.2 and later? (So one feels guilty only once during conversion to the old version instead of the whole time one is socially incorrect for not using 6.99… :upside_down_face:)

Old doctor joke, adapted:

Patient: Doctor, it hurts when I open Nightly files with Stable.
Doctor: Well, don’t do that then.

If you must dabble with Nightly then keep the two project sets separate. I don’t see any point in suggesting hobbling the devs with a compatibility requirement that levies an opportunity cost. Not that the devs will allow themselves to be hobbled anyway.