Saturday, July 23, 2016

Recap "Replace Your File Cabinet with Mayan EDMS" (Meeting #8)

"Replace Your File Cabinet with Mayan EDMS"

We had a great turnout for our 8th meeting, where James Richey was kind enough talk to tell us everything he has learned about Mayan EDMS. James did a wonderful job explaining why we would want to use Mayan, how it manages documents, how to install Mayan and configure it.

I neglected to take photos and screenshots as I was too busy trying to absorb as much information as I could. I only have one poorly exposed photo, which I've included. I will do my best to relate and capture what was presented. As usual, the presenter is the best source, so please forgive my inadequacies.

James presenting Mayan EDMS while I snap a poorly composed photo of him. (Sorry, James!)


James started the talk by discussing the various ways we can organize our documents. He was looking for something automated and computerized that provided personal control over his documents, made it easy to add new documents, and provided fast search for existing documents. James also wanted to avoid vendor lock in. He chose to invest time in Mayan because it is open source, free (as in cost), has good document organization features, will run on his personal server, and uses a simple file system based storage solution for the documents. That last feature mitigates the vendor lock in he is concerned about. Additionally, Mayan has a web based interface that can be operated by pretty much anything that has a browser, which makes it very accessible.

Key Concepts

James says that there are three key concepts behind the way Mayan views your documents:

  • Document type
  • Metadata
  • Indexes
Before attempting to deploy your Mayan instance, it is important to understand these concepts and to think about how to apply them to the documents that you need to manage.

Document type

The document type is about classifying your documents. What are the sorts of documents you deal with? Some examples document types: receipts, bills, and manuals. Whatever sorts of documents that you find yourself managing, Mayan should be able to accommodate you.


Once you know your document types, you need to define the metadata that you want to attach to each document type. Metadata is just a "type" and a value, and they can be optional or required for a given document type. Some examples of metadata might be:


When configuring a new Mayan instance, James recommends setting up your metadata first, then your document types. That way you can flesh out the document types with the metadata as you create them.


Once you have document types and metadata types, you'll probably want to have convenient ways of viewing and getting to the documents that you have Mayan managing. That's where the indexes come in to play. The indexes allow you to organize documents based on metadata values. For example, you could place all the documents related to project Phoenix in one index.

The indexes are defined using Django templates. This means you have to understand both Django and Python to set up your indexes, which might be a bit of a learning curve for some. But it does give you a lot of power to create the indexes.


I don't recall exactly where James discussed this, but Mayan has very useful search facilities besides the indexes. My notes say that you should be able to also search on the content (assuming Mayan understands the content of your documents).

Other Features

I haven't covered all the features that James discussed in his talk. I neglected to mention tags, revision tracking, and metadata validation. James has said that he finds Mayan very useful for his purposes, and he hasn't even started to try to use the more advanced features, like the REST API, smart links, and staging folders. He also mentioned that there is a FUSE (Filesystem in Userspace) view of Mayan indexes available. This could make Mayan accessible in situations where http can't be used. Mayan seems to have plenty of room to grow for people or organizations that need help organizing and managing their documents.


Mayan EDMS is a Django application that would normally be installed on to a computer acting as a server. James has his instance installed inside of a "jail" running on his FreeBSD server. However, there are many ways to run Mayan including Linux "bare metal", virtual machines, or containers. The basic requirements are a machine capable of running nginx, PostgreSQL, and Python. If you don't feel like running your own server, you can pay to have somebody else run the service for you. As usual in open source, you have lots of options.

Diagram of the architecture of Mayan from James' slides.

Wrapping Up

James gave a great overview of Mayan and the demo worked flawlessly. It's great to have a hands on demo after a presentation, since it gives us all a chance to try a few things out while the presenter is standing right there to handle questions. I know I learned a lot. We'd all like to thank James for taking the time and efforts to give such a great presentation on Mayan EDMS. And we'd like to thank Gresham’s Multnomah County Library for hosting us once again.

We hope to see you next time! Until then, keep learning and sharing what you learn with others!

References and Resources

  1. James' slides:
    1. Original reval.js archive
    2. PDF format (author conversion)
  2. Mayan EDMS
  3. Mayan documentation
  4. Mayan's Google groups
  5. Gitlab source and bug tracker
  6. FreeBSD:
    1. FreeBSD jails