Student Application for Google Summer of Code and Outreach Program for Women
Name
- Verica Lazova
Contact/Email:
- skyra on IRC (irc.debian.org, irc.freenode.net)
- @skyrastr on twitter
Background:
- I am a student in my second year of studies at the Faculty of Computer Science and Engineering, Ss. Cyril and Methodius University in Macedonia. I have experience in C, C++, Java and Python programming and I am also familiar with Bash scripting. I have always been fascinated by the idea of the open source software and willing to be part of such a community.
When it comes to contributing to open source software my experience so far consist of submitting some minor fixes or contributing in mostly non-technical issues. Although I do not have a huge experience working on open source projects I am more than enthusiastic to change that. Regarding this project, I do have experience to some extends in Debian packaging, which I am looking forward to improve during this assessment. My experience mainly consists of making small packages and experimenting with Debian packaging tools such as debhelper and dh. Also I have some background in modifying packages, mostly applying small changes in packages in Ubuntu (examples), building packages (using pbuilder most of the times) and working with patch management utilities such as quilt. Also as a day to day user of Debian based distributions and OpenJDK I am always looking forward to see the best out of Debian. I am eager to learn more on the go, deepen my knowledge and use it to take this project to the finish line, which is why I believe I am suitable for it.
- I am a student in my second year of studies at the Faculty of Computer Science and Engineering, Ss. Cyril and Methodius University in Macedonia. I have experience in C, C++, Java and Python programming and I am also familiar with Bash scripting. I have always been fascinated by the idea of the open source software and willing to be part of such a community.
Project title
- Full rebuild of the Debian archive with the OpenJDK7 and OpenJDK8
Project details:
- Debian has a huge archive of Java packages built with OpenJDK6, however as we know OpenJDK7 although being binary compatible is not source compatible with OpenJDK6. Therefore since the upstream have announced that they are ending their support to Java6, most major distributions have taken action in rebuilding their archives with OpenJDK7 as their default JDK, Debian inclusive. However this has not resulted in being a trivial task, as every change in the API could potentially introduce bugs in packages that are using it, for example encoding issues related to unmappable characters, JDBC compatibility issues, missing classes, changes in the internal API, bugs concerning build automation tools (eg. Maven, Ant...), etc that could make packages fail to build from source. While some of these issues could be fixed relatively easily, others should be taken with great caution, sometimes collaboration with the upstream is necessary. Also there are dependencies on certain packages that needs to be set correctly, for example packages with build dependencies on openJDK should not state explicit version of the JDK, instead they should depend on the default-jdk package.
- I do believe this is an important issue that needs to be taken care of as soon as possible, which is where my contribution could come into place. My task would be finishing the transition to OpenJDK7 and rebuilding the Debian archive from source, with guidance of my mentor of course. The transition itself would not be complete unless all bugs and issues that could come across are reported or even better resolved. Obviously doing some bug tracking and submitting patches and fixes will be again my responsibility regarding this project. Once this process is completed the default-jdk and default-jre packages should point to OpenJDK 7, and other packages dependent on these two should have built successfully.
- However this is only the first half of this project. Provided that the first part is finished with success the main focus will be shifted to OpenJDK8. Although the final release of OpenJDK8 is scheduled for the start of the following year, currently unofficial releases are present, however a Debian package of OpenJDK8 is missing, so this is where my responsibilities regarding the second part of this project begin. My first task would be packaging OpenJDK8 for Debian, in compliance with the Debian standards and assuring its availability in the archive. When it comes to packaging Debian has a strict policy that must be followed, from standard naming convention up to containing all the Debian specific files and directories with precise content and configuration.
- As soon as the newly created OpenJDK8 package becomes part of the Debian archive, another challenge comes into place. That would be rebuilding the Debian archive once again, this time with OpenJDK8 as the default JDK, which means the same tasks done in the first part of the project will be repeated. It is reasonable to assume that this again will not be a smooth process and certain bugs and build failures are expected to appear. Tracking bugs, reporting them and providing patches and fixes is assumed as well and all potential upstream issues of course will be reported directly to OpenJDK. With the second rebuild of the Debian Java archive the goal of this project will be met in its entirety.
Synopsis:
- This project consists of two parts of equal importance. The first half of the project includes finalization of the Debian transition to OpenJDK7, which means managing a complete rebuild of the Debian archive with OpenJDK7 as the default JDK and dealing with all the issues that could come across. By that I consider troubleshooting, filing bug reports, making necessary modifications, fixing build failures and resolving other minor or major problems that are expected to appear due to the changes in the API.
- In the second half, the focus of the project will be switched to OpenJDK8. First some packaging work needs to be done regarding OpenJDK8. As a result, first goal of the second part of the project would be creating OpenJDK8 package for Debian with respect to the Debian packaging policy. Afterwards, the final challenge of the project will be handling a second rebuild of the Debian archive, this time with the final available release of OpenJDK8. Again detecting and eliminating every malfunction that could occur along the way is assumable and expected.
Benefits to Debian
- Debian will benefit from this project in several different ways. First the process of transition to OpenJDK 7 will be finalized, and I will once more highlight the importance of this task as the support for Java 6 is about to be terminated by the upstream. Second, Debian will have the next release of OpenJDK fully packaged and available in the archive. Third benefit and the next logical step would be a second rebuild of the archive with the latest OpenJDK release. What is astounding about that is the fact that this task will be started early with (just before the final release of OpenJDK8), which means the opportunity of finishing it on time increases. Next, many bugs will be resolved along the way which is another good thing, and finally but not less important Debian will get another enthusiastic and committed member of the Debian community.
Deliverables:
1. Debian 8.0 (Jessie) based on OpenJDK7
2. OpenJDK8 package that fits Debian standards
3. Major part of the archive rebuilt with OpenJDK8
Project schedule:
May 01 - May 31: Community bonding period, interacting with the Debian community, gathering more information relevant to the project, going through the Debian documentation in depth, polishing my skills in certain aspects, studying the current situation of the archive, reading bug reports, setting up the development environment, analyzing and planning. By the end of this phase I will be properly prepared to begin with the real work.
June 01 - June 30: Continuing with the rebuild of the Debian archive with OpenJDK 7. Minor issues should be fixed on the go, while major bugs will have their own dedicated time slot. By the end of this period the transition should be completed and only few hard to solve issues can be left out for the time to come.
July 01 - July 10: Fixing major bugs and failures that need to be attended carefully, getting in touch with the upstream if necessary. By the end of June most of the more complicated issues should be resolved as well.
July 11 - July 21: Finalizing the first step and beginning with packaging work. The next task in the sequence is building an OpenJDK 8 package according to the Debian Policy requirements, which will be available and ready to use by the end of this phase.
July 22 - July 31: Updating the default-jdk package to point to OpenJDK 8, and beginning the second transition, building smaller packages first and packages that are less likely to result with a potential building hazards.
Midterm evaluation
August 01 - September 17: Managing a second rebuild of the Debian archive, this time with OpenJDK8, providing patches and closing bugs reports in meantime. Since it is a quite ambitious task to achieve in such a short period, I can not give any assurance that the second rebuild will be completed according to the schedule. Instead I will set my goal as successfully rebuilding a major part of the archive by the end of this time portion.
August 18 - September 26: Giving the project a final touch, testing, adding relevant documentation if required, submitting solutions for any remaining problems, etc.
Final evaluation
Exams and other commitments:
- I do have exams scheduled for the first week and probably the last week of June but no other commitments afterwards.
Other summer plans:
- I do not have any other plans for this summer on my schedule, which means I can devote my time entirely to this project and I will therefore be able to manage at least a minimum of 40 hours of productive work on weekly basis. Only exception will be the exams period when I will have to lower the number of hours I plan on spending on this project.
Why Debian?:
- Debian and its derivatives are by far the best-known and used Linux distributions with huge number of users worldwide, and not Linux only since Debian has been ported to FreeBSD, NetBSD and Hurd kernel as well. Debian has an excellent support for many different pieces of hardware and is the only distribution that is available for every single platform I can think of at the moment. All that said, Debian is a huge project with enormous success which everyone would be proud contributing to. And that is not even the best of Debian, the best part is the Debian community composed of enthusiastic, friendly, hardworking and highly skilled developers, maintainers and hackers, which one could only wish to be part of.
- Are you applying for other projects in SoC?
- No
Patch submitted to Debian relevant to bug #706668
Patch submitted to Debian relevant to bug #698998