###
FAQ
###

*************
Non technical
*************

Contact
=======

Can I contact members of the development team?
----------------------------------------------

Direct access to members of the development team is reserved for clients
of a support or consultation contract.


I can't pay for support/consultation
------------------------------------

A community forum is available at https://forum.mayan-edms.com. Members of
the development team visit the forum on occasions and might answer some
questions on a voluntary basis.


I found a bug
-------------

For bugs, open an issue at https://gitlab.com/mayan-edms/mayan-edms/issues.


I found a security issue
------------------------

Open an issue at https://gitlab.com/mayan-edms/mayan-edms/issues and mark it as
Confidential. Allow us at least 48 hours to find and release a fix
for the issue before submitting it to the CVE database.


I want to join the development team
-----------------------------------

Perfect! We need all the help we can get. Tell us where we can see what you've
done using Mayan EDMS. It could be a fork, a new UI, an API client, a custom app,
or anything else that you think will be able to evidence your dominion over the
codebase.


I submitted an issue and it has not been fixed
----------------------------------------------

There are many reason an issue might not get resolved and remain open for an
extended period of time. We document on the issue itself the progress and when
resolved will reference what commit fixed it and the version or approximate time
for the code to make it into a production release. Some reason why issues remain
open with no resolution are:

- It was not an issue with the code. It happens that sometimes the problem lies
  with the operating system, the filesystem being used, the platform or packaging
  method.
- It was not an issue but a question or a comment. The issue system is for reporting
  problems with the code. That said, we sometimes answer questions submitted as
  issues. For questions or discussions use the community forum.
- We are not able to reproduce the issue. We need to be able to recreate the
  conditions that trigger the issue so that we can pinpoint the cause. After that
  we create a test to make sure the issue is really fixed. Some issues can
  be triggered manually easily but are hard to trigger programatically.
- The issue is not clearly explained. Issue descriptions like: "It doesn't work",
  or "It showed an error but I forgot to write it down" are almost impossible to
  resolve.
- We understand the cause of the problem but don't yet a solution to implement.
  We have studied the issue and have been able to reproduce it, but have not
  reached a consensus on how it should be fixed. Could be that the solution is
  beyond the collective expertise of the development team or that a design
  decision of big impact is needed before code changes can be implemented.
- The issue is no real. The issue might be for an obsolete version. It could be
  for a fork or a program that is not developed by us. Sometimes they are just
  fake issues.


I submitted a merge request and has not been merged
---------------------------------------------------

Merge requests must follow the development standards of the code as close a
possible. They must also be atomic and as small as possible. The code must also
not change the behavior of the project. We can't accept merge request that
customize it in some way based on your own preferences or needs.


Distribution
============

Can I distribute Mayan EDMS under another name and/or logo?
-----------------------------------------------------------

Yes, the terms of the license allow this. However, the copyright notice must
remain intact. If you use an alternate name, a notice indicating that yours is
a derived product from Mayan EDMS must be included. You must indicate to your
clients that their act of purchasing Mayan EDMS from you is an independent
action and in no way legally binds Mayan EDMS LLC, the Mayan EDMS copyright
holders, or the core team in any way.


Sale
====

Can I sell Mayan EDMS as is or under another name?
--------------------------------------------------

Yes, selling Mayan EDMS is permitted. However, the copyright notice must
remain intact. If you use an alternate name, a notice indicating that yours is
a derived product from Mayan EDMS must be included. You must indicate to your
clients that their act of purchasing Mayan EDMS from you is an independent
action and in no way legally binds Mayan EDMS LLC, the Mayan EDMS copyright
holder, or the core team in any way. Note that when you sell Mayan EDMS,
you are selling your service and not a license, rights, or privileges of any
type.


Can I get exclusive distribution rights for my region?
------------------------------------------------------

No, the terms of the license make the project freely available to everyone.
Restricting distribution or sale would conflict with the license terms. This
would possible for a commercial version of Mayan EDMS with separate licensing
terms.


Is there a commercial partnership program?
------------------------------------------

There was at one time but was retired. If there is interest it could be
reinstated in the future.


What is an EDMS?
----------------

EDMS stands for Electronic Document Management System and it is an more modern
version of a DMS. A DMS is a Document Management System. A system to store,
sort, and categorize printed documents. It is an electronic filing system.
Besides images of scanned documents, an EDMS also support electronic documents,
documents created in a computer that may or may not have been printed.
While they may look similar, EDMS/DMS is not to be confused with CMS
(Content Management System), IM (Information Management), KM
(Knowledge Management), RM (Record management), ECM (Enterprise Content
Management). Mayan EDMS started initially as a strict EDMS project but has
been expanding its feature set and provide some functionality from other
system types.

*********
Technical
*********

Database managers
=================

PostgreSQL vs. MySQL
--------------------

Since Django abstracts database operations from a functional point of view
Mayan EDMS will behave exactly the same either way. The only concern would be
that MySQL doesn't support transactions for schema modifying commands. The only
moment this could cause problems is when running South migrations during
upgrades, if a migration fails the database structure is left in a transitory
state and has to be reverted manually before trying again.


LDAP
====

How to do LDAP authentication
-----------------------------

A sample settings file called ldap_connection_settings.py is included in the
contrib/settings/ folder of the repository showing how to setup LDAP
authentication.


Operating systems
=================

How to install Mayan EDMS in Windows operating systems?
-------------------------------------------------------

Mayan EDMS doesn't run natively on Windows. The best way is to use a virtual
machine product, install Ubuntu or Debian, and proceed with the standard
deployment instructions or use Docker inside a GNU/Linux virtual machine.


Python
======

Is virtualenv required as specified in the documentation?
---------------------------------------------------------

It is not necessary, but it's a strong recommendation mainly to reduce
dependency conflicts by isolation from the main Python system install. If not
using a virtualenv, pip would install Mayan's dependencies globally coming in
conflict with the distribution's prepackaged Python libraries messing other
Django projects or Python programs, or another later Python/Django project
dependencies coming into conflict causing Mayan to stop working for no
apparent reason.


Does Mayan EDMS work with Python 3?
-----------------------------------

Yes but it is not production ready yet. Users are encouraged to deploy test
installations of Mayan EDMS on Python 3 and report findings.


Static files
============

Mayan EDMS installed correctly and works, but static files are not served
-------------------------------------------------------------------------

Django's development server doesn't serve static files unless the DEBUG option
is set to True, this mode of operation should only be used for development or
testing. For production deployments the management command::

    $ mayan-edms.py preparestatic

should be used and the resulting static folder served from a webserver.
For more information check the
:django-docs:`howto/static-files/`


Watch folders
=============

The watched folder feature is not working
-----------------------------------------

Make sure that the Celery BEAT scheduler is running correctly as it is the
element that triggers the periodic tasks. Check that the user running the Mayan
EDMS services has read and write permissions for the watch folder.



Other
=====

File system links not showing when serving content with ``Samba``
-----------------------------------------------------------------

Disable unix extensions in the [global] section and enable wide links for the file serving share

Example::

    [global]
        unix extensions = no

        ...

    [digitalizacion]
        path = /var/local/mayan
        guest ok = yes
        read only = yes
        wide links = yes
        follow symlinks = yes


Reference:
* http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html
