GSOC 2012/Student Application Vipulnsward/Java API-ABI Checker

Contact Information

 * Name: Vipul A M
 * Email Address: vipulnsward@gmail.com
 * Telephone: +91-8149204995
 * Blog URL: aknv.workpress.com
 * Freenode IRC Nick: vipulnsward

I will be blogging about the project over at aknv.wordpress.com

I previously contacted fedora-java mailing list for more feedback

Why do you want to work with the Fedora Project?
Fedora seems to have a large community of developers associated with it. My past encounters with them at various FUDCon's showed out their spirit and enthusiasm. Having worked in the past evangelizing Open Source, and doing some contributions, it makes sense to enter Fedora Project focusing more over Contributing as a Developer

Do you have any past involvement with the Fedora project or with any another open source project as a contributor ?
I have been associated with Diaspora, contributing to their Android App, as also PodUptime.I happen to have created a sharing framework for Chamba Open Movie Project {chambaproject.in} which was by creating git-torrent{Adding torrent framework over jgit-Java Implementation of Git}. I also release various demo's and codes over at github.com/vipulnsward

Did you participate with the past GSoC programs, if so which years, which organizations?
This is my first try at GSoC.

Will you continue contributing/ supporting the Fedora project after the GSoC 2012 program, if yes, which team(s)/area(s), you are interested with?
Yes. I am interested to work with the Java Packaging and SIG group to provide better infrastructure for Java on Fedora

Why should we choose you over the other applicants?
I am willing to be associated with Fedora Project, for contributing more to the Java Environment. I have been a Java Developer for the past 6-7 years, and code mostly in it. So working over Java infrastructure makes sense to me. Considering my past involvement with Open Source Projects and Java Experience makes me suitable to complete the solution.

Proposal Description

 * An overview

Libraries written in Java add, remove and modify their public interfaces from time to time. This is normal, but currently it is very hard to guess effect an update of library to new version will have on rest of the system. What is needed is a tool that would be able to tell us that "With update of package java-library to version 2.0, function X(b) has been removed. This function is used in package java-app has changed" and so on. This project intends to extend this basic functionality from python-javaclass, and create a pkdiff that would facilitate check over at package level, that consist jars. The Project also aims to provide various switchs{xml, etc} and a DB that would reflect this breakage.


 * About Breakages

The solution aims to address various breakages that happen during jar upgrades. More discussion about these breakages can be found at these discussion thread form java-devel. More sophisticated overview rests at which list basic Compatibility issue that will be addressed.

Some of them are listed below
 * Removed Elements (methods, classes, interfaces)
 * Problems with Data Types
 * Interfaces
 * Changed attributes
 * Added/removed exceptions
 * Overridden methods
 * Moving a method up class hierarchy
 * Problems with Implementation
 * Changes in decompiled binary code


 * The need you believe it fulfills?

This will help developers understand the breakages in jars/packages {by listing absent/incompatible method/class changes} and their severity in an efficient way, helping them to concentrate on the development instead of breakage resolving. It will provide outputs{json/xml} that could be used for the other purposes. The pkgdiff aims at helping to make sure the packaged jars are compatible with the environment. The Web Solution aims at creating a repository of package and their breakages for references to all.


 * Any relevant experience you have?

I have been working as a J2EE developer for the past 6-7 years. My work can be found at my github profile. Along with this I have been delving to Java Environment internals and other etiquette for jar upgrades for the past month. I have been receiving feedback for the same from Stanislav


 * How do you intend to implement your proposal?

I will be enhancing python-javaclass, to incorporate relevant breakage issues aimed at jars. Adding more switches to it and being more verbose relevant to "javachecker" to be implemented. Then on creating a standalone web-solution, integrating javachecker. Using the javacheker to create pkgdiff

I am also exploring for finding out the possibilities of a better solution.


 * Final deliverable of the proposal at the end of the period


 * Enhancements to python-javaclass to accommodate relevant breakage issues for jar updates
 * Extra switch additions to python-javaclass
 * Web-App to reflect jar diffs and breakages
 * Repository of packages and breakages
 * pkgdiff
 * python-javaclass package


 * Timeline

April 6- April 23 (Pre-coding Phase)

Understand the python-javaclass better and fix out the breakages to be issued by it. Discuss more on the verbosity and required output formats. Understand the FAS integration/ pkgdiff better. Fix other features relevant to python-javaclass

April 23- May 21 (Community Bonding )

Discuss pkgdiff better. Take feedback over proposed solutions and deliverables. Start creating fixes for addressing breakages. Discuss usage scenarios and outputs from them. Understand the fedora java packaging needs better, addressing needs towards compatibility issues. Propose the architecture for feature additions. Discuss the Repository needs better.

Also explore to help understand its applicability to the solution.

May 21- July 8 (Coding Period )

Finish required subset of breakage issues address. Provide necessary output switches to python-javaclass. Layout essentials for creating the Web-Solution. Discuss and finalize the Packages Repository Structure and creation for the same. Create a deliverable to address basic breakage issues targeted at jars/fedora packages. Understand and create layout for jar based package examining. Create pkgdiff from javachecker Lay down Web-Solution infrastructure towards the end

July 9 (Mid-Term evaluation)

Deliver basic "javachecker" and pkgdiff

July 9 -August 12 (Final Polishing)

Package javachecker. Finish with Web-Repository solution. Fill in with proof of concepts{jars} to the Repo. Layout the FAS integration if possible. Work over wishlist from community feedback

August 13 - August 20 (Pencils Down )

Write down manuals and in-code documentation. Code Cleanup and package finalization

August 20 - (Post GSoC )

Work over FAS integration and Maven Artifact addition to Web-Solution. Try addressing more issues from breakages and provide suggestions based over it. Address Community Wishlist.

already has maven integration, so if it works out to be good, this will be trivial.


 * Any other details you feel we should consider

I am also exploring possibilities from which is a java implementation and already has maven integration but lacks most of the desired switches and breakages.

Exams: I will be having my Final Year Exams around the last week of May, which will consume my time.

Link to python-javaclass

Github Profile describing my previous work

Chamba Project/ DebConf/ Blender / Diaspora* Contributions

Have you communicated with a potential mentor? If so, who?
Yes I have been discussing my idea with Stanislav Ochotnický