Let everyone improve Android.

Android has great features when it comes to app integration. Things like default settings, intents (sharing and cross app links) or background processes are undoubtedly great features setting Android apart other OSes.

A few weeks ago, Roman Nurik came out with a lockscreen widget DashClock. It got very much attention, and this is deserved. Not only does his app work flawlessly and looks great, Nurik also came up with the idea of third party apps expanding the functionality of his own one. Every other developer can easily (There is a public API available) put his own information into the DashClock Widget. I think we all agree that this concept is better than making a closed app and having to develop every part of it yourself.

Now with the idea of DashClock and its extensions in mind, let's get back to system Integration. Wouldn't it be awesome to expand the concept of DashClock to the whole system? I'm talking of stuff like quick toggles. The developer could easily specify a method in his app for what happens on tap and one for long tap. There are many sections where this could be applied, for example custom settings items or Google Now cards. Android has been doing this with widgets and notifications for a long time; in fact, widgets are nothing else than launcher plug ins and notifications are extensions for the pulldown menu. The same with sharing. Every app can display other apps which are able to process data of a specific type.

Before everyone comments that such things turn the system into a hell of addons and toolbars, let's specify the way these extensions should work (Of course, that's my personal opinion, comment if you have another one):

1. When you install an app, it requires a permission in the manifest for system extensions and you see that right in the Play Store/package manager.

2. Extensions are off by default.

3. In system settings, there would be an additional item like "Extensions". It lists every app which is capable of displaying system extensions. You could select an app and enable/disable every specific type of extension (and maybe also configure then with some additional settings the app developer can put in this screen). Of course there would be a description, similar to accessibility services. The developer could/should add a link to this screen in his actual app, and it would also be nice to have an extensions button in the app infos.

These three rules should pervent Android from becoming like IE, where every program can add its toolbars and it can be difficult to remove them without just uninstalling the program.

If the stuff I just wrote is not beyond imagination, I would like to go even one step further. You could not only be able to expand the functionality of system apps, but also provide an opportunity for third party apps to have extensions for other third party apps. That would involve a solution from Google which every app can implement (of course it should be as easy as possible to attract more developers) and accept other apps' extensions just like DashClock.

Actually, I would like to two steps further. I was talking about stuff like custom quick toggles, that means limited. There are positive and negative parts of limited solutions: The positive is that everything remains clean and uniform, but you could not do anything. So what would happen if we took that limit away and allowed developers to hook into every part of the system in any way? Everything could be improved and built upon by every single developer out there. Even if it has not specifically been configured to handle third party extensions. Android would reach a new level of openness, one could do stuff to the system that previously only whole custom ROMs were capable of doing. Some examples are status bar settings (center clock, battery circle etc.), the carousel lock screen animation from AOKP or even little changes to how UI patterns like the action bar or ViewPagers look and act.

Well, the last two paragraphs, especially the very last one will probably remain a dream. I don't think any OS will get that customizable in the next few years.

So what do you think about this Idea? How would you change and improve it, and where do you want the OS to be extended? Let me know it in the comments!

Sorry about the grammar, English is not my primary language. I think you will understand it despite some errors.