Name: Yingnan Ju
Background: I am a second-year graduate student from Peking University in China, and I have been using Linux distributions for more than one year. I think I can make the best applicant because of the following reasons:
- I am familiar with object-oriented languages: 5 years of C# experience and one and half years of Java experience.
- I am familiar with git.
- I have a lot of Windows Phone App experiences, about both programming and UI design. I can make a good-looking and user-friendly GUI if needed.
- Although I am kind of a newcomer in the Linux world, I wish to be part of it and make my own contributions with full enthusiasm.
Other experience: 8 months of Oracle internship.
Project title: Recursively building Java dependencies from source
Project details (Copied): Many Java projects use a combination of JAR file dependencies from other Java projects. In some cases, third party JARs are also used to provide custom tools for the build process (e.g. custom ant tasks or maven plugins). Can the entire heirarchy of dependencies and build tools and their transitive dependencies all be built from published source code? If not, we can not be certain that a particular dependency JAR is clean, free of malicious code, easy to fix or adapt for future Java versions. This project aims to develop automated mechanisms for cataloguing the portfolio of Java libraries on sites like github and the Maven Central Repository, creating a database of dependencies, mirroring their source repositories, removing binary JARs from their source trees and trying to build them using symlinks to JARs found in Debian or built by the same recursive process. This project may be partially automated using a tool like Jenkins. Data for some of the dependencies can be harvested from Maven pom.xml files.
Synopsis: Build Java dependencies from source
Benefits to Debian Many Java projects use a combination of JAR file dependencies from other Java projects, but whether these JAR files are clean or available may be unknown. This project aims to develop automated mechanisms to build Java dependencies from a central repository to improve the security and reliability.
Deliverables (Copied): A full suite of tools for automating this process: a user could insert the name of some JAR in a form, the tool would study the JAR, find the source, recursively build everything and inform the user whether or not the JAR they want to use can be built without any dependency on any JAR that is missing source code.
- Before May 19:
- Get ready and read relevant documentations. Think over the whole architecture, list all possible potential problems or challanges, and give planned solutions or workarounds.
- May 19 - June 23:
- Create a basic suite of tools for automating. List all to-do functions.
- June 23 - June 27:
- Mid-term evaluations.
- June 28 - August 11:
- Finish the full suite of tools. Testing and debugging.
- August 11 – August:
- Scrub code, write tests, improve documentation, etc.
- After August 22 (Official deadline):
- Finish all documentations, perfect all functions and add new functions need in spare time.
- Before May 19:
Exams and other commitments: Toefl
Other summer plans: I have an intern job for about 32 hours per week.
Why Debian?: Debian project is one of the largest open source community in the world, and the value of such a community is far beyond its product, the rock-solid Debian operating system. I would like to get closer to the project and participate this diverse community.
Are you applying for other projects in SoC?: Yes