Monday, September 28, 2009

Initial Project Plan for OpenSource Development

The Project

The project I will be working on is Processing.js. It is a Mozilla project in which the main purpose is to allow people to create 2D or 3D graphics on web using embedded JavaScript and Canvas.

Not many graphics designer is fluent in using programming language to create graphics on web. This project will help them easily create the visuals on web with one platform. I don't have much knowledge of JavaScript. I expect to learn a lot more about JavaScript and using it to develop an easy tool for users to use.

Project tracking

I will post my updates of the project through this blog. There will be three major release dates within the coming three months: Week of Oct 19 (0.1 Release), Nov 16 (0.2 Release) and Dec 7 (0.3 Release). I'm also expecting to continue working towards 1.0 Release in the next 4 months.

Plan for 0.1, 0.2, and 0.3 releases

0.1
I will be implementing a few functions: trim(), split(), splitTokens(), append(), arraycopy(), match() and matchAll(). This will get me started with processing.js.

0.2
I will fix the bugs in 0.1 release and implement more functions. Possibly implement the rest of Easy functions listed in task list as well as other medium/difficult functions. I would like to contribute a large portion of codes in this release.

0.3
I will fix the bugs in 0.1 and 0.2 release and will be working on the 3D features listed in task list. This will get me familar with 3D programming on web.

Learning

The main language for this project is JavaScript. But I am unfamiliar with the language. My main research will be coming from the JavaScript API and other JavaScript information page. 3D programming will also be challenging. Although I have studied in Game Programming previously, it was mostly on DirectX. So there will be quite a bit of learning OpenGL in this aspect.

Helps Needed

I am a Windows guy, and very unfamiliar with Linux and Mac OS X. The only experiences with Linux are compiling small C/C++ codes remotely to the Matrix server Seneca provides through telnet and ftp. I would appreciate some help in these areas.
I am a detail oriented type of person. Whenever I am encountered with errors or wrong outputs, I can usually pin-point the causing problem easily. I would love to help others into fixing their problems, as I can learn their codes in return.

Risks

Except for the programming language and compiling platform learning, I also have a tight schedule this semester. I am used to just finish programming codes and submit them. Only when I have spare times, I will do some decorations and comment my codes. But since I'm working with an actual project out there in the web, I need to blog about it to gain exposure in the public. This requires me to actually divide some time to talk about what I have done. Just like writing journals, except that I have never written a journal entry before. This will be challenging, as well as very rewarding. I am very excited about having an experience with the open-source community.