Line 36: |
Line 36: |
| There are two main strategies for implementing this: | | There are two main strategies for implementing this: |
| # Running a standard browser, as light as possible, that points to a small local webserver (SimpleHTTPServer). It would use AJAX or a wrapper on top of that (like jsonrpc) to provide the bridge to python. The biggest downside would be that the SSB would have to call the python backend for persistence and interaction with Sugar. Another problem would be that this process could not easily be automated. Some python code would have to be written for any semi-interesting application. It would also be harder for web developers to hack Webified itself. | | # Running a standard browser, as light as possible, that points to a small local webserver (SimpleHTTPServer). It would use AJAX or a wrapper on top of that (like jsonrpc) to provide the bridge to python. The biggest downside would be that the SSB would have to call the python backend for persistence and interaction with Sugar. Another problem would be that this process could not easily be automated. Some python code would have to be written for any semi-interesting application. It would also be harder for web developers to hack Webified itself. |
− | # In a small controller application, embed a browser runtime (with hulahop). The resulting activity would be completely standalone and would not depend on a web server anymore. Gears would have to be installed as a plugin for xulrunner. Javascript dbus access through [http://sandbox.movial.com/wiki/index.php/Browser_DBus_Bridge#WebKit_.28JavaScriptCore.29_version_notes this bridge], [https://www.socialtext.net/lukec/index.cgi?xocom XOCOM], pyxpcom directly or, in a worst case scenario, AJAX. It would be very similar to other efforts to bring web apps to the desktop and it could also provide better integration with Sugar.<br />Browse could be used as a base for the Webified SSB. A small utility (probably an extension to the Browse activity) would create activities out of websites.<br /> | + | # In a small controller application, embed a browser runtime (with hulahop). The resulting activity would be completely standalone and would not depend on a web server anymore. Gears would have to be installed as a plugin for xulrunner. Some form of [https://addons.mozilla.org/en-US/firefox/addon/748 GreaseMonkey] would be needed. Javascript dbus access through [http://sandbox.movial.com/wiki/index.php/Browser_DBus_Bridge#WebKit_.28JavaScriptCore.29_version_notes this bridge], [https://www.socialtext.net/lukec/index.cgi?xocom XOCOM], pyxpcom directly or, in a worst case scenario, AJAX. It would be very similar to other efforts to bring web apps to the desktop and it could also provide better integration with Sugar.<br />Browse could be used as a base for the Webified SSB. A small utility (probably an extension to the Browse activity) would create activities out of websites.<br /> |
| I will be focusing on the second stragety.<br /> | | I will be focusing on the second stragety.<br /> |
| | | |
| * Why not use existing solutions like Mozilla Prism or Titanium? | | * Why not use existing solutions like Mozilla Prism or Titanium? |
| # Prism. It's just a stripped-down firefox. To make it useful, at least Gears would have to be installed and there would still remain the issue of integration, since Prism is designed for regular desktops. Building on hulahop and the existing Browse activity would yield better integration. There may still be useful code in Prism, like the SSB creation utility. | | # Prism. It's just a stripped-down firefox. To make it useful, at least Gears would have to be installed and there would still remain the issue of integration, since Prism is designed for regular desktops. Building on hulahop and the existing Browse activity would yield better integration. There may still be useful code in Prism, like the SSB creation utility. |
− | # Titanium. Titanium is more interesting, as it already is an SDK for creating desktop applications with web technologies. It's only real technical disadvantage is introducing a new dependency (webkit) in Sugar. However, it's [http://titanium-js.appspot.com/Core/Titanium design] is largely incompatible with Sugar, as it focuses on traditional desktops. Refactoring all that to fit into Sugar would be too much work.<br /> However, since webkit may very well be faster and use less memory, I will investigate an alternative backend for hulahop based on [http://code.google.com/p/pywebkitgtk/ pywebkitgtk]. | + | # Titanium. Titanium is more interesting, as it already is an SDK for creating desktop applications with web technologies. It's only real technical disadvantage is introducing a new dependency (webkit) in Sugar. However, it's [http://titanium-js.appspot.com/Core/Titanium design] is largely incompatible with Sugar, as it focuses on traditional desktops. Refactoring all that to fit into Sugar would be too much work.<br /> |
| | | |
| * What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then. | | * What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then. |
− | I plan to get Gears integration, dbus access and a nicer js wrapper on top of that done in the first 2-3 weeks. This would create a template for web-based activities, that web developers could already build on. A small utility that generates sugarified web applications would also use that template. <br />The utility and a nice demo of Webified usage could then be made in a few days, two weeks at most. The remaining time could then be spent on better integration, polishing things up and for any eventual emergencies. | + | I plan to get Gears integration, dbus access and a nicer js wrapper on top of that done in the first 2-3 weeks. This would create a template for web-based activities, that web developers could already build on. A small utility that generates sugarified web applications would also use that template. <br />The utility and a nice demo of Webified usage could then be made in a few days, two weeks at most. <br /> |
| + | The remaining time could then be spent on better integration, providing a small JavaScript wrapper API similar in concept to [http://fluidapp.com/developer/ Fluid's]), polishing things up and for any eventual emergencies. |
| + | |
| <br />Milestones: | | <br />Milestones: |
| # Webified SSB can load a website (hello world) | | # Webified SSB can load a website (hello world) |
Line 50: |
Line 52: |
| # JavaScript from within a Webified SSB can make dbus calls (dbus hello world) | | # JavaScript from within a Webified SSB can make dbus calls (dbus hello world) |
| # Browse can successfully "sugarize" GMail | | # Browse can successfully "sugarize" GMail |
− | If webkit turns out to be significantly faster and time allows it: | + | # Webified SSB can run a hello world userscript (GreaseMonkey) |
− | # Run [http://wiki.laptop.org/go/Sugar_Code_Snippets#WebView hulahop webview snippet] with webkit as backend. | + | If time allows it: |
| + | # Webified SSB can save it's Gears state in the Journal. |
| | | |
| * Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant. | | * Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant. |
Line 64: |
Line 67: |
| I also used various linux distros for several years, until last year. I got a macbook as a gift and broadcom drivers are still a mess, but that'll get fixed at some point. I found unix in general so intriguing that I set up a small home server with a 300mhz CPU. I put debian on it and used it for various purposes, from web hosting, file serving, distcc node to a router for my home. | | I also used various linux distros for several years, until last year. I got a macbook as a gift and broadcom drivers are still a mess, but that'll get fixed at some point. I found unix in general so intriguing that I set up a small home server with a 300mhz CPU. I put debian on it and used it for various purposes, from web hosting, file serving, distcc node to a router for my home. |
| | | |
| + | Since I was using a lot of open source at home, I tried to push it in school as well. I managed to make students and teachers aware of GCC as a replacement for Borland C/C++, Mono and SharpDevelop as a replacement for the not-quite-free Visual Studio. With the help of a friend, I even managed to convince the head of school to install Ubuntu in one of the labs. |
| | | |
| ====You and the community==== | | ====You and the community==== |
Line 95: |
Line 99: |
| The most important thing I ever learned was to never be certain of anything and to always be prepared for the worst. | | The most important thing I ever learned was to never be certain of anything and to always be prepared for the worst. |
| * Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more? | | * Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more? |
− | Web technologies are remarkably flexible and it would be great to encourage children to play around with them. | + | Web technologies are remarkably flexible and it would be great to encourage students to play around with them. |
| | | |
| [[Category:2009 GSoC applications]] | | [[Category:2009 GSoC applications]] |