Extension:VisualEditor/Plugin for source code editing (SyntaxHighlight GeSHi support)

IN DRAFT; NOTHING TO LOOK AT RIGHT NOW.

Name and contact information
Name: Tongbo Sui Email: beanixster@gmail.com IRC or IM networks/handle(s): Stonebird @freenode Location: Beijing, China; GMT+8 Typical working hours: 9 am - 5 pm

Synopsis
The plugin will include: A separate input interface dedicated for code editing. To prevent it from stealing focus from the main content, the interface will be an overlay layer on the editor. The use of separate interface will help the author focus more on solely the code piece, without worrying about changing other parts of the article by accident.

In this interface:
 * A simple grammar checking mechanism. Checks some fundamental grammatical errors such as having a { without closing it, having a with a trailing period and nothing else, having solely a pair of brackets, etc.
 * An indentation correction tool. The user can click on the button to evoke this tool, which will perform indentation formatting on the codes.
 * A beautify code tool. This is different from indentation correction since it will reorganize code formatting, including indentation. Sometimes this tool can be bothering since it changes the codes into a single format, which could be inconvenient for the author, although being good for readers.

Anyone who needs to put source codes in their article will benefit from this plugin.

Deliverables
An iterative and cooperative approach is carried out in this project. In the beginning phase, I should discuss with mentor about the project’s logical structure and form of presentation (UI, feedback, etc.). Then it is necessary for me to discuss and settle down with mentor on what coding practices, if any, should be enforced; whether it is a particular API, or avoiding use of certain codes. After that I shall proceed to coding phase. Then the code will be evaluated. The project will be maintained by me afterwards since I’m the author of it.

Tentative Timeline and deliverables:

 * Week 1:
 * Community bonding period; get to know the community and with mentor; start reading documentations and prepare for coding


 * Week 2:
 * Agreement with mentor on project’s logical structure, form of presentation


 * Week 3:
 * Agreement with mentor on coding practices
 * Study of existing code/API
 * Deliverable: document of logical structure (flowchart), UI mockup, details on coding practices; this concludes works of the first 3 weeks.

Starting from Week 4 (June 17) until deadline for evaluation: Coding period:
 * Week 4, 5:
 * Create basic UI for testing purpose. Create a functional prototype which at least includes the grammar checker. Better if the prototype also has a functional indentation corrector.
 * Deliverable: Code; a working prototype of grammar checker.


 * Week 6, 7
 * Begin to work on the prototype of indentation corrector, if haven’t got a chance on it during week 3, 4. If a corrector has been made during week 3 and 4, discuss with mentor about possible additional features and implement those; also do more testing on the existing prototype in search for serious bugs. Push myself a little bit to try to get hands on developing the code beautifier.
 * Deliverable: Code; a working prototype added with indentation corrector


 * Week 8, 9
 * Work on the code beautifier. This is based on the codes of the other two tools already prototyped; however this requires a lot more work to make the beautifier work just right. Code up a working prototype and test it.
 * If possible, deliverable will be the code, with all three tools.

Mid-term evaluation


 * Week 10, 11
 * Finalize the prototype. Add in all codes for desired features.
 * Test the code and eliminate serious bugs as many as possible.
 * Deliverable: Code of project, except UI.


 * Week 12, 13
 * Start working on building the UI, and on connecting UI components with the tools. Start work on documentation.
 * Deliverable: UI code


 * Week 14, 15
 * Usability testing, fix minor bugs, build improvements
 * Deliverable: Final code, documentation


 * Sep 16 (Week 16):
 * Pencils down. Taking a week to scrub code, write tests, improve documentation, etc.


 * Sep 23:
 * Submit final evaluations

About you
We don't just care about your project -- you are a person, and that matters to us! What drives you? What makes you want to make this the most awesomest wiki enhancement ever?

You don't need to write out your life story (we can read your blog if we want that), but we want to know a little about what makes you tick. Are you a Wikipedia addict wanting to make your own experience better? Did a wiki with usability problems run over your dog, and you're seeking revenge? :-) What does making this project happen mean to you?

Participation
We don't just want to know what you plan to accomplish; we want to know how. Briefly describe your work style: how you plan to communicate progress, where you plan to publish your source code while you're working, how and where you plan to ask for help. (We will tend to favor applicants that demonstrate a clear vision for what it means to be an active participant in our development community.)

Past open source experience
Do you have any past experience working in open source projects (MediaWiki or otherwise)? If so, tell us about it! If you have already written a feature or bugfix in a Wikimedia technology such as MediaWiki, link to it here; we will give strong preference to candidates who have done so.

Any other info
Please add any other relevant information -- UI mockups, references to related projects, a link to your proof of concept code, whatever. There are no specific requirements, but we love to see people who love what they're doing. Show us you're excited about this project and have an interest in the background and are considering how best to make your idea work.