~~~~~~~~~~~~~~~ Anant Narayanan anant@kix.in ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~ Web-Based IDE Framework ~~~~~~~~~~~~~~~~~~~~~~~ Greetings! I wish to take on the development of a web-based IDE (Integrated Development Environment) framework with specific support for the C programming language as part of Google's summer of code 2006. The basic idea here is do develop a platform that would provide all the basic tools of a classic IDE, and then provide a plugin architecture to extend that platform across other languages. Think of it as 'the Eclipse of the Web'! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Benefits to the Open Source Community ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Anywhere, Anytime coding for C developers (and eventually other languages). It's like carrying your development environment with you. 2. A web-based IDE means very low pre-requisites for the end-user. All you need is a JavaScript enabled web browser and an internet connection to start coding. 3. Through-the-web editing offers opportunities for live collaboration with other team members on open-source projects. I'm very excited about this idea, since there is no web-based IDE in-use at present, which makes this a novel idea. The completion of this project opens up the scope for development of plugins that will extend its functionality to other languages as well. The potential is limitless! Much like how the Eclipse framework made a mark in the desktop IDE segment, this IDE will be the first, one-of-a-kind application that will kick start the web-based IDE segment. ~~~~~~~~~~~~ Deliverables ~~~~~~~~~~~~ Required ~~~~~~~~ 1) A solid framework that includes a well-designed plugin architecture for a web-based IDE. The framework includes a web service on the server-side and an AJAX application on the client side. 2) A plugin to the framework that will allow for development of projects that use the C programming language. Optional ~~~~~~~~ 3) A plugin to the framework that will allow version control of documents that are generated using the IDE. 4) Documentation and tutorials that elaborate on the usage of the IDE and development of plugins for it. ~~~~~~~~~~~~~~~ Project Details ~~~~~~~~~~~~~~~ As mentioned earlier, the first goal of the project would be to develop a framework for a web-based IDE. The server-side of things will be coded in PHP, as a web-service. The client side of things will be coded in XHTML/CSS and JavaScript to provide a rich user interface. This, in combination with the use of XML to transmit data between the server and client, would result in the project being termed as an 'AJAX' application. By the 'framework', I mean a set of components that are core to every IDE. This includes a set of functions that will implement basic IDE features like syntax highlighting, code completion and code verification. The framework will also include calls that will provide for compilation and/or execution of programs. A framework for debugging/testing of programs will also be integrated. The framework will also have a well-defined method of creating plugins for the IDE. These plugins are what will actually utilize the framework and put the IDE to full use. Plugins will use functionality provided by the framework to implement support for a certain language or to extend the feature set of the IDE. The second goal of the project would be develop a plugin of each type. One for adding support for the C language, and another for adding version control features to the IDE (optional). A limitation with the current plan is that the server that will host the web service must be powerful enough to run several compile processes at once. Also, if the users require that the programs be built on different architectures, a server farm comprising of several high-servers of different architectures will be required. I strongly believe this project has a lot of scope and will make a big impact on the open source community and change the general perspective on what an IDE should be. ~~~~~~~~~~~~ Related Work ~~~~~~~~~~~~ The Eclipse framework is the closest equivalent of the proposed project. While Eclipse is a Desktop IDE, this project will be a web-based one. The framework-plugin architecture of Eclipse is what this project aims to emulate. This way we can offer support for multiple languages and feature additions. http://www.eclipse.org/ ~~~~~~~~~~~~~~~~ Project Schedule ~~~~~~~~~~~~~~~~ This project is planned to be split across 7 major phases: 1) Analysis and Design (May 23 - June 10): This phase involves detailed analysis of the requirements of the project, as well as the development of the logic of the entire application. This includes development of schemes for plugin development and investigation of which web service is most appropriate. Project infrastructure (CVS Repository & Website etc.) will also be setup during this phase. 2) Interface Design (June 11 - June 25): This phase involves the development of a skeleton user interface. This includes writing CSS style-sheets and JavaScript files that will provide an IDE-like interface on a client's like web browser. Basically, the visual skeleton of the IDE is formed here. 3) Server side programming (June 26 - July 15): This phase involves the development of PHP scripts that will form the server-side of the application. The best way of compilation and/or execution of scripts on the server will be looked at and implemented. 4) Client side programming (July 16 - July 31): This phase will involve using the server-side scripts and integrating them with the client-side interface to complete the AJAX application. Basic features such as code completion and syntax application will be developed during this phase. This phase concludes the development of the framework. 5) C language support (August 1 - August 10): The plugin for the C language support will be developed during this phase. Since the plugin architecture will be fully developed by now, and the IDE framework would be ready, this process is not expected to be very lengthy, and will most probably consist of just authoring language definitions and directions for compilation and execution of C programs. 6) Testing and Wrap-Up (August 11 - August 21): All components of the completed IDE will be tested. Sample projects will be created to display the capabilities for the IDE. ~~~~~~~~~~~~~ Justification ~~~~~~~~~~~~~ Such a project proposal may raise two fundamental questions: 1) Why a web-based IDE? 2) Isn't the project too ambitious for the SoC program? These questions have been answered in detail at: http://www.kix.in/soc/web-ide.html ~~~ Bio ~~~ I am a second-year undergraduate at the Malaviya National Institute of Technology, Jaipur, India. I am pursuing my B.Tech. in Computer Engineering at the institute. I have been passionate about computers since my childhood and have been a free software advocate for around 2 years now. I am an active developer in several open source projects, the most prominent of which are GNU Parted and PHP-GTK 2. My involvement in many such open source projects has brought me knowledge in general software development principles. This also means that I am very comfortable and experienced with the open-source development methodology and environment. I was offered CVS commit access to both the PHP and GNU Parted repositories within a month of my involvement with them, and I believe this goes to show the quality and timeliness of my coding efforts. I am also a system administrator at my university, and have had the opportunity to develop several applications that automate several tasks at the institute. Applications that I have developed include a content management system, an online assignment evaluation system, and a library management software. Such projects at my university has given me an extensive knowledge of the PHP language and web design principles in general. I have also worked with XML extensively, and am the author of several PEAR (PHP Extended Application Repository) packages. What I'm trying to say is, that technical skills is definitely not the area that you'll find me lacking in. Lastly, I would like to express my deep commitment to this project and free software ideals in general. I am really passionate about this project idea, and would really like to see it go somewhere. This is something novel and fun, something that I will cherish for life. I guarantee that I will definitely continue to actively develop the IDE and it's documentation long after the SoC program concludes. You can find more details about me and the projects that I am currently involved in, at my website. Please don't hesitate to contact me if any part of this proposal is not clear to you, or if you need me to write some sample code. Thank you for considering this proposal, and for your time! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ My CV : http://www.kix.in/soc/resume.pdf My Website: http://www.kix.in/ This proposal is also available at: http://www.kix.in/soc/web-ide-c.txt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~