-
Notifications
You must be signed in to change notification settings - Fork 1
MoonDeploy for developers
Software deployment is a very general, platform-specific activity: from simple zip files ready for download up to vast app stores, each solution has both benefits and disadvantages to balance.
Existing solutions such as Java Web Start, Getdown and Zero Install are brilliant ways of installing applications from the web browser (and not only) to the user's directory - each technology focusing on specific aspects.
MoonDeploy is a lightweight, minimalist deployment tool automating downloads and updates of zip packages containing application components; moreover, it provides a centralized, per-user directory called App gallery, where all the apps installed via MoonDeploy reside.
As a paramount feature, it is designed to be absolutely optional:
-
Users having MoonDeploy will quickly & easily install and run new applications - via web browser, IM messaging, e-mail and any other medium enabling the transfer of a JSON descriptor
-
Users not having MoonDeploy (yet! ^__^!) will manually download the zip files for an application, as if MoonDeploy was never invented: there is not a dedicated binary package format.
-
Minimalism: no need for XML files or for dedicated package builders: just write a JSON file having .moondeploy extension (and usually named App.moondeploy), then deploy it along with the zip files making up your application - for example, the zip files created by Gradle's application plugin.
-
Versioned descriptors: MoonDeploy evolves and introduces new features in its app descriptors - always providing backwards-compatibility.
-
HTTPS-based security model: no need for certificates and signatures - which is very usual in real-world situations, especially open source projects. Of course, using no certificates implies that HTTPS is strongly suggested to achieve security - and MoonDeploy actually shows a security warning when a user tries to download an app without using SSL.
-
Technology independence: MoonDeploy is written in Go, so it is deployed as a native executable on every supported operating system - it reads an application descriptor, checks for updates and runs the application - which can be written in any language!
-
GitHub-friendly: GitHub is a brilliant platform for software development; applications deployed on GitHub can be automatically updated to their latest versions just by following a very easy naming convention for the BaseURL in their app descriptor.
-
Simplicity: installed apps reside in the per-user App gallery, organized by host and base URL path. Running an application is as easy as making MoonDeploy open a .moondeploy file - which can be simplified by the file association tool provided by modern desktop environments; likewise, uninstalling an app is achieved by deleting the related directory. MaanBloom, a dedicated tool, simplifies these tasks even further.
-
Extensibility: MoonDeploy is also a Go library which you can use to create a custom installer - not necessarily tied to the default app gallery; for example, you might want to create a more intriguing, app-specific loader
-
Granular versioning: applications are versioned, but versioning can be applied to one or more of their packages as well - in order to download only the required application components
-
HTTP file server: by running:
moondeploy serve {port} {dir}
MoonDeploy will start an HTTP server, listening on the given port and serving files from the given directory. This enables easy testing of new applications.
A client can stop it by accessing its /moondeploy.quit path.
- Logging: MoonDeploy logs almost everything to file, in great detail
-
MoonDeploy-Gradle: a Gradle plugin to automate the creation of application descriptors - in particular, you can inject Gradle variables into a descriptor
-
MoonDeploy-Ant: a set of Ant tasks mainly dedicated to developing a custom solution based on MoonDeploy and Ant (including Maven build processes)
-
MoonDeploy-JS: a pure JavaScript library employing AJAX to retrieve files and MoonDeploy descriptors from GitHub
-
MaanBloem: a ScalaFX app simplifying app management for MoonDeploy
MoonDeploy is also a Go library, enabling you to create very customized installers! Of course, you will very rarely employ such a feature, but it is available should you need it.
The Go library can be installed via the usual go tools:
go get github.com/giancosta86/moondeploy
go install github.com/giancosta86/moondeploy
For further information, please refer to the GoDoc page.
The wiki includes a detailed user guide with screenshots.
A list of FAQs is available in the wiki.
-
Chronos IDE, the visual development environment of a programming language dedicated to Discrete-Event simulation - created by MoonDeploy's author! 👻
-
GraphsJ, a didactic ScalaFX application and framework for running graph algorithms
-
KnapScal, a ScalaFX didactic application for the Knapsack problem