W3C Internationalization Checker - An API rewrite in Java

A project proposal to the World Wide Web Consortium (W3C) for the 2013 Google Summer of Code (GSoc) programme.

Author
Joseph J Short, University of East Anglia, UK

Table of Contents

  1. Personal details
  2. Project description
  3. Schedule of deliverables
  4. Open source development experience
  5. Work experience
  6. Academic Experience
  7. Why W3C

This document is structured according to the W3C's application template.

The main project description can be found as an an HTML5 document on an external website.


Personal details

My details

Name
Joseph J Short (Joe)
Email
Joseph.J.Short@gmail.com
Personal Website
Skype ID or SIP address
joseph.j.short on Skype
IRC nick
jjs
Github account
https://github.com/JosephJShort
Phone number
+44 (0) 7837 668932
School Name
The School of Computing Sciences at the University of East Anglia (UEA)
Years completed
3 (2 of my current course)
Programming Languages
Java (Advanced), C++ (Intermediate), SQL— Particularly MySQL and PostgreSQL (Advanced), PHP (Advanced), CSS, XHTML and other Web markup (Advanced), TeX (Advanced), Javascript (Beginner). I should have no problems in adapting to similar languages. I'm also a 'RegExps wizard'!

Background

The following is an exerpt from my current résumé.

A bright and dedicated undergraduate student at the School of Computing Sciences at the University of East Anglia (UEA). Excelling at the undergraduate degree course of Master of Computing in Computing Science and expecting to graduate with a first in the summer of 2015.

Has worked in part-time jobs since leaving school. At the start of a new career in computer science. Seeking a wide range of opportunities and challenges


Project description

In keeping with W3C's proposal template, I've hosted my project description on an external website formatted as an HTML5 document. Note that I do not own a website, so I've hosted the file using Google Drive.

Proposal history and potential mentor

The project proposal is based on an idea from the W3C's ideas page entitled "Internationalization checker overhaul". I developed my proposal with feedback from Alexandre Bertails following our discussions on the IRC (at irc://irc.w3.org/#w3c). After submitting my first draft to a W3C mailing list, I revised the proposal to match W3C's application template. My second draft has gone through the same process.

Alexandre Bertails is the most likely person to be my mentor.

Anticipated challenges

I'd like to succeed with all the main deliverables, with a provision of quality, robust code. But most importantly I want to provide the W3C with something they can use. My requirements analysis in week 1, and my exchanges in week 7 should minimise the risk of failing at this objective.

Keeping in contact with my peers and mentors presents a challenge. I think that establishing a steady presence on the IRC server shall mediate this challenge. I'll achieve this by setting up a home server with an IRC client idling in the server or by enabling an automated connection when my laptop starts. In addition: I'll check my emails regularly, and make use of other tools such as Skype or VoIP where appropriate.


Schedule of deliverables

Milestones and deliverables schedule

Week 1 - June 17th - Familiarisation
The First week shall be used to: download and run the existing code; set up a development environment with the right tools and technologies; conduct research about the purpose and problem domain of the i18n Checker; and create a rough design for the new Java API.
The deliverables are: As a product of the first week's work, my mentors shall be able to check my understanding of the project, and ensure that I have the right goals in mind.
Week 2 - June 17th - Design and preparation
In week 2 I can begin to move towards a working software project. I'll start mapping my design to stubs of classes and methods. And I'll address any issues with I find with my design in this process (from experience, I find that the first design is never enough). Deliverables are: By the end of week 2 I shall be ready to start on the first sprint of implementation— or I may have already started.
Weeks 3 to 6 - July 1st - First sprint
With the introductory tasks completed, the stage shall be set for my first sprint of implementation. In this three week period I aim to produce as much working code as possible. I want to achieve a good bredth and depth of functionality to show off for the mid-term evaluation (i.e. a large body of 'half-finished' work, and a demonstratory vein of 'very-finished' work).
Week 7 - July 29th - Week of mid-term evaluation
Early in the week, me and my mentor shall have a long meeting to discuss the progress of the project. We'll prepare matierals and compare notes for the purpose of the mid-term evaluations (due in on August 2nd). At this time I can be informed of any major changes I need to make to my work. This is another chance for my mentors to ensure I'm heading in the right direction.
Weeks 8 to 14 - August 5th - Second sprint
My first duty shall be to implement the changes and suggestions that arise from my discussions in the week of mid-term evaluations. Then I can start on the second sprint of implementation. This is a six-week period of intense work; by this time I should be fully cogniscant of what I have left to do, and it will be my perogative to get it done! The deliverables of this phase are the same as the major deliverables of the project. I shall work towards sequential completion of these deliverables, and shall provide weekly reports for my mentors.
Week 15 - September 16th - Last week
The 16th is Google's suggested 'pencils down' date. In accordance, I shall use the last week to make sure that I leave the i18n Checker in a good, robust condition. Activities for the last week are: 'scrubbing code', integration and acceptance testing, updating the documentation and preparing the project for future developers. The provision of this week helps to ensure that I'll be able to achieve my goal of leaving the W3C with something they can use.
Further arrangements
I shall spend a minimum of 30 hours a week on the project. I'll manage my time flexibly, working at home and on my laptop at school.

I shall establish a steady presence on the W3C IRC channel (irc://irc.w3.org/#w3c) and ensure that I'm accessible to my mentor. I shall be proactive in keeping my peers up to date and in asking them for help or clarifications.

Other commitments

Summer research placement

I have applied for funding for an 8 week summer research placement in my school. If I get this funding there will be a four-week period where the projects overlap (that's the first four weeks of the GSoC project). I don't expect this overlap to be prohibitive; It is true that my productivity will decrease during this period, but I'll still be able to work my minimum of 30 hours in a week. I have experience with long shifts and long weeks in my previous part-time work.

I will respect the wishes of the W3C and my mentors in this matter. If it comes to an ultimatum, this project is my preference.

I have no other commitments this summer. I'm very enthusiastic about putting a lot of time in to this project; the alternative is working for about 35 to 60 hours a week in my catering job. Instead I'll have the opportunity to work on this fantastic project, and to garner the respect of members of the open source community!


Open source development experience

I do not have any experience in contributing to open source projects; this is very much to my detriment of my character. As I become an able and experienced software engineer (and ultimately a professional), I'm keen on creating a presence in the open source community. Indeed, the opportunity to begin contributing to open source is one of the driving factors behind this proposal.

I have a great admiration for open source projects and public, collaborative development. Having been a long time user of free software, I feel that I owe the various parts of the open source community a debt of gratitude. Most prominently: The Apache Software Foundation, the W3C, the Software Freedom Conservancy, and the developers of GNU. I learned to program after having learned about web development and design; so I owe a particular debt of gratitude to the W3C for my use of their validators and their huge body of standards and information on best practices.

Armed with the success of this project, I shall have the credentials to explore the other projects of the W3C and become a valued comitter. Ultimately I want to find a project that I love and become a long term contributer.


Work experience

Please consult my current résumé. Note that I do not have professional experience in developing software; in lieu I have provided written references from my professors that attest to my ability.


Academic Experience

Academic Performance

2010–11 Access course: Applied Computing Science with a Foundation Year.

A year of introductory theory, programming, math, writing and teamwork. Finished with an overall grade of 68%.

2011–12 Current course: Master of Computing in Computing Science.

An undergraduate master’s course with a wide coverage of topics in the field of computer science. Finished my first year with an overall grade of 75%. Here is a list of my units of study and individual grades:

2012–13 Current course: Master of Computing in Computing Science.

I've the following provisional coursework marks for my current year:

I’m also taking a unit called Theorhetical Computing, which is assessed with a test and an exam only.

In the next two years

My study shall be focused in these areas:

Extra curricular

I'm an acting student representative within my school. For this duty I gather opinions (suggestions, complaints, etc.) from my fellow students, and dicuss them with the academics in a number of meetings. I conduct these duties with a constructive and professional attitude. I've met many successes in the role, and I enjoy the work very much.

As a vivacious first-year student, with an abundance of free time, I partook in such adentures as: mountaneering, skydiving, rockclimbing, paintballing and archery. As a second-year student I've more committed to achieving high grades, and I have very little spare time. But I take pleasure in my work, and I live by the motto of "nothing is gained from nothing" (ex nihilo nihil fit).

References

I've collected four written references from my professors at UEA.

First reference

Referee
Dr Joost Noppen, Lecturer in Software Engineering
Interaction
Dr Noppen runs a unit called 'Software Engineering 1' which I completed at the end of the spring semester this year. The unit was centered around a 14 week group project. Participants had to enact the requirements analysis, design, implementation and testing phases of a typical software life-cycle. The product specifications were set by a real business partner, Aviva plc, the UK’s largest insurance provider. My team submitted a web application that comprised over 23k lines of code, and documentation of over 60 pages. The teaching of the module was focused on: the principles of software engineering, design descriptions and theory, some of the tenants of good design, and an introduction to modern development tools.
Reference
[Questions written by me, answers by Dr Noppen]

Does Joseph understand the principles of software engineering?

Joseph is an excellent student and he has grasped the concepts and principles of software engineering very well. During the module and in his course work you can clearly see his understanding of important concepts such as modelling, analysing, developing and testing a software system. He has demonstrated a solid understanding of the modelling formalisms and technical documentation aspect and he has managed to combine this with the practical skills to deliver a quality working system and infrastructure.

How successful was his group project?

The group project of Joseph was very successful. The project involved creating a software system from a requirements specification to a fully working system including design, documentation and testing. The end result was a high quality system that was the result from a solid development process. During the project Joseph also demonstrated skill in facilitating development with tooling and infrastructure and moving beyond the brief in requested functionality and development practice. Overall the project was completed very successfully.

Has Joseph shown capability to work in a team of developers?

Joseph has demonstrated excellent capability in working in a team of developers. The project teams consisted of groups of four students and Joseph performed very well in his group. There was a clear coordination and division of tasks present and the group worked in a very effective manner.

Second reference

Referee
Dr Tony Bagnall, Senior Lecturer
Interaction
Dr Bagnall has taught me on two units. The unit 'Data Structures and Algorithms' gave an introduction to complexity analysis, sorting algorithms and a large variety of data structures. And the unit 'Programming 2' covered advanced object oriented programming with Java and C++ and an introduction to Matlab. You might say that Dr Bagnall has taught me the 'nuts and bolts' of computer science!
Reference
[To be received]

Third reference

Referee
Dr Graeme Richards, Lecturer in Computing Sciences
Interaction
Graeme is my academic advisor and has taught me since the start of my academic life. He teaches on lots of introductory material; he's greatly accountable for my success at UEA.
Reference

I have been Joseph’s academic advisor for three years and have taught on several of his modules. He has always been an extremely hard working and conscientious student and achieves excellent academic results. In addition to his academic work Joseph contributes to the school through active membership of the School Board and the Staff Student Liaison Committee.

Joseph’s academic performance to date has been outstanding; I am confident that he will continue to work at his current level and that this will ensure that he graduates with a First Class Honours Degree.

Fourth reference

[To be confirmed]


Why W3C

The W3C has a special significance to me since I've been a school-boy. I wasn't a great achiever at school, but I took an interest in making web pages in my spare time. This hobby developed in to an interest in to web technologies, and then web developement. I started programming with PHP and using databases. And then I started to look at object-oriented programming languages. The W3C had a cardinal role in this process. Their huge body of free standards, specification and documentation of best practices focsued my development, and taught me to work in a conscientious and precise way.

Since then, the W3C has been a continuing theme in my education. In my access course, one of the first things we were taught was HTML (perhaps to encourage a developmental process similar to my own). We had to observe the restrictions of a certain markup specification, and use the W3C validator to check our work. In the first year of my course we were taught more about background on XML based markup. We also taught a history of the science; I wrote an ecyclopedic article about Tim Berners-Lee as part of my coursework.

I was delighted to discover that the W3C was a mentoring organisation for GSoC. If I get the project, I'll really feel like I'm standing on the shoulders of giants. I think it's wonderful that I have the opportunity to become a member of the organisation.