So, if I understand correctly, Matrix's serialization is such a mess because of its history synchronization?
I get not keeping message blobs around (easiest way to send things portably) because lol storage, but instead solving the issue of recreating messages by standardizing yet another version of JSON to guarantee the ordering...
Couldn't you just keep a map of ordinal numbers to fields in the object and use that instead to guide signature verification?
That'd require much less code.
Or I guess ordinal to path, if you decided to have yet more layers of embedded objects instead of one flat layer.
Why do I consider requiring less code/logic a positive?
Less opportunity for errors to sneak in.
> less code/logic a positive
Less code is very positive, also for other reasons than errors sneaking in: simplicity is needed to allow anyone to understand and work with the code at all.
Taking it to the extreme for the sake of argument: if code gets infinitely complicated, then we lose the whole point of having access to the source code, because we cannot do anything with the source code as we cannot understand it.
Making things complicated means undermining software freedom.
@eliasr Quite.
There's a minimum of complexity required for some things (such as systemic simplicity, something lost on suckless for instance), but complexity for its own sake is bad.
Of course things being simpler and less complicated also tends to lend itself to requiring less effort (at least once the work of coming up with a constructive simplicity has already been done), which is always nice.
In this way, large companies have an incentive to make things complicated, because in that way they are moving power away from individuals, to those companies. "Open source" does not protect us from this threat.
If our interest is the public good, then we should strive for simplicity and we should not expect huge companies to lead the way because it is not in their interest.
2/2