Free software, mostly, by a world-class XLIFF expert
I first wrote about Maxprograms in 2007. That was after Rodolfo M. Raya left Heartsome to pursue his activity as the Maxprograms software company. I’ve been meaning to write about his work for a long time now, especially since he decided to put most of, if not all his products on Github, thus allowing translators to get the code, build the things, get the updates and run them on their side, for free.
Maxprograms also offers a lot of technical articles on the subjects of DITA, XLIFF and XML in localization. Check the page here if you are interested.
Most of Maxprograms' products are available under Free Software licenses, and only the packages listed in italics below do not come with an easy to use installer, because in their case an installer is not relevant.
If you check the repository list at https://github.com/rmraya?tab=repositories you will see the following software packages. I added the product page on Maxprograms' site (the "..." links) to make it easier for you to find extra information:
- Eclipse Public License 1.0 (OSI approved)
- XLIFFManager (GUI for OpenXLIFF) ...
- OpenXLIFF (command line utility to create, merge, validate XLIFF files) ...
- XLIFFValidation (web-based XLIFF validation tool) ...
- TMXValidator (validator/cleaner for TMX files) ...
- TMEngine (translation memory engine) ...
- SRXEditor (SRX editor) ...
- MVDServer (simple web server) ...
- MIT (FSF and OSI approved)
- Other (non-free license, but allowing free use, see below)
- Other (non-free license, only subscription, not yet available on Github)
- Fluenta (DITA translation manager) ...
A "normal" freelance translator would use Swordfish as an XLIFF translation editor/project manager. With eventually TMXEditor to work on client TMX, Stingray to align file sets, and TMXValidator to check and clean TMX files.
More advanced users, or PMs would use XLIFFManager or OpenXLIFF, along with XLIFFValidation and SRXEditor.
DITA specialists would use Fluenta, Conversa and KeyzAnalyzers.
Users who want to self-host services would use XLIFFValidation, MVDServer, RemoteTM.
Maxprograms' packages offer pretty much anything a translator would need, in very cleanly packaged solutions, with excellent user support, either community-based (on groups.io), or directly from Maxprograms if you are a subscriber.
And if your main translation editor in not Swordfish, you can still benefit from all the other packages depending on your needs.
If you check Maxprograms’ product page at https://www.maxprograms.com/products/index.html, you’ll find that only Fluenta, a DITA translation manager, is not available as a free to use product. Rodolfo told me that he just did not have the time yet to put it there, but that Fluenta will be available in the future under a scheme similar to Swordfish. Right now Fluenta is a subscription only software.
Swordfish, TMXEditor and Stingray are subscription-based, but allow translators to run the software for free from the source code (RemoteTM is proposed as a "software as a service" hosted by Maxprograms, but you can host it on your own server if you want).
What that means is that the packaged installer comes as a subscription, but if you don’t mind using Terminal to run your software, which is, let’s be honest, not much of a hurdle, you can use the software, access its updates, eventually make modifications for your own use, etc. for free.
The requirements to download, build and run the software are all given on each product’s Github repository, but here is the gist:
- JDK 11 or newer for compiling and building (https://adoptopenjdk.net)
- Apache Ant 1.10.7 or newer (https://ant.apache.org/)
- Node.js 12.16.3 LTS or newer (https://nodejs.org/)
Ant and Node.js are also available from Homebrew (https://brew.sh).
To build the software you’ll need to checkout (clone) the repositories. You also need to make sure that Ant uses Java 11 to build the package.
Rodolfo gives all the steps for building (for ex. Stingray):
$ git clone https://github.com/rmraya/Stingray.git $ cd Stingray $ ant $ npm install $ npm start
Apple used to ship Java when macOS was young. It was in fact one of its selling points. Apple has stopped distributing Java a long time ago and now suggests that users install Oracle Java. Changes in the Oracle license and the availability of free Java distributions have allowed users to still benefit from Java without having to pay for a commercial user license.
Even after installing AdoptOpenJDK, your machine will still prefer to use an older Java version if you have one installed on your machine.
Which means that if you run:
$ echo $JAVA_HOME
in Terminal it won’t point to Java 11, and you won’t be able to build the software.
On my machine, the above command gives
A short investigation shows that the newly installed Java 11 is here:
The way to have
ant use Java 11 instead of Java 8 for the build process is simply to give
ant the right pointer:
$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11-openj9.jdk/Contents/Home/; ant
Once you’re done with the process, you can
Java_Home back to its original value, just to be on the safe side. You’ll need to point to Java 11 only to build the software after a code update (
$ git pull).
Back to the command line
Once you’ve run
$ npm install
you’re free to launch the application any time you want with
$ npm start
That’s it. This procedure works for Swordfish, Stingray, TMXEditor.
You can also create an Applescript that packages the whole process into a nice application that you can use to launch the various packages as you'd launch standard macOS applications.
A simple Applescript to do that could be:
use AppleScript version "2.4" -- Yosemite (10.10) or later use scripting additions set SwordfishPath to "/path/to/Swordfish/local/repository" set myCommand to "cd " & SwordfishPath & "; npm start" tell application "Terminal"'s front window delay 0.1 do script myCommand in its last tab end tell
↑ A non-free license, but thank you nonetheless
The code for Swordfish, Stingray, TMXEditor and RemoteTM is available under the following license (copied here from the TMXEditor repository):
Copyright (c) 2007-2021 - Maxprograms, http://www.maxprograms.com/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to compile, modify and use the Software in its executable form without restrictions. Redistribution of this Software or parts of it in any form (source code or executable binaries) requires prior written permission from Maxprograms. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
What the license means is that you are free to use the code for work and can modify the software locally. But you can't distribute anything. I'm not sure how that covers forks in Github, which are explicit copies of the original code with the implicit possibility to have somebody put modifications on their repository, but I'll leave that part to lawyers, and to Rodolfo.
↑ Electron ?
Maxprograms' applications used to be Java only applications. But Oracle (Java's main caretaker) neglect of GUI libraries led to a not very satisfactory situation for Java GUI application developers. Here is Rodolfo's rationale for his move away from Java based GUI libraries:
Why switch to HTML + CSS for the UI if Java is a cross-platform tool?, you may ask. The answer is simple: Java dropped its major UI libraries.
Initially, Java shipped with AWT, a horrible toolkit with poor design and feature lacking. AWT was so bad, that two options replaced it: Swing (originally developed by Sun and currently used by OmegaT) and SWT (the one I used in Swordfish, developed by Eclipse Foundation).
Oracle deprecated Swing in Java 8 and replaced it with JavaFX. When Java 9 was released, JavaFX was abandoned and development moved to its own open-source project, away from Oracle.
The Eclipse Foundation, which developed and maintained SWT for years, stopped improving SWT when JavaFX appeared. It did not fully embrace JavaFX and SWT is languishing since then.
With SWT dying, I looked at JavaFX. It tries to mimic HTML + CSS without success. Not good enough. The real alternative: adopt HTML and CSS.
I'm not even scratching the surface of what Maxprograms has offered to translators since Heartsome disapeared. Each software package deserves a whole article.
Maxprograms' packages are yet another proof that working on macOS as translators, project managers or localization engineers is possible. And we're lucky that most of the multiplatform packages that allow us to work on macOS are backed by very talented people and communities who do their best to keep us from having to change of platform.
Disclaimer: I am not affiliated in any way to Maxprograms. Just so that you know...