Whats up with Hatim!

life, musings and rants of a Pakistani Software Developer

Project Summer Hibernation

Posted by hatim Wed, 09 Apr 2008 06:33:00 GMT

following is a repost of my SoC proposal for OpenNMS

Synopsis

OpenNMS currently still depends on some PostgreSQL-specific behavior (especially in stored procedures) which keeps it from being database-independent. Although OpenNMS has been slowly transitioning its code to use Hibernate instead of direct JDBC calls, but there is a lot of code still using JDBC. The following is a project proposal for Google Summer of code 2008 to the OpenNMS project. This document gives details of project methodology, time lines, and risks.

in short

  • The aim is to complete hibernate transition for the entire OpenNMS project. Author's aim is to complete major tasks by Dev-Jam 2008.
  • The deliverable are code, test cases and documentation. OpenNMS installation documentation which deals with OpenNMS install with MySQL and perhaps a few other OSS Databases will be part of deliverable.
  • Applicant has been a part of OpenNMS user community for a year now and has genuine interest in Java EE software development(due to his present job and future education and career directions)
  • Applicant will be sharing code samples before project selection to show mentors that the applicant has sufficient background in Java EE software development.


Further info and code samples will be available at http://code.hatimonline.com/opennms

Who Am I

My name is Shahzada Hatim (aka geoaxis on #opennms). I am a 25 year old computer system engineer from Pakistan, currently part time certificate course student (http://www.vu.edu.pk) and a prospective Masters student for different IT programs in EU (starting in Aug, Sep 2008).I work for a small Belgian company as open source software developer. I am also a returning summer of code participant. I was selected for a project by Internet2 in 2007. I started work on the project and made some headway with it. Unfortunately timing constraints and a work emergency on my then job took precious weeks off my schedule and I was unable to deliver the project's Midterm goals. I dropped out of the program.

Interestingly one of the things which I was involved during my work emergency was to replace Jff-NMS with OpenNMS and to use it to monitor a SAN setup (previous setup had a server meltdown causing the emergency) at a major telecoms client's site. At that time the job I was doing was part support and part software development. Since last six months I have joined a core development company working on Java EE and specifically Spring/Hibernate. I have gained considerable know how for using these technologies.

Methodology

I am resigning from my full time position in May 2008 as I am already getting pre-admission offers from universities in Germany and Sweden. Since their course work will start in Sep/Oct 2008 I will have considerable time on my hand to work for SoC. Therefore I will have no commitments other than SoC and 3 credit hour distance education Masters level certificate course.

I would divide my tasks into practical and attainable parts along with the help of my mentor. My experience with Spring/Hibernate leads me to believe that this tasking would be trivial but it would ideally be done with deeper discussion with the mentor (before the project starts). Good thing about this project is that it can be done in small incremental steps which are virtually independent of each other and is unlike some other projects where there can be a lot of dependency on past work.

The time before SoC session 1 would be used to do administrative work and revision of technologies. The major coding portion will take place in 3 time slots which would account for 7 weeks. I intend to participate in Dev Jam through telecommute (1 week). Rest of 4 weeks are dedicated as cushion time and for testing.

Committing code in small chunks would be the best practice for this project. Not only would daily commits be helpful for everyone to ascertain the progress of the project, but also when these changes make it to trunk they will have more chance of getting tested and reviewed by OpenNMS community.

I have sufficient knowledge of Java EE to start working on this particular OpenNMS project. My preferred work platform is my 17inch Core 2 Duo, 3GB Ram Acer Laptop running latest Ubuntu Linux and Eclipe Europa with WTP. I have an optimal DSL connection at home for the purpose of daily checkouts and commits. I have my own Virtual Private Server with an irssi screen session running (and joined on #opennms) so I am always available on irc. Of course I would be thrilled to be part of the OpenNMS’s internal jabber list as well. Weekly/Bi-Weekly meetings through text or voice chat could also be helpful.

I will be blogging extensively about my development activities on my blog with tags of ‘opennms' and ‘soc’.

Why I want to do this project

  • Brush my Spring/Hibernate skills, Java EE skills.
  • Get up to speed with latest (but necessary) Spring/Hibernate techniques and be part of a team to design and code OpenNMs with those techniques.
  • Get a chance to contribute to OpenNMS community.
  • to get Google SoC T-Shirt.

Project Schedule

April 7 – April 21
Placing samples on-line, revising proposal, reading up texts such as ‘Spring in Action’ and ‘Java Persistence with Hibernate’

April 21 – May 25 (5 weeks)
Week 1 Finalize/Tweak Goals, Review Code to identify tasks for Slots.
Week 2-4 Learn unknowns like Maven, OpenNMS patch how-to, revise Spring/Hibernate (+ other theory like DAO pattern and how it’s used in OpenNMS)
Week 5 Complete all design aspects/discussion with Mentors.

May 26 - July 07 ( 6 weeks)
Week 1-2 Time Slot A
Week 3-4 Time Slot C
Week 5-6 (wrap up, cushion, testing)

July 7 - July 14 ( 1 week)
Midterm evaluation

July 07 - Aug 18 (6 weeks)
Week 1-3 Time Slot C
Week 4 Dev Jam
Week 5-6 (wrap up, cushion, testing, finalize documentation)

Aug 19 - Aug 25 (1 week)
Final Review

Deliverable

  • Complete Hibernate Migration with DAO and Service (mock) tests.
  • Running OpenNMS on MySQL only (and perhaps some commercial database like Oracle or MSSQL)
  • Replace all stored procedures with equivalent constructs (in terms of relative performance)
  • Documentation and tests to accompany code (an embedded DB would be used for persistence tests).

Bonus Goals

Since major portion of OpenNMS code will be reviewed, I am also suggesting that code overhaul with respect to spring framework can be a bonus goal. This could include useage to latest Spring 2.5 techniques and annotation based Hibernate mappings.

One tangible bonus goal can be to benchmark the performance of OpenNMS after code changes. I am confident that there won’t be any negative
performance impact but it would be good to have statistics. For this open source Java profilers may be used. This is strictly in the case
where all tasks are done well ahead of schedule.


Risks

Every project has some risks involved. It is wise to identify them first and follow a strategy to avoid them.

One risk could be any prior commitments which cause hindrances in SoC. Since last year I got stuck in a work related issue which made me leave SoC, this year I am choosing to only focus on SoC (and my Summer course). I have absolutely no commitments (at least till end of August) in the coming summer

Another risk can be lack of expertise. Though I don't claim to be an expert in ORM and dependency injection frameworks, but for the past 6 months I have been working on commercial applications which use Spring/Hibernate. I am willing to back my claims with working code which I am currently adapting to use maven and should be available on my site running under jetty—maven plug-in (similar to OpenNMS bundled jetty).

In short I am pretty confident that I am a strong candidate to work on SoC project for OpenNMS. Thank you for considering my application for your project.

Posted in | no comments | Tags , , | atom

Trackbacks

Use the following link to trackback from your own site:
http://hatimonline.com/blog/trackbacks?article_id=project-summer-hibernation&day=09&month=04&year=2008

Comments

Leave a response

Leave a comment