elmarmalade icon indicating copy to clipboard operation
elmarmalade copied to clipboard

emacs-lisp version of the marmalade package repository

= The Marmalade Service - A package repository in EmacsLisp =

This is an EmacsLisp package to reimplement the [[http://marmalade-repo.org|marmalade-repo]] with Elnode. Natalie Weizenbaum wrote the original [[http://marmalade-repo.org|marmalade-repo]] with node.js and mongodb.

=== How to ===

  • Need an account? - make an issue on the [[http://github.com/nicferrier/elmarmalade|Github]] and Nic will send you a mail with a confirmation link
  • Need to delete a package? - it's possible through the API with the marmalade-client package
  • Need to upload a package? - use the API throught the marmalade-client package

=== About ===

This reimplementation uses an [[http://elnode.org|Elnode]] application dealing with a filesystem of all packages. It's basically a file server app. It also follows the microservice model.

This packages includes conversion tools from the mongodb to the filesystem.

These are the things marmalade should do:

  • construct the package archive file from the package directory structure ** the package archive is an index of all the packages in the repository.
  • allow the archive to be updated with uploads
  • provide the ELPA {{{/package/}}} HTTP API for downloading packages
  • provide HTML front end to the {{{/package/}}} HTTP API
  • provide EmacsLisp front end to the {{{/package/}}} HTTP API ** this will likely be a separate project
  • allow users to {{{/register/}}} in order to upload packages
  • provide {{{/profile/}}}s for people who have registered
  • allow registered users to upload and upgrade packages ** preferably from inside their emacs ** and securely
  • allow registered users to be added as owners

==== Other marmalade things ====

It would be nice if marmalade provided better package discovery.

It would be nice if marmalade stored licences in a clear way and allowed you to use only safe licences if you wish.

==== How it works ====

The package is contained in the top level. Elpakit is used to build it.

{{{marmalade-repo-test}}} is a test directory containing packages used by the test scripts.

{{{marmalade-repo-test/possible-packages}}} contains stuff we don't have tests for but probably should have.