Skip to content
emacs-lisp version of the marmalade package repository
Emacs Lisp HTML Other
Find file
Latest commit ad50d9c @nicferrier Merge pull request #103 from nex3/name-change
Thanks Natalie. All Done.
Failed to load latest commit information.
demo-multifile fix the makefile
marmalade-repo-test more doc changes
recipes 2.0.20 implements owner adding via API
specialpages Update copyright dates in HTML
static include "package of the week"
.gitignore update the demo-multifile pattern
Dockerfile fix the Dockerfile ref to the deploy file
Dockerfile-marmalade-deploy.el bump the version
Makefile fix the Makefile tests
README.creole Fix my name.
admin-tasks.creole add new html page and re-org the doc
boot.el fix the boot
crontab-db-backup add a backup db shell script for cronning
deploy whoops! docker pushing to wrong tag. much confusion. fixed.
dummy-package.el update the dummy-package after much testing
elnode- add auth, package handling and a first test for package handling.
front-page.html Update copyright dates in HTML
login-page.html Update copyright dates in HTML
marmalade-api.el switch the admin package used for authorization.
marmalade-archive.el Fix misspellings of Marmalade
marmalade-customs.el add removal infrastructure.
marmalade-demo.el bumping versions of demo to test
marmalade-mongo.el provide a callback for when we're done
marmalade-service.el Fix my name.
marmalade-tests.el needs elnode-testsupport
marmalade-users.el add marmalade-set-auth to change a user's auth.
marmalade-vars.el add new marmalade-vars and move the page-header vars to it
mongo-convert updates to show how to do stuff.
mongo-convert.creole details on the mongo conversion
news.html Fix link in news.html
nginx-cache-kill add nginx-cache-kill script
nginx-cache-report report on nginx cache
nginx.conf fix #23 with 20m limit for nginx, also change the backends
package-page.html Update copyright dates in HTML
profile-page.html Update copyright dates in HTML
register-comingsoon.html Update copyright dates in HTML tiny change to todo
upload-page.html Update copyright dates in HTML
verify.html Update copyright dates in HTML


The Marmalade Service - A package repository in EmacsLisp

This is an EmacsLisp package to reimplement the marmalade-repo with Elnode. Natalie Weizenbaum wrote the original marmalade-repo with node.js and mongodb.

How to

  • Need an account? - make an issue on the 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


This reimplementation uses an 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.

Something went wrong with that request. Please try again.