New Haxelib Proposal

For Haxe3, we are looking at doing an update to haxelib. This page is to clarify what development is needed for the effort.

Haxelib Repository

The new Haxelib source is temporaly hosted at back2dos / haxelib on github.

Packaging Format

  • Switch from Xml to Json
  • Force semver versioning scheme
  • Native Code Metadata (ask Cauê)
  • Ensure multiple library admins are allowed, including changing ownership to somebody new.
  • Do we allow dependencies to be specified as "git" or "dev"? Could be useful for local/private repos.
  • Any "installtool" info

Server API

  • Allow deprecating a project
  • Config to decide where to store .zip files, and which database to connect to. (Set the defaults for running local server)
  • Start counting downloads and updates. (stores timestamp and basic environment info (version of haxe, OS info: Windows/Mac/Linux, 32bit/64bit/ARM))

Command Line Tool

Commands in Haxelib 1.04

 Usage : haxelib [command] [options]
 Commands :
  install : install a given library
  list : list all installed libraries
  upgrade : upgrade all installed libraries
  update : update a single library
  remove : remove a given library/version
  set : set the current version for a library
  search : list libraries matching a word
  info : list informations on a given library
  user : list informations on a given user
  register : register a new user
  submit : submit or update a library package
  setup : set the haxelib repository path
  config : print the repository path
  path : give paths to libraries
  run : run the specified library with parameters
  local : install the specified package locally
  dev : set the development directory for a given library
  git : uses git repository as library
  proxy : setup the Http proxy

New Commands

  • passwordreset
  • profile (change password, email etc)
  • convert (convert old haxelib.xml into new haxelib.json)
  • deprecate (deprecate an existing project that belongs to you)
  • server - shortcut to starting 'nekotools server' with the haxelib site. (Does nekotools server support file uploads?)
  • installtool (?) (haxelib install munit; haxelib installtool munit; # munit is now installed to the system path)
  • --server=http://haxelib.localserver:2000/ or something similar?

Changes to existing commands

  • install - add ability to install many libraries at once, or install all libraries from a HXML file. With no arguments it installs all libraries listed in all hxml files in the current directory. Also allow installing from a HTTP/HTTPS zip path. (Should install also check for updates to already-installed libraries? I think so -Jason)
  • upgrade / update - make synonyms. Without arguments, they update all. With arguments, they update the listed libraries.
  • submit - switch to new server, new packaging format
  • config/setup - are these the best names for these options? Could we combine them?
  • git - allow supplying a path to "checkout".
  • dev,git - Make sure it reads haxelib.json and installs any dependencies.
  • path - ensure that "dev" and "git" paths load the dependencies.


  • Allow comments (using wiki accounts? Or using disqus?)
  • Count downloads. (displayed as a graph with time axis, like the one in Google Play)
  • Support links - (stack overflow? forum? mailing list?)
  • Lists (popular etc)
  • Versioning info
  • Documentation for every version, not just the latest


  • Haxe compiler - make sure it supports the extra hxml syntax for git and dev. (It only has to read "-lib erazor:git" and ensure erazor is set to version "git". The haxelib install will worry about the rest of the syntax.


  • Keep existing database and API endpoint in tact.
  • Keep the old version of haxelib packaged and available for those who still want to access it.
  • Create clean database and API endpoint.
  • Get MassiveLib (mlib) library and helper tool to be compatible with new version.
  • Write wiki page explaining migration. Update documentation for "using haxelib". Write wiki page for accessing Haxe2 libraries.

Outside the scope of this update

  • Graph of num installs. (I'm a big fan of this, but we can launch without it and add it soon after)
  • A Haxe Version Manager, similar to RVM for Ruby.
  • Improving the documentation output. Perhaps chxdoc?
  • Custom protocal handler ("haxelib://mysite/" installs it for you) - this would need a GUI, and integration for each OS (or each browser? not sure). It could be added later if someone else volunteers :)

Notes & Questions

  • The haxelib tool must not depend on any external libraries, so it can be compiled with nothing except the standard lib.
  • Does this apply for the website as well?
  • If we are encouraging use of StackOverflow for support, should we start sending these questions to the mailing list also? Maybe as a "daily digest"?
version #17969, modified 2013-03-15 09:22:01 by skial