Getting Apps to Share Data and Cooperate

I was thinking about productivity and scripting languages and I was thinking that it would be nice if there were a way to easily have applications share data between them and to be able to have software cooperate by issuing commands and querying for information in a standardized manner.

I don’t think such a means exists, but I believe it could be extremely useful. Perhaps many open source project leaders could get together and determine the best way of achieving such functionality. Perhaps a text-based interface could be used.

Mockup Python example:

from AppPath import AppPath
import AppCooperation

link = AppCooperation.connect(AppPath("blender"))  # connects with blender.exe
cube = link.command("add.mesh('cube')")

faces = link.command("scene.faces") # retrieve number of faces in scene
print faces

I know this example isn’t really all that great (since Python can be used from inside Blender), but if a number of open source applications all have similar interfaces then the functionality of each application could be expanded by the functionality of other applications.

Potential Uses:

  • Connecting a calendar program with an email client to automatically send appointment information to contacts in the address book.
  • Create a dashboard with all your most used computer functions all in one place.
  • Create a script that renders frames of an animation in Blender, automatically applies a series of filters to each frame in The Gimp, then saves them in the desired format.
  • Connect a graphing program with an IRC client to find how often the word “lol” is typed each day then display it as a line graph – maybe some trend could be detected?
  • Write a script that searches through your FireFox bookmarks and removes duplicates.
  • Write a script that reads “to do” lists and automatically takes care of all of those neglected tasks (i.e. “email grandma” could result in sending nana your web browser’s history list!)
  • Connect with a dictionary program, read random entries, and create word salads.Ok, I couldn’t think of too many really good uses at the moment, but it could be very beneficial for when you need to use information between multiple applications – it sure beats cutting and pasting.

Benefits not previously mentioned:

  • Language independent interface – Python, Perl, Ruby, C++, PHP, etc. It doesn’t matter, as long as the interface exists.
  • Multiple ways of reading and inputing data – Unlike programming libraries, an application can be run directly and its information can be accessed and modified in a user friendly manner.
  • If it’s a frequently used application a lot of information could be available because of daily use.[/edit]