Changes

Jump to navigation Jump to search
1,108 bytes added ,  16:29, 26 March 2009
no edit summary
Line 25: Line 25:  
Webified
 
Webified
 
* Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?
 
* Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?
I'm making a utility that allows the creation of activities from web applications.<br/><br/>
+
I'm making a template [http://en.wikipedia.org/wiki/Site-specific_browser SSB] activity and a small utility that can create activities out of websites using that template.<br/><br/>
    
The purpose of this project is twofold:<br />
 
The purpose of this project is twofold:<br />
 
* it would make it easy to "sugarize" web apps (like gmail).<br />
 
* it would make it easy to "sugarize" web apps (like gmail).<br />
Users could press a button in the Browse activity (or there could be a separate activity for this) and a small tool would help them create an sugarized web app as a new activity.
+
Users could press a button in the Browse activity (or there could be a separate activity for this) and a small tool would help them create a sugarized web app as a new activity.
* there are a lot of web developers out there that are familiar with HTML(5), CSS and JavaScript and it would be great to take advantage of their skills.<br />
+
* there are a lots of web developers out there that are familiar with HTML(5), CSS and JavaScript and it would be great to take advantage of their skills.<br />
Web developers could either use Webified to port their web apps to sugar using only web technologies.<br /><br />
+
Web developers could use Webified to port their web apps to sugar using only web technologies, without having to learn Python.<br /><br />
 
I have been inspired by [http://fluidapp.com/ Fluid], which creates custom SSBs for websites. Fluid has Gears and GreaseKit plugins and provides a simple JavaScript API to websites for common native calls (like sounds, notifications, badges, etc.),  which makes it very easy to extend web apps to provide more integration. For example, GMail in a custom Fluid SSB feels like a native application.
 
I have been inspired by [http://fluidapp.com/ Fluid], which creates custom SSBs for websites. Fluid has Gears and GreaseKit plugins and provides a simple JavaScript API to websites for common native calls (like sounds, notifications, badges, etc.),  which makes it very easy to extend web apps to provide more integration. For example, GMail in a custom Fluid SSB feels like a native application.
 
<br /><br />
 
<br /><br />
 
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 web developers would have a hard time hacking Webified itself. 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.
+
# 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 pyxpcom or [http://sandbox.movial.com/wiki/index.php/Browser_DBus_Bridge#WebKit_.28JavaScriptCore.29_version_notes this bridge]. It would be very similar to other efforts to bring web apps to the desktop, thus making it familiar to web developers.<br />A small utility (probably an extension to the Browser 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. Javascript dbus access through pyxpcom or [http://sandbox.movial.com/wiki/index.php/Browser_DBus_Bridge#WebKit_.28JavaScriptCore.29_version_notes this bridge]. It would be very similar to other efforts to bring web apps to the desktop, making it more familiar to web developers and it could also provide better integration.<br />A small utility (probably an extension to the Browser activity) would create activities out of websites.<br />
 +
[todo: mention webOS]
 
I will be focusing on the second stragety.<br />
 
I will be focusing on the second stragety.<br />
   Line 44: Line 45:     
* 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 would use when making web activities. 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 rest of the time could then be spent for polishing things up or for 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 would use when making web activities. 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.
 
<br />Milestones:
 
<br />Milestones:
# Webified template can load a website (hello world)
+
# Webified SSB can load a website (hello world)
# Webified template can use GMail in offline mode (through Gears)
+
# Webified SSB can use GMail in offline mode (through Gears)
# JavaScript from within Webified template can make dbus calls
+
# JavaScript from within a Webified SSB can make dbus calls
 
# Browse can successfully "sugarize" GMail.
 
# Browse can successfully "sugarize" GMail.
   Line 54: Line 55:     
Python is my favourite programming language and JavaScript is a close enough second.
 
Python is my favourite programming language and JavaScript is a close enough second.
I have some experience with python and I've built various things, from small utilities to websites with it. My most interesting project was helping to port a scientific application from c++ and Qt3 to Python and Qt4.
+
I have some experience with python and I've built various things, from small utilities to websites with it. My most interesting project was helping to port a scientific application from c++ and Qt3 to Python and Qt4. It also involved writing a few more intensive algorithms in Pyrex. It was interesting to see just how much the code shrunk, while keeping the application itself just as speedy.
 +
 
 +
I have used JavaScript and HTML to build a small web game, Mousebuster (not online, get it from [http://dl.getdropbox.com/u/317039/mousebuster.zip my dropbox]. Although at first I did not like javascript at all, I quickly realised it's immense advantage: huge existing install base.
 +
 
 +
I also had some contact with C# and Java and have been thoroughly disappointed by their general lack of expressiveness. I did one small schoolwork in C#, that dealt with a [http://dl.getdropbox.com/u/317039/csharp.zip database of students]. Recently, I did another small schoolwork in Java, dealing with a [http://dl.getdropbox.com/u/317039/cricket.zip cricket club]. After finishing each, I was amazed at how much of my code was just boilerplate that I wouldn't have had to write in a more dynamic language.
 +
 
 +
 
 +
 
   −
I have used JavaScript and HTML to build a small web game, Mousebuster (not online, get it from [http://dl.getdropbox.com/u/317039/mousebuster.zip my dropbox].
   
====You and the community====
 
====You and the community====
 
* If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.
 
* If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.
158

edits

Navigation menu