I have always been fond of Java Web Start - I love the idea of clicking on a link in the web browser and having an application downloaded and run by a dedicated tool.
Unfortunately, I started noticing a few constraints in Java Web Start:
- it is optimized for the JVM - but what if you want to deploy a .NET assembly, or a Go executable, or a set of Python scripts?
- it employs code certificates more and more, which are extremely secure and robust - but you might prefer to employ other security techniques (such as HTTPS), especially if you already rely on a secure website
- it is not optimized for GitHub, a brilliant and very popular hosting service for software projects
Of course, there are other great solutions, such as Getdown or ZeroInstall, but I wanted something new and very minimalist, still inspired by the existing ideas. And so I created MoonDeploy.
MoonDeploy is an open source tool designed to address the above issues:
- it is configured via a simple JSON file, which describes the archives containing the files for your application - which can be created using any technology. It also states how to run the app in the different operating systems
- There is no need to compile the app descriptor: just write it with a text editor (or create it with an automated build tool) and deploy it with your packages - for example a single zip file created by Gradle's application plugin
- it is optimized for GitHub: when requested by the app descriptor, it can query GitHub's APIs to retrieve the latest version and compare it with the installed version
- it provides granular versioning - an application is versioned, but its packages as well! Therefore, when an application starts, only new packages are downloaded
- it is written in Go, a native but easily portable programming language. Binary downloads for MoonDeploy are available for both Linux and Windows - and it should run on Mac OS too, if built from sources
- it is open source, hosted on GitHub
This is just a brief summary of its features, but there is more! ^__^!
The new major version, just released, introduces a few enhancements, in particular:
- a GTK+ 3 user interface, based on Glade, for better integration with modern systems and to simplify portability on Mac OS
- Shorter application path for GitHub projects relying on the concept of latest release
You are all invited to visit MoonDeploy's project page, which contains an up-to-date list of its features, in-depth considerations and the syntax reference of the app descriptor format.