JPlag: Looking Back, Moving Forward #2601
tsaglam
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
For the past five years, I have been project lead for JPlag. This time is now coming to an end. When I took over maintenance together with @sebinside (who has recently moved on as well), JPlag was in a different place: maintained, but with development largely dormant. In this post, I will briefly reflect on the past years and discuss what comes next for JPlag.
JPlag Legacy
As you may know, JPlag was initially developed in 1996 by Guido Malpohl at the group of Prof. Walter Tichy at KIT. At the time, Java 1.0 was just released. Initially, it was used internally, but later it was made accessible via a web service, allowing users to submit programs. In 2015, the web service was retired, and the project was moved to GitHub. Over the years, JPlag became one of the most widely used tools for detecting source code plagiarism. However, development was dormant, and in 2020, with the retirement of Prof. Tichy, the maintenance was transferred to us at SDQ (also a group at KIT).
In 2020, JPlag still used its legacy HTML-based UI, which was generated from hardcoded string literals across several thousand lines of Java code (
Report
,AllMatches
,Program
, and more...). By then, several features were already broken, since the implementation relied on browser features that had been blocked for security reasons. The codebase still contained a discontinued web service and was largely legacy code. Due to its age, the codebase contained its own implementation ofHashTable
andArrayList
(both were not available in Java 1.0). JPlag itself worked reliably, but lacked support for modern programming languages and an API for 3rd-party integration. If you want to explore JPlag as it was, we preserved the 2020 version in thelegacy
branch1.The Last Five Years
To address these issues, we began the complete modernization of JPlag, basically reviving the project. Looking back, we have released many significant features. Here are the most important ones:
Here is also a comparison of the legacy UI and the modern report viewer:
However, there were also many internal improvements:
Beyond development and maintenance, my academic research focused on research around source code plagiarism and (automated) obfuscation attacks3. Looking back, I especially enjoyed the discussions at ICSE and the opportunity to deliver a keynote at the MODELS Educators Symposium.
Project Growth in Numbers
In the past five years, JPlag has evolved into a highly active open-source project4, and I am proud of what our team has accomplished. In the following, I want to look at some stats to highlight how JPlag has developed over the last five years:
Click to see how the project popularity grew over time…
(in 2024 someone posted JPlag to Hacker News, where it reached the front page, thus leading to strong growth)
Moving forward
With recent releases, JPlag has reached a stable state with fewer bugs and fewer breaking changes. In the near future, we want to focus on more user-facing features. Stay tuned for future releases. As always, if you have requests or ideas, please open an issue.
As my time as project lead comes to an end, I will pass the torch to @robinmaisch, who has already been an active maintainer. I have no doubt JPlag is in good hands. While I will remain part of the maintainer team, I will step back from day-to-day development and mostly watch from the sidelines.
I want to take this opportunity to thank everyone who joined this journey, especially our maintainer team and student developers (with a big shout-out to @sebinside, @dfuchss, @robinmaisch, @uuqjz, @Kr0nox, and @TwoOfTwelve), as well as all external contributors.
Footnotes
see the https://github.com/jplag/JPlag/tree/legacy branch and the archived website at https://web.archive.org/web/20020221210020/http://www.jplag.de/. ↩
we introduced subsequence match merging (
--match-merging
) and token-sequence normalization (--normalize
, only Java/C++). ↩see https://jplag.de if you want to read up on recent research around JPlag. If you are really interested, check out my doctoral dissertation. ↩
see https://github.com/jplag/JPlag/graphs/contributors for an activity graph. ↩
only counts commits on GitHub (the project was moved to GitHub in Spring 2015). ↩
52 of which are currently open. ↩
Beta Was this translation helpful? Give feedback.
All reactions