The challenges of extending a program with decades of legacy and huge ecosystem around said legacy.
The main theme is as follows:
-
Ossification of ecosystem around program
-
Ossification of user habits
-
Preventing future ossification
-
Retaining extensibility & interoperability
-
Bad traditions
Instead of being seen as a burden, view ossification of code as unoffical API.
Like a compiler, transform & pre-validate thirdparty code through into static bundles of JSON.
Result: Zero runtime cost & Zero runtime error from thirdparty sources.
Users want a faster horse, but a faster horse is not worth the pain of breaking changes.
Need significant & obvious value proposition.
Move fast without breaking things.
Zero implementation exposure. Implementation exposure leads to stagnation.
Putting users (UX) before developers (API).
Communicate via existing Protocols (intentional or accidental), not implementations.
Protocols succeed when ossified, implementations fail.
Nvim & ecosystem is the platform, not your app.
Total inversion of control, impossible for thirdparty to import own code. Therefore prevention of being tied down
UNIX (worse is better) design push burden from system designer onto users.
This is OK for software, but wetware is many times slower.
Design must recognize human are slow, forgetful, and error prone.
Other cool things that I want to talk more on, but cannot fit into 15 minutes.
-
Data driven text processing.
-
Task Scheduling