Unhelpful error message in Keyman Developer 17.0

I open a project file, and there is a notice that I should upgrade it to the version 17.0 format. When I click that link, I am told that all my kmn files are not in the same place, so it cannot update the project format. But according to the error message all the kmn files ARE in the same place.


It turns out the one KMN that is not in the same place is "mobile_fulfulde.kmn. But I had to investigate that manually.

Suggestion: It would be better if the error message told me which kmn file is in the wrong place, and if there were a button I could click to move it to the right place.

Furthermore, opening the “mobile_fulfulde.kmn” file and saving it to the same folder as the others does not fix the problem.

You should only have a fulfulde.kmn file in the fulfulde folder and it needs to be in the fulfulde\source folder. The other .kmn files should be in their respective folders. The folder/filename structure is really essential to follow.

The current Keyman Developer does a good job of putting the files in the right place IF you create a new keyboard. The problem is when you have old keyboards where you are trying to get into a good state.

Here is a somewhat out-of-date document about it:
https://help.keyman.com/developer/keyboards/starter/step-3

(The keyboard_info file is no longer submitted by a keyboard author, that information can/should now be included in the .kps file)

I read the error message as objecting that a kmn file is not in the same folder as other kmn files. If I am supposed to have each kmn file in its own folder, the error should say that.

Creating a new keyboard does not put it in a different folder.
I created a new project, then clicked “new keyboard” and both of my keyboards are in the same folder.


I hear you on the clarity of the error message. I’ve opened a pull request to clarify the message: #11819.

The principle we are recommending is one keyboard per project. Each project should be in its own folder. A help topic that describes the recommended file layout is https://help.keyman.com/developer/current-version/reference/file-layout. This file layout matches the Keyman cloud keyboard repository file layout.

I’ve opened an issue to update the starter docs at #1324.

Suggestion: It would be better if the error message told me which kmn file is in the wrong place, and if there were a button I could click to move it to the right place.

It’s always a little difficult to have a smooth landing for upgrading existing data. The trick here is knowing which keyboard is out of place, and what the right place is intended to be!

We could make a button to move files around to match the standard layout, but there are certainly sharp edges – e.g. two files with the same filename, or differing only by case. If there are multiple .kmn files, which is the ‘real’ one and which ones are experiments or old versions? How about the icons, touch layout files, .kvks files, and other files? What if there are multiple keyboards in different folders that all refer to an icon with the same filename – but in different folders? And then there is the .kps – would it refer to files in wrong locations after we move files around?

I’m not saying this is impossible, but I do think it would be hard to get this working reliably with the wide variety of scenarios that are out there.

PR #11819 was approved and merged and will be in the next release, 17.0.327, and 18.0.59.

If you are recommending one keyboard file per project, my suggestion about offering to move a kmn file is not really helpful.

If I’m reading the code right, it does not look like the revised error message (11819) recommends only one keyboard per project.
Instead the message seems to say that all primary source files must be in the same folder.

Yeah, it’s a bit complicated – we don’t forbid multiple keyboards in a project, and the error message is intended to provide information about what is blocking the change, rather than advice on how to improve. This could go into the extended help for the error but IMO probably belongs in the keyboard development guides.