View Single Post
  #1 (permalink)  
Old February 8th, 2020
nmatavka nmatavka is offline
Join Date: June 14th, 2015
Posts: 10
nmatavka is a great assister to others; your light through the dark tunnel
Default WireShare 6 released! (Please consider donating)

Hello, world!

As WireShare's first developer, maintainer, and Grand Pooh-Bah, it is my honour and privilege to announce that the source for WireShare 6.0 has now been committed to the SourceForge Git repository, and that a new release (for all platforms---see below for caveats) is imminent. (Download and donate at

As you can see from the version number, this is a major release, and as such, it contains a number of critical updates and fixes. It is therefore strongly suggested that you download and install it as soon as you can. Because of developer attrition, this is also the first (and, I hope, only) version of WireShare that required money to produce. We therefore request that you read the following, try our software, calculate how much it's worth to you, and donate at least part of that number to our Indiegogo. Those among you with Java skills might also consider joining the project. Given that nearly all our funds go towards labour costs, a few expert volunteers is all we need to continue our stewardship of WireShare and the Gnutella network. Without further ado, on to the changelog.

The foremost new feature for this release is that it now runs under Java 11 and better. Although this might at first sound like a minor bug-fix, its significance can not be overstated. In particular, "dependency hell" is no longer a nuisance for Unix users who previously experienced it when trying to install WireShare. This issue arose because Oracle Java 8 (until now a prerequisite, or "dependency", for installation) was not always present in the package manager, and even if it was, it sometimes failed to install or function, or caused system instability because of its obsolescence. WireShare 6.0 obviates this problem by introducing support for all modern Java Runtime Environments (Oracle, OpenJDK, Zulu, etc.)

For everyone else, making the switch has resulted in WireShare 6 being far less sluggish than its predecessor, consuming less memory, and connecting much faster. Here at the office, for example, it shows 5 bars within thirty seconds of startup. Also, the new JDK deployment process means that users need not download a separate Java package before installing; the WireShare installer now includes everything it needs. Although credit for these improvements goes to the "upstream" developers (not least, the OpenJDK community), making WireShare compile in this new version of Java took a lot of work.

Passive alerts (what Google calls "toasts") are much improved in this version as well. The passive alert, in the form of a textual notification in the corner of the screen that takes no input and vanishes automatically, was first popularised around the time of OS X Mountain Lion, Ubuntu Precise Pangolin, and Windows 8, but it dates back to long before 2012. Prior to its invention, it may be noted that events taking some degree of input would trigger a pop-up dialogue box, while those that didn't would typically play a sound; some workflows were sorely missing an unobtrusive, intermediate level of user interaction.

Because of WireShare's usage pattern, we (as well as MSN Messenger) were arguably pioneers in this new kind of notification. As such, we were forced at the time to "roll our own" implementation on the app level; being in Java, it never really "meshed" with the look-and-feel of any particular operating system, it was sluggish and buggy to boot, and when Mountain Lion and its peers came along, we were left to contend with app-level and system-level "toasts" side by side. The fix has been a long time coming, but WireShare now fires system-level toasts on every OS.

PACKAGING: The typical distribution method for Java 8 software was to require the user to download a so-called "Java Runtime Environment" (which contains a "Java Virtual Machine", and to distribute software separately. With Java 11, this has changed. Developers are now advised to bundle a separate Java Virtual Machine with each individual program they distribute, stripped down to only those functions that the program needs, so that the user is not obliged to install anything. Unfortunately, Oracle does not provide a utility to bundle software for distribution, and they removed support for the ones they used to provide (javapackager, jarbundler, jpackage). This leaves us in a quandary; there is a third-party program to do the job on Windows, though. Unix users are unaffected (but need to wait for a package to become available---there's already one for Arch/Manjaro).

In the meantime, the expert user can install WireShare manually from a .jar file. As (previously) usual, he will need to provide his own Java Runtime Environment, version 11 or better this time. OpenJDK, Oracle, and Zulu JRE's all work fine.

To install manually, first download the LIBRARIES.ZIP and WireShare6.JAR files from the SourceForge server. Unzip the Libraries file to a directory of your choice. Navigate to the folder representing your operating system (either "Windows", "OSX", or "Unix"), then open up a command prompt and issue the command

> java -XshowSettingsroperties

Take note of the line that looks like

> java.library.path = /usr/java/packages/lib

Copy all the files in the Windows, OSX, or Unix folder into the folder on the right side of the = sign (for example, /usr/java/packages/lib). Then, all you need to do is issue the command

> java -jar /path/to/WireShare6.JAR

And you will be running!

KNOWN ISSUES: With the move to Java 11, there have been a few structural changes. On Macintosh, WireShare no longer looks "inside itself" to find a few DYLIB files that are necessary for it to function, so they now need to be put in a designated directory. Furthermore, some proprietary Apple libraries in the code were "walled off", notably com.Apple.eawt.* Anything that relied on this was "stranded", leaving the whole code base unable to compile. We've managed to turn the fatal error into a bug: WireShare 6 now runs on Mac, but dialogue boxes won't open.

This just goes to show that while software in Java ideally follows the Write Once, Run Anywhere philosophy, it's really Write Once, Debug Everywhere in practice. We decided that holding back release until the problems were fixed would be grossly unfair to our Windows and Unix user base, especially because it's been mitigated to some extent on Mac as well. Still, a product having so much as one outstanding bug is a clear indication that it's Not Ready for Prime Time; would-be developers should take note that the v6.0 source in the Git repository is in no way final and can change without warning.
Reply With Quote