Use protected in order to let us extend the framework.
I encountered a high difficulty in creating custom materials because all the properties I needed were scoped as private instead of protected. Please use protected!!
If you really don't want people to be playing with the framework's internal gears my suggestion is to scope them as part of the custom namespace "arcane" or to create a new custom namespace for each specific area of the framework (ex: "arcane_materials", "arcane_geom", etc)
The same is suggested for "final"... I don't think any class should be marked as final in an alpha version