Spark - Developers needed

You might have noticed that last official release of Spark client was more than two years ago (January 29, 2017). Many have questions about the future of Spark, so i decided to explain a few things and also draw some attention to this project.

TL;DR: there are no active developers working on Spark for some time and there is a number of big issues in the current code blocking new releases.

A bit of history:

Spark has been abandoned a few times in the past. When JiveSoftware released its source one user (student at that time) took the lead developer role - Andrew Seymour (winsrev). Daniel Henniger (jadestorm) also helped to fix a few things. Andrew left the project after he has finished his studies and didn’t have time for side projects. Then there was a team of Walter Ebeling and his two programmers Holger and Wolf. They were using Spark in their company, so there was an incentive for them to make it work better. I think they pushed Spark to 2.6.0 branch and a few releases past that, getting rid of proprietary parts like Synthetica skin and introducing free JTattoo skin framework. Wolf has contributed Roar plugin for popups and actually made a few fixes many years later. Tim Jentz also came along (i think he was an intern and this was his test project). He added a few features and started working on a multi window chat support, but unfortunately never finished it. Probably they switched from using Spark (or XMPP altogether), so they stopped contributing to this project. Not to diminish they work though. Without them there would be no Spark at all. Then cstux took the reign for a short time and also helped push Spark forward (i think there was at least a few betas and maybe 2.6.3 release). There were (and still are) a lot more contributors. As you can see on GitHub activity page (and this only shows history after switching to GitHub from local SVN repo). I can mention Konstantin, Alexander, Mircea. Also Michael Klein did a lot recently for Client Control features (and just a pleasant person to work with). But then there was a long pause. cstux wasn’t active on Spark project anymore, there were a few fixes being added to the source and a few more posted on the forums or in the tracker, but no releases. Actually i have started using nightly build versions in my company, as they were stable enough and had fixes for some annoying bugs in 2.6.3. It was like that for quite a few years (2.6.3 was released in 2011).

Then came April of 2015 and release of Openfire 3.10.0 version (major version after a year old 3.9.3 with some important changes). And it broke compatibility with 2.6.3. Spark was just too old to work with new TLS standards. Although there were workarounds to use Old SSL 5223 port (or keep using old Openfire). But nightly builds were working fine. So, i decided to step in, take the Project Lead role and release the 2.7.0. Now, i wasn’t a developer (and still am not). But i knew internal kitchen for 10 years, i knew current issues, i have posted hundreds of tickets in the tracker, thousands of posts in the forums helping users or working with past developers. And it worked. It was also fun to try new things. Then i started looking for all not yet submitted patches, testing them, even fixing or adding some minor stuff myself (still very proud of an option to use Spark’s version as a resource). Every few months i would release a new minor version with a few more fixes or new features. A few users started to contribute also.

Next year we have released 2.8.0. Spark is built upon Smack API library. But it was using ancient version of Smack at the time. So 2.8.0 introduced newer Smack version and also switch to Java 8 (both in building and bundling). Huge work has been done by @guus (who is also one of the main developers of Openfire). This release was a bit controversial. As new Smack introduced more strict way of dealing with bad certificates. So forums were flooded with users using IP address or wrong server name to login and getting errors. But Spark became more secure this way. Also, it became apparent that Spark needs a better mechanism to deal with certificates. In 2.8.1-2.8.3 a few new options were added to ignore certificate errors for those users who couldn’t fix their setup.

In 2017 we decided to add Spark to Google’s Summer of Code program with a task to create a certificate store management and GUI (and a few more related things). A few students competed and we have picked @Alameyo. Throughout summer he has created a base for this functionality. Although it took longer to finish this work, but now it is in a usable form (with a few quirks still needed to be fixed). As it was an ongoing work, we couldn’t make a release with an unfinished feature.

Earlier this year Ignite Realtime team decided to move from Ant build system to Maven and Spark was selected as a first project (as being fairly less complex than Openfire) to test this path. @guus again did a lot to make it happen. This of course also broke lots of things and made release even less possible.

During the last few years @Flow (and probably Guus also) made an attempt to update Spark to the latest Smack version. Which in turn introduced a few more issues, which are yet to be fixed.

Granted, with bigger team and better management this probably could be avoided. By having separate branches and porting new fixes to development branch, releasing new 2.8.x bugfix releases. But there are no human resources and time for this. Also we kind of hoped for these issues to get resolved faster, so decided to put everything in the current branch (2.9.0).

You can see what major issues are still present and blocking the release (in my opinion) in this list that i have also pinned to Spark Dev forum - https://discourse.igniterealtime.org/t/issues-blocking-2-9-0-release Some issues were already fixed and removed from that list. But sometimes it feels like you can find an issue anywhere you poke…

So, my main point of this post - Developers needed
Although we still get small patches here and there, but they kind of go in vain as we can’t do a release. Spark is an old application with a lot of inefficient, deprecated and just confusing code. It also uses old Java Swing technology for its GUI. There were talks at various points to maybe move Spark to AIR, then JavaFx, but that would be an enormous task and it never went past talking. All this is probably making Spark not that attractive to Java developers who want to contribute to open source.

But Spark is still used by many users around the world. It’s UI is clean and nice (and in my opinion better than in some other clients). So, if you are a developer who looks for a project to participate, feel free to do this, contact us in the forums or in the group chat. No matter the size of your contribution (small patch or reworking of a bigger part), you are welcome. Maybe you want to learn Smack. Then fixing Spark’s issues with that library could be a good start. Of course, we would be especially pleased with someone able to devote more time to this project and help fixing all current outstanding issues (we are not offering pay though). Maybe even becoming new Project Lead.

For other release announcements and news follow us on Twitter

6 Likes

I want to contribute as a developer . hope you get in touch with me !
gorav.dhamija@gmail.com .

Well, you are already getting in touch :slight_smile: Btw, we are not offering pay, if that sounded this way. This is an open source community with volunteers. If that’s ok with you, then you can check that document i have linked above with major issues and try to fix one of them and provide a patch. This could be a way to start contributing. Or you may ask in the chat https://www.igniterealtime.org/support/group_chat.jsp or in the forums and we will try to help you get up to speed with Spark and explain about current issues. We usually don’t collaborate via email.