> One project that is already sort of doing this is Wireshark. > Individual protocols (TCP, IP, etc.) register their settings with very > simple API calls along the lines of > > register_boolean(&bool, "Name", "Description"). > > Wireshark does the rest behind the scenes. > > The result is certainly usable, although probably not as usable as it > could be. They're located under Edit->Preferences->Protocols in > Wireshark if anyone actually wants to take a look.
Many applications and systems work in a similar way. Telepathy, for instance. You have a set of protocol implementations, a set of handlers and an unlimited set of clients. If my application wants to make a phone call, I will request an audio channel. Then the registered handler will handle it, presenting a GUI. If the user replaces the phone call widget, then my application will just use it without noticing any change. This is a good thing. The indicators work the same way. I will request a menu and add entries to it. How the menu is actually implemented, is completely uninteresting to my application. I don't have to worry about which desktop environment it's being run in either, as long as they provide the appropriate service. Both Evolution and Akonadi use the same desktopcouch database and record types for contacts, as I understand it. This means that I can write a a contact application, use that database and record type, and it'll be useful to both Evolution and Akonadi. There are so many examples of situations where this would be useful. Bookmarks, for instance. How much different information can you provide about a bookmark for a web browser? If they used the same database for their bookmarks, then I could easily provide a custom GUI to edit and display bookmarks, and it would automatically work with all browsers. As a bonus, I can easily synchronize data between these applications and between computers. So I could close Firefox and open Chrome and the history and bookmarks would be the same. I take my laptop and go outside, and I continue from where I was. No fuzz. This is infrastructure. This is good. Jo-Erlend Schinstad _______________________________________________ Mailing list: https://launchpad.net/~ayatana Post to : ayatana@lists.launchpad.net Unsubscribe : https://launchpad.net/~ayatana More help : https://help.launchpad.net/ListHelp