Visions of truly portable applications.
I've been thinking about the miniapps idea some more. I still think it's a good idea, but I want to extend it a bit. Miniapps are great and all, 'cause they're, well, mini.. but I want more. Java is supposed to by write once run anywhere, but in practice any given program only runs on one computer. I'm not talking about whether it can be on Mac or Windows. I mean that I typically install the software on one computer and that's it. If we've got this great portable runtime then why aren't our applications truely portable?
Okay, let me take this from another angle.
Imagine the future, 2005-AD, a child logs in to his Windows computer and recieves an email from a school friend containing an Applet. It's a cute little game, featuring sarcastic hyperbolic cartoon characters call Maroons, built right into a webpage, sent in an email.
Little Johnny plays for a few minutes, decides he likes the game and hits a button marked: Install. Now the program serializes itself, runs through a custom installer, and configures the right webstart preferences to fully install itself on the computer, all while continuing to run in a separate window. Johnny doesn't see any of this though. He just sees the program magically jump out of the email and into it's own window.
Later that day Little Johnny he's chatting with his sister, Sally, at college over IM. She's interested in the game so he drags the program into the chat window where it's instantly teleported to her iBook. Again she can run it or press the install button to save it locally.
The next day Sally prepares to go to a local cafe and study with a friend. Knowing that her friend is always late she decides to bring along the game her brother sent her. She drags the program into the iPod symbol on her computer where it is automatically synced on to her iPod-mini, adding a new menu item for Maroons.
Sally's friend finally shows up an hour late. He asks what she's playing. As she shows him the highscores list pops up. It contains the names Sally, Johnny, and Bobby (the boy who emailed it originally to Johnny), the high score list having been transferred along with the running game each time.
Finally Sally returns home, plugs her iPod in to her laptop and goes to sleep. In the background the game sends her scores to a p2p network where it syncs back to Johnny and Bobby's computers, but no where else.
What do you think? Can we get our favorite portable runtime to transport applications around in cute candy colored installable jars? I want my portable applications to really be portable: at the code, installer, and UI level.