Jump to content

  • Log In with Google      Sign In   
  • Create Account


[web] Mercury - My attempt at a Browser-OS Environment


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
20 replies to this topic

#1 Prozak   Members   -  Reputation: 869

Like
0Likes
Like

Posted 22 July 2010 - 12:54 PM

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: 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...)

Sponsor:

#2 Prozak   Members   -  Reputation: 869

Like
0Likes
Like

Posted 23 July 2010 - 03:22 AM

...really need your feedback guys :)

#3 choffstein   Members   -  Reputation: 1090

Like
0Likes
Like

Posted 23 July 2010 - 03:49 AM

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...

#4 Sneftel   Senior Moderators   -  Reputation: 1776

Like
0Likes
Like

Posted 23 July 2010 - 03:51 AM

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.

#5 AndyEsser   GDNet+   -  Reputation: 386

Like
0Likes
Like

Posted 24 July 2010 - 12:42 AM

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.


#6 marc40000   Members   -  Reputation: 131

Like
0Likes
Like

Posted 25 July 2010 - 09:16 AM

Wow, that's cool. Is there an open api to write applications for it? Do applications run mostly in javascript or mostly server side?

#7 rip-off   Moderators   -  Reputation: 8121

Like
0Likes
Like

Posted 25 July 2010 - 10:29 AM

Very impressive. Can you show us what is involved in writing an application?

#8 Prozak   Members   -  Reputation: 869

Like
0Likes
Like

Posted 26 July 2010 - 01:19 AM

@choffstein: The "backside" of it? Well, Mercury is an agregation of various technologies: PHP, javascript, 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.
* javascript - 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 - javascript 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 (javascript).

Furthermore, two OS classes exist:
* A javascript 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 (javascript 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!

#9 ID Merlin   Members   -  Reputation: 115

Like
0Likes
Like

Posted 26 July 2010 - 07:24 AM

Yes, very cool. I'd be showing that to Google, Microsoft and Apple.

#10 Kambiz   Members   -  Reputation: 758

Like
0Likes
Like

Posted 26 July 2010 - 08:06 AM

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).

#11 evolutional   Moderators   -  Reputation: 1064

Like
0Likes
Like

Posted 26 July 2010 - 08:56 AM

I would like to see if you could hook this into NaCl and see what happens. Very nice piece of work so far.

#12 Prozak   Members   -  Reputation: 869

Like
0Likes
Like

Posted 26 July 2010 - 10:14 AM

@Kambiz:
* 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.
- Just being a "Window Management System". An OS doesn't just manage your windows, no, it consists of many function calls to make various tasks easy and trivial. I don't want to code a sound manager myself just because I want some sound in my application, nor do I want to import extra javascript code to do this or that. Imagine if every application did that. Every time you open up an application it loads all your code, imagine if each app had its own huge baggage of code. No, the OS provides a standardized way of doing a *lot* of this stuff, so that neither your app, nor you, have to recode the wheel.
- 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.

I'm much more of a proponent for "Solid javascript", a new Web Language that would allow binary interaction between the server and client, is client-side compiled and saved, and has a client sandbox to save files and serve as a cache. I know that there are tools here and there that more or less do this, but you really want something integrated, where the new tech can talk to the old tech.

Another pet peeve is just the open aspect of javascript code. It's all text based, and it travels in text form, and so it's very open to be disassembled, studied, and then exploited. With some sort of code protection, perhaps more programmers would feel attracted to the browser.

There is a marked difference between the code being trustworthy (meaning, it doesn't mess up your machine), and it being completely open.

#13 MrDaaark   Members   -  Reputation: 3551

Like
0Likes
Like

Posted 26 July 2010 - 04:02 PM

Very impressive.

#14 Deliverance   Members   -  Reputation: 309

Like
0Likes
Like

Posted 26 July 2010 - 04:25 PM

Holy Cow! This is so cool! Now i'm sorry if i don't have anything smarter to say but can this be used(in the future) to test new technologies my old video card does not support? Like for instance play with nvidia optix? I think this would be rather cool!

EDIT:

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.

#15 ID Merlin   Members   -  Reputation: 115

Like
0Likes
Like

Posted 27 July 2010 - 01:41 PM

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.

#16 Prozak   Members   -  Reputation: 869

Like
0Likes
Like

Posted 27 July 2010 - 03:28 PM

Quote:
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.

@Deliverance: You do realize this is running in your browser, right? It runs with the same power your browser allows it to have, in other words, as smoothly as the javascript implementation of whatever browser you're using allows it.

There is no sharing of "processing power"... I don't even know how that would work... you could in theory code some stuff in javascript, have the browser chew on it, and upload any results to a central server, but that is like trying to do a screwdriver's job with a hammer...

#17 ID Merlin   Members   -  Reputation: 115

Like
0Likes
Like

Posted 29 July 2010 - 02:00 PM

I know it's not exactly what you've done, but if that were a web development framework (or, addition to whatever you used), it would be immensely useful to Web 2.0 developers.

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.

#18 revomedia   Members   -  Reputation: 100

Like
0Likes
Like

Posted 14 August 2010 - 10:56 PM

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.

#19 Prozak   Members   -  Reputation: 869

Like
0Likes
Like

Posted 15 August 2010 - 10:33 PM

Quote:
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.

#20 Filter Forge inc   Members   -  Reputation: 100

Like
0Likes
Like

Posted 02 September 2010 - 01:46 AM

Prozak, Your app tries to store the entire internet inside of it.
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.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS