[web] Mercury - My attempt at a Browser-OS Environment
Members - Reputation: 885
Posted 22 July 2010 - 12:54 PM
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: YouTube
Please 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...)
Members - Reputation: 1090
Posted 23 July 2010 - 03:49 AM
All in all, a very cool project -- with which, I can't imagine you would have too much trouble finding employment...
Senior Moderators - Reputation: 1787
Posted 23 July 2010 - 03:51 AM
Oh, and also consider how you'll integrate your stuff with LastPass or other password management.
Members - Reputation: 885
Posted 26 July 2010 - 01:19 AM
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.
* PHP - runs when the window code file is parsed, allowing the application to access the DataBase and set itself up
* Json - Preferred format for data interchange.
Furthermore, two OS classes exist:
* ...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.
* 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!
Members - Reputation: 758
Posted 26 July 2010 - 08:06 AM
Members - Reputation: 885
Posted 26 July 2010 - 10:14 AM
* I've seen a few Web Desktops, and to me they all fail do to it correctly, for many reasons, but I'll list a few:
- Trying to support too many Browsers: why it is bad? Because simulating windows, doing drag'n'drop and all of the stuff you see in my video requires some nifty tricks to make it work, and the more you try to make it work with older browsers, the more convoluted it gets. And if you go down that road, the code just gets fugly. So no IE6 please.
- Not supporting enough Browsers. Really no reason why they can't support Opera, Safari and Chrome. The Web isn't just IE8 and Firefox.
- Trying too much to be a specific OS. Oh my, what's with the whole XP theme there? I don't want to run XP inside my browser, surprise me! Make it visually interesting, but don't just imitate another OS' complete visual.
- Trying too much to be just an OS. An OS environment is interesting, BUT you're working on a browser, so leverage that your advantage, Don't make it a boring environment just because your windows XP is boring.
- Trying to do the impossible. Listen, some stuff is just not possible. Flash and other objects love disobeying z-ordering. This messes up your windows and your experience, because if window A contains flash, and then you focus on window B, and window B comes to the front, it's horrible if you can still the see the flash on window A, just because it isn't obeying z-ordering. This also happens with O3D and DivX. For now I just let it happen, but I'm going to add functionality to Mercury, so that whenever you have a window open that does not obey z-ordering the OS can manage it differently. Another pet peeve is iFrames. Try it in those web desktops. Open an iFrame of Google.com, and it will just "crash", because Google.com's code just takes over. So don't use iFrames. Don't be too clever for your own good.
So.... that's my view on that.
@evolutional: I had to google NaCl, do you mean this? Very very interesting, but it kind of falls into that "area", where you're just trying to push a camel through the eye of a needle.
There is a marked difference between the code being trustworthy (meaning, it doesn't mess up your machine), and it being completely open.
Members - Reputation: 368
Posted 26 July 2010 - 04:25 PM
Also it would be really neat to log into a group into the OS and share your processing power with other friends for specific tasks, like ray tracing or rendering.
Members - Reputation: 885
Posted 27 July 2010 - 03:28 PM
Original post by ID Merlin
If I had written that, I'd use it as a portfolio piece accompanying a resume. Even though the big companies probably already have such a system in development, it would demonstrate that you have serious skills at web development.
Already done! Check the links on the YouTube videos, they link to a page with a small portfolio and my Resume.
Members - Reputation: 119
Posted 29 July 2010 - 02:00 PM
Also, good luck with the job hunt. You'd be the first person I interviewed, if my company were in Portugal and looking for a developer.
Members - Reputation: 885
Posted 15 August 2010 - 10:33 PM
Original post by revomedia
Looks well executed, so kudos, but I just don't understand why. What's the purpose? Between cloud computing, virtual dedicated servers, and virtual network computing, I can't think of a single need such a thing would fill.
I see your point. In fact, I've been getting that a lot. I guess I fail at describing Mercury's strong points.
I'll try with a few examples if possible.
Imagine having a place, online, that you can access wherever you are. Imagine it using a simple but powerful User Interface. You can "install" whatever applications you want into your area. Do you exercise a lot? On the Wii? There is an app to track your progress, and share it online with your friends. TreadMill? There is another app that also allows you to compete with your friends, relatives, and even strangers, and it will map your progress and give you suggestions on how to better improve your times.
Want to share your pictures? Never been easier. Want to map out restaurants that you love? Or review restaurants online? There will be apps for all that.
Want to create a "journal of you", divided into whatever sections you want? Sure thing! I dislike the current trends, Tweeter, blogs, because I, as a person, have many interests. I can write about programming, photography, astronomy, family life, etc, and each person can read whatever section of the newspaper of "me" they want.
My family couldn't care less about my programming exploits, and my fellows programmers couldn't care less about that new restaurant I'm going to visit this next weekend, so things get neatly organized.
This online environment, where you can do anything there is an App for, and insta-share it with your social and work circles, is what I think makes Mercury unique. Unlike other sites, it doesn't limit itself to a single subject.
I hope this time I was able to better describe the vision I have for this Project.
Members - Reputation: 100
Posted 02 September 2010 - 01:46 AM
You have browser then you use any site to access its features.
Docs? - Google Docs would do.
Social experience- facebook.
Why sould i need a window manager inside my browser?
You made a lot of work, but it's just exercise. You need to be really different from others OS-like environments inside a browser.
And other piont: there are a lot of allready existing apps that users own. They can't run in browser.