   [web] Mercury - My attempt at a Browser-OS Environment
  Hi all,Mercury is the tentative name I gave a technology I've been working on. It mimics an OS-like environment on your Browser.You interact with it in much the same manner you would with any regular OS.My vision is pretty much "your apps - online", where anyone can run them, in an environment that is easy to develop for, coder-friendly.Here is the link for video 1: ">YouTubePlease watch it and place your doubts and questions here.Thanks for the feedback and any interest in the Project.(PS: Also looking for beta-testers)(PPS: Also looking for employment...)   
  ...really need your feedback guys :)   ;  Well, all I can say is that I am very, very, very impressed, and I can really see something like this being applicable technology to something like a netbook or other smaller portable devices.  It would be interesting to hear more about the back-end side of it.  Where does the server run?  Can I run an instance of the server on Amazon EC2 and run 10 web interfaces to that server?  What sort of technology do I have to dedicate to it?  All in all, a very cool project -- with which, I can't imagine you would have too much trouble finding employment...   ;  Cool project. An environment like that will rise and fall on its apps -- picture viewing is fun, but I have Flickr for that, which has a more targeted UI. Tthe basic utility of a windowing-based environment would come from the ability to organize and coordinate small areas of content. You should investigate an adapter for embedding Google Gadgets as apps, which would open up a huge range of pre-made applications. You might do the same for Facebook apps, though I haven't really used those and don't know whether they'd be suitable for this sort of thing.Oh, and also consider how you'll integrate your stuff with LastPass or other password management.   ;  That was very cool. Definitely fits in with the cloud mentality. I had thought about doing a similar thing as a portable accessible business environment for remote workers and hot-desking but never found the time.;  Wow, that's cool. Is there an open api to write applications for it? Do applications run mostly in &#106avascript or mostly server side?   ;  Very impressive. Can you show us what is involved in writing an application?   ;  @choffstein: The "backside" of it? Well, Mercury is an agregation of various technologies: PHP, &#106avascript, Ajax, Json, HTML and CSS.Mercury allows a user to run applications in a windowed environment. Each application has its own code file. This code file consists of:* HTML - defines the structure of the application, in the form of text, controls, etc.* CSS - gives the HTML unique styling. A parser engine ensures that no two applications share the same CSS styles.* &#106avascript - runs when the window is created, setting it up. Programmers will be able to setup an endless amount of options, for example, the label text (name of window), the Status Bar text (footer of the window), what system buttons appear (menu, minimize, maximize, close), callbacks for Events (onKey, onResize, onClose, etc).* PHP - runs when the window code file is parsed, allowing the application to access the DataBase and set itself up* Ajax - &#106avascript code that allows the Client-Side of an Application to talk to its own Server-Side (PHP). The Ajax engine of the Window has been fully wrapped, and it's a breeze interfacing your client-side code with your server-side code.* Json - Preferred format for data interchange.So, a single file allows us to define the structure of the windows (HTML+CSS), allows us to talk to the database (PHP) and allows us dynamic interactions on the User's machine (&#106avascript).Furthermore, two OS classes exist:* A &#106avascript OS class that wraps all of the operating system functions, like, creating a new window, logging on/off, listing a User's applications, managing the workspace, garbage collecting when a Window is closed, etc;* ...and a PHP OS Class, that offers various help functions, like DataBase access, accessing a User's private data (in Mercury private data is valuable, and there will be filters so that the application cannot access your private data without clearance), management of Files (delete, move, rename), etc, etc, etc...By the way, if you haven't figured it out by now, let me explain that, when you click over an Application in your App List, the system fetches everything related to that application via Ajax. This means that when you open the Mercury window, there is literally no applications present, and whatever the User requests, is fetched from the Server in a dynamic fashion.Each application is "rendered on demand" via an Ajax engine, that fetches the application data from the Server, parses it, and then displays it on your Browser.Mercury also has the concept of "processes". These are pieces of code that run on Mercury's operating system, mostly client-side (&#106avascript therefore) but have no attached window. As an example of two processes, we have:* p_Clock - Renders/Updates the system Clock* p_UserActive - This process ensures the User has been active using Mercury for the past X minutes. If the User is absent, depending on it's configured Settings, the User may be logged out, or the screen saver might be activated. This ensures no one has access to your work area if you've gone out to lunch and forgot to log off.There are also Server-Side Processes. These are attached to a CRON Wizard, and self-schedule at specific intervals to perform maintenance tasks. They are of course PHP-based.I want as much abstraction, when writing a new Application, as possible. I want the programmer to have a really easy time coding in Mercury, and leting the OS worry about the mundane stuff, like, the Ajax engine, basic window interactions, etc. The programmer will have a bunch of User-Interface controls he can almost literally drag and drop onto the code that will make his application more fluid and atractive.I'm also designing a module that will allow an application to be localized, by querying the browser's prefered language. In other words, if a User has set its browser to prefer French, and if an Application has a French localization table, then when the User calls up the Application, it will be instantly rendered in the User's prefered language, French.The User will also be able to set his prefered language and other settings in Mercury's Config Panel. Everything, from prefered Date format, decimal symbol (comma or dot?), prefered Units (grams, pounds, meters, miles, inches, etc...).Once those are set, the system will have enough intelligence to auto-translate text tags in forums and articles. If someone writes a cooking recipe in European units (grams, liters), the system will auto-convert the units to your preferred settings.If you run the Treadmill App, to track your treadmill training sessions, and you're European, it will display the Units as Km/h and Kg. If you've set your preferences to Imperial, then you'll see miles/h and lbs.If you open a diet forum and someone has written "I currently weight 110kg but this week I've ran 8km!", and your preferences are US/Imperial, what you'll actually read will be: "I currently weight 242lbs but this week I've ran 5miles!".Much of all of this is already in a very, very advanced stage of completeness.@Sneftel: Thanks for the tips, I'll really have to look into Google Gadgets and other similar pre-made applications. I'll try to add some sort of OpenID or LastPass to the system. People are really getting tired of so many passwords they have to juggle in their mind.@marc40000: See above for your response. There will eventually be an open API yes, but that will also require a sandbox server. Programmers develop their apps there, and only after they've matured and are stable, they go through an approval procedure. This approval procedure isn't some form of Draconian control set up by me, no, not at all, it is all about the User and his privacy, therefore I must ensure that the Application's code obeys the API, accesses only the data it should access, and doesn't "leak" data.In Mercury, quite unlike the trend in various current social sites, every data you create or resource you upload is Private, and can only/will only be shared after you specifically instruct Mercury to do so.@rip-off: I'll do a video later this week if the time allows it, detailing the creation of a "DailyWeight" application, to track a User's weight throughout time, and have the ability to seamlessly create a graph chart showing Weight variations across time, using pChart, that has already been integrated into the PHP OS Class, and so with a few basic calls, you can have your graph dynamically generated, and then delivered to you via Ajax.If you're thinking this all sounds really complex, the low amount of code required to achieve it will most assuredly impress you.Please keep the feedback coming!   ;  Yes, very cool.  I'd be showing that to Google, Microsoft and Apple.   ;  Well done, but such web desktops are available now for quite some time, I have tried out some of them but could never get used to them, and there is always the problem that for security reasons I cannot use them for my job and not even for some personal stuff. Also when I'm sitting in front of a real desktop, I don't see any reason to use one imitated in a browser. Nothing stops me from opening every app into another browser window (or something like Mozilla Prism).   