Thanks for the detailed explanation, however I have a few concerns:
The name is confusing
UUID means a specific open standard - Universally Unique Identifier. By calling this unique id UUID, you are making a promise that can not be delivered.
In addition, Kirby 3.8 was announced to include UUID, which I - and I assume everyone else - expected to be the actual UUID as described by the open standard, and not a custom scheme that is incompatible with other systems and has higher chance of collision, this means that no one was able to raise possible concerns and no discussion was had before it was implemented.
Is saving 16 characters for permalink really worth dropping an open standard?
At least in my view, permalink is supposed to be ugly, and 16 characters isn’t a big deal. For use cases where it matters (Twitter), there are link shorteners available. It does not seem to be worth the price here.
In addition, the assumption that higher collision chance does not matter for a flat file CMS doesn’t hold true in all cases.
Because:
-
Kirby supports database via virtual pages.
-
UUID is Universal and is designed to have its records mingle with and move between other compatible systems which also uses UUID.
So it doesn’t matter if the specific Kirby website doesn’t have many records if the system(s) that it interacts with does.
The second point is especially important, as it empowers Kirby CMS to communicate and exchange data with other systems with minimal friction.
It would not matter if Kirby CMS only wants to run self-contained websites, but with headless mode/API access and virtual pages Kirby clearly has the ambition to be much more, and it would be antithesis to that goal to omit UUID in its core implementation.
Actual UUID scheme not being a built-in option
I am not against having a different, and more ergonomic UID scheme for Kirby, even if it is the default behavior. But I feel the standard UUID scheme should at least be a build-in option, instead of forcing users to have to hack it in, and be responsible for its upkeeping across updates.