This is part three of a three-part story about our Subversive Project, as we celebrate its 8th birthday. This concludes our talk with Igor Vinnykov, who led Subversive from the beginning.
Read Part OneRead Part TwoSo Subversive became an official Eclipse project once your project proposal was accepted?
Eclipse Foundation created an SVN repository for our project (by the way, it was one of the first SVN repositories available on Eclipse), and we migrated the source code to this repository. Then Eclipse’s legal team started analyzing the components we used. Of course, we used only open-source components, but they had to be compatible with Eclipse requirements to be accepted. The legal team mentioned that the SVNKit library, which we used for communication with SVN, had an incompatible license, and the alternative JavaHL library also had components with incompatible licenses. This meant that we were in a situation where we couldn’t host critical project components in either SVN library on Eclipse because of their license problems. This problem blocked the project migration and progress for several months. Unfortunately, the problem was out of our control, and we spent a lot of effort to resolve it together with Eclipse Foundation.
How did the community react to this?
It was hard for Subversive users to understand these problems because everybody knew that the project is open-source and has open-source dependencies, and people didn't care about the differences between EPL, GPL and LGPL licenses. It was complicated to explain it the right way to the community, as people were waiting for the new Subversive releases and the project’s inclusion into the standard Eclipse distribution. With the help of our supporters, who discussed the problem to the community, and we managed to move things forward. In the end, we agreed with Eclipse Foundation on the distribution model that allows us to start developing the project on Eclipse. It assumed that the Subversive project itself was developed on and distributed from Eclipse servers, but SVN libraries (called SVN connectors) were developed on and distributed from Polarion servers. The same model also works now because of the same license problems. We are frequently asked about the distribution model, so now you know the reason for such project organization.
What was changed in the project after its migration to Eclipse?
Eclipse is a big ecosystem of the different projects. To be a good Eclipse citizen, a project team needs to follow the defined guidelines, cooperate with other projects, and build a healthy community. After the Eclipse migration, we started to focus more on this. We created a few integrations with other products and communicated with the CVS client team about ideas to improve general interfaces used to work with source code repositories in Eclipse. In other words, we became more involved in the development community that worked on the Eclipse infrastructure. By the reasons related with the license issues, we couldn't make Subversive a standard SVN client, but we found another way to be closer to our initial goal. Every year, the new version of Eclipse IDE was published, where Eclipse member projects can participate in the so-called Simultaneous Release that simplifies the project’s distribution. This means that the new version of Eclipse included links to a single update site unifying member projects, so users can install the required projects with a single mouse-click. The Subversive project has been included in the Simultaneous Releases since 2008.
What goals did you have after the project migration to Eclipse?
According to Eclipse guidelines, all projects migrated to Eclipse should pass the incubation phase, which is proof that the project is stable and mature. The same procedure is used for new and existing projects - they all need to start a new life on Eclipse with a beta version. We had Subversive version 1 before the migration but had to start Subversive with a 0.7 release of Eclipse, defining that the project is in the incubation phase. Our primary goal was to satisfy all of the requirements to graduate the project from the incubation phase. Unfortunately, it took much longer than expected because of the same licensing problems I have explained earlier. Of course, we implemented new features and made new releases, but they all had the 0.7 version because the project was blocked in incubation by licensing issues. This situation was pretty painful for us because we couldn't move the project forward. Fortunately, Eclipse Foundation eventually allowed us to graduate the project from incubation, where we made the 1.0 release that unblocked the project’s progress.
How did the project graduation help Subversive?
Before the graduation, new users considered the project with the 0.7 release as unstable and unworthy of their attention, especially since there are other choices. Now, this psychological barrier is removed, and people began to think about Subversive by its features, not only by its version number. The number of Subversive users continuously grows, and it grows faster than we ever expected. In particular, during the last couple of months, Subversive became the most popular project on Eclipse Marketplace among a thousand of other projects, and we are very proud of it.
What are your plans for the future?
As usual, this year Subversive will be a part of Eclipse Kepler Simultaneous Release, so we are working on this right now. Our goal here is to support all new versions of SVN that will become available up till the Eclipse Kepler release. Also, we are waiting for the SVN 1.8 release that should include the new communication library. Our Eclipse licensing problems were caused by the current library version that has incompatible licensing with Eclipse requirements. The Subversion team confirmed that one of their goals is to replace the library in 1.8 release and thus resolve the licensing problem, so our community looks forward to getting the SVN 1.8 release soon. It should help us to remove the remaining formal barriers we have with the Subversive project, as it is now on Eclipse.