This tracker shall collect issues to taking care of improving the core for extendability.
A lot - or probably most - of the methods and variables have the access modifier 'private'. This prevents to use them in a plugin as shown in this table:
|no modifier||y||y||n||n||*also known as package-private*|
y: accessible - n: not accessible
To allow extending classes in a plugin many of those must be changed to protected.