There is only 1 thing I would add to this list is, above all others... 1. Correctness
Of course, this ought to go without saying, but do the right thing, always, even at the peril of all the other things combined. It is all too easy to focus on the shinny things (e.g. performance, latency, high concurrency), which have external factors (e.g. hardware failures, network issues, resource limitations) beyond the control of the system itself. Correctness has no external factors, especially if the system is designed with resiliency/recovery in mind. When in doubt, do the simplest thing, less is more, write a test. If it is hard to test, it is probably wrong, poorly designed, or both. I cannot count how many times I have been proven wrong simply by writing 1 more test. If you think it can happen, it will! Finally, by way of example, I want to pick on "performance". Ooh! Ah! Shinny! I hate nothing more than premature optimization. Unfortunately, performance might have the most external factors out of any of the above things and if you are not correct, then it really does not matter how fast you go if you are going in the wrong direction/doing the wrong thing faster. You are just magnifying the problem. Also don't confuse consistency with correctness. You can be consistently incorrect, too. There are many instances where features/functions are NOT doing the right thing. $0.02, -John On Wed, Nov 28, 2018 at 11:12 AM Udo Kohlmeyer <u...@apache.org> wrote: > Hi there Geode dev's. > > I'm starting to notice more and more discussions about proposed features > or JIRA tickets, where imo, core Geode tenets are being violated. > Initially I thought that Geode must be lacking core tenets, to guide our > decisions. BUT then I noticed that we do state the on the home page. > http://geode.apache.org/ > > I would like to remind everyone working on Geode of the following tenets > which Geode lives and dies by: > > 1. Performance > 2. Consistency > 3. Low Latency > 4. High concurrency > 5. Elastic scalability > 6. Reliable transactions > 7. Share-nothing architecture > > The reason I am calling this out, is that every decision we make, every > piece of code we write needs to meet and exceed (if possible) these > tenets. IF a solution or feature violates ANY one of the tenets, that is > solution needs to be revised to meet these tenets. > > I would like to suggest that in the future we add two more tenets: > > 1. Modular > 2. Predictable > > Imo, Geode has to be modular. A simple architecture where it is possible > to easily replace modules of the system with more suitable (and greatly > improved) successors. > > As for */Predictable/*, Geode needs to be predictable in the following > areas: > > * Latency > * Error Handling > * Service contracts > > Any thoughts? > > --Udo > > -- -John john.blum10101 (skype)