Goals
Modular
Every driver or service can be easily replaced and tested separately.
Team orientated
There is big picture & every module is separated.
Easy & fast to make a change
Because it is JIT you don't have compile and transfer over the network
Fast learning curve
Software should be well organized and documented.
Tested
Every module should be tested using Unit tests.
Package manager
Don't rewrite software, if there is already packet written use it.
Hardware independent
Services should be independent of drivers, practically that means if we disable LidarDriver TerrainService should work just fine.
Logging system
Elastic Search & Kibana will help us to find a bugs.