Ideas List for Google Summer of Code 2009
ES operating system has been accepted into the Google Summer of Code™ 2009 as a mentoring organization. Here is the list of ideas for the ES project. We welcome your application for GSoC 2009 with any of the ideas listed here or with your ideas related to the ES operating system. Note most of the code in ES are written in C++, and you need to have a good understanding of the C++ programming language.
If you are looking at participating in ES through GSoC 2009, please feel free to post your questions to our discussion group, or to send your questions directly to the administrator. Note #esos at freenode may not be not very active because of the different time zones.
A component object binding runtime implementation for ECMAScript and C++ based on Web IDL
- Keep up with the on-going Web IDL standardization efforts, and update ECMAScript interpreter and the ES kernel as well.
- Enhance esidl Web IDL compiler to provide better warnings, error messages, etc., for the developers.
Recommended readings
- Web IDL W3C Working Draft (Editor’s Draft)
- ECMAScript Language Specification
- ECMAScript 3. 1 Language Candidate Specification DRAFT
- Stanley B. Lippman, Inside the C++ Object Model.
- Mendelsohn, N. Operating Systems for Component Software Environments. In Proceedings of the 6th Workshop on Hot Topics in Operating Systems (HotOS-VI), pp. 49-54, May 1997.
- Szyperski, C., Gruntz, D., Murer, S. Component Software – Beyond Object-Oriented Programming. 2nd ed., Addison-Wesley, 2002.
Web IDL is a new standard interface definition language used in HTML 5 and other web application APIs for ECMAScript and Java. In ES, we are also using Web IDL to define interfaces for C++, and as the result, C++ software components developed for ES can be easily and seamlessly controlled by ECMAScript. By this way, we believe we can efficiently expand what we can do with Web applications in the longer term.
Note that the implementation of our ECMAScript interpreter esjs is not for the optimal performance. We are rather concentrating in the object binding runtime implementation between ECMAScript and the other native software components. Porting the existing, open source ECMAScript VM implementation like V8 to ES is another interesting project idea if you want to try.
A TCP/IP stack implementation based on design pattern
- Refine and test locking mechanisms around conduits.
- Simplify the excessive four layers of Muxes for TCP and UDP to a single Mux.
- Define socket APIs based on W3C Web Socket and other specifications so that they can be directly used from ECMAScript, and update the stack implementation accordingly.
Recommended readings
- W. Richard Stevens, TCP/IP Illustrated, Volume 1: The Protocols
- W. Richard Stevens, and Gary R. Wright, TCP/IP Illustrated, Volume 2: The Implementation
- Hermann Hueni, Ralph Johnson, and Robert Engel, A Framework for Network Protocol Software
- W3C Network Communication API
- Maurice J. Bach, Maurice J. Bach Design of the UNIX Operating System.
- The design of the ES operating system's TCP/IP stack
Because of the great series of books by Stevens, we can explore the design and implementation of the TCP/IP protocol stack more easily than before, but it is still very very difficult to fully understand TCP/IP. We believe reimplementing a TCP/IP stack using the design patterns helps fully understanding TCP/IP, and we are currently using the Conduit+ model. There are really many uncompleted tasks in this area, and you will work on supporting the socket interfaces in Web IDL, testing and fixing the current implementation, and a lot more. If you are seriously studying the TCP/IP network architecture, this project would be an interesting one for you.
Lively Kernel on ES
- Incorporate the portions of the HTML engines to ES that are necessary to run the Lively Kernel.
Recommended readings
- Sun Labs Lively Kernel
- The Lively Kernel (video)
- Scalable Vector Graphics (SVG)
- HTML 5 Draft Recommendation
As a whole picture, running the Lively Kernel on top of the ES operating system is a very close image of the future operating system we are thinking about. To do that, the interfaces defined in the HTML 5 specification need to be the standard interfaces for the ES operating system, and currently we have just implemented CanvasRenderingContext2D interface using Cairo and FreeType. There are really a lot more works need to be done, and we hope you would make a steady progress in this area since this project will continue even after GSoC 2009.
Note: Since ES operating system is released from Google, to accept your changes, we will ask you to fill out the Google Individual Contributor License Agreement ("CLA") and submit it electronically before you will become a member of this project.
The CLA is the form we ask each external contributor to fill out to make it safe for Google to accept your code. Google CLA form is here:
http://code.google.com/legal/individual-cla-v1.0.html
This form is required not because of Google Summer of Code but because ES operating system is released from Google. The CLA does not transfer copyright: the contributor retains his or her ownership in the work. The CLA just grants Google a "perpetual, non-exclusive, royalty-free, etc..." right to use the work, sublicense it, and so on.
If you have any questions, please ask away.