The best way to start is not to try and write code straight up. Install a Directory Server instance, and use it. Join our users list and ask questions - We are nice people, no question is bad (read our archives if you don’t believe me).
As you use a piece of software, you’ll start to see rough edges, things that could be better, even ways you wish you could use it differently. Talk to us, and see if you could help by giving us ideas, or even writing it yourself. We’ll help guide you in the process. Raising a bug is just as important as the potential to write a fix.
Many of us in the team started by asking questions and raising bugs - Not by jumping in the deep end with patches.
Developers should check out our building and install guides to see how to build and install the server from source. Then you can get working on fixing bugs, adding new features, adding new test cases to lib389 Continuous Integration, or improving our documentation. For other ideas see ways to contribute.
To browse through our backlog of development tickets, access the 389 Trac instance. The team can help advise you on the potential complexity or simpliticy of any issue want to attempt.
If you want to contribute code to the project you should look at our ICLA on this page. It contains information on the process you have to go through to be able to submit patches we will accept as well as getting a git. From a more technical standpoint, before submitting a patch you should check out our coding style guide. Once your patch is approved, see the Git rules before checking anything in.
Please take some time to review our license.
Download Source Code - Click Here
Component | GIT Repository | Clone the Repository |
---|---|---|
Directory Server (build & debug instructions) | https://github.com/389ds/389-ds-base.git | git clone https://github.com/389ds/389-ds-base.git git clone git@github.com:389ds/389-ds-base.git |
Nunc-Stans (build & debug instructions) | https://git.fedorahosted.org/git/nunc-stans.git | git clone git://git.fedorahosted.org/git/nunc-stans.git git clone ssh://git.fedorahosted.org/git/nunc-stans.git |
AdminUtil (build instructions) | https://git.fedorahosted.org/git/389/adminutil.git | git clone git://git.fedorahosted.org/git/389/adminutil.git git clone ssh://git.fedorahosted.org/git/389/adminutil.git |
Admin Server (build & debug instructions) | https://git.fedorahosted.org/git/389/admin.git | git clone git://git.fedorahosted.org/git/389/admin.git git clone ssh://git.fedorahosted.org/git/389/admin.git |
IDM Console Framework (build & debug instructions) | https://git.fedorahosted.org/git/idm-console-framework.git | git clone git://git.fedorahosted.org/git/idm-console-framework.git git clone ssh://git.fedorahosted.org/git/idm-console-framework.git |
389 Console (build & debug instructions) | https://git.fedorahosted.org/git/389/console.git | git clone git://git.fedorahosted.org/git/389/console.git git clone ssh://git.fedorahosted.org/git/389/console.git |
DS Console (build & debug instructions) | https://git.fedorahosted.org/git/389/ds-console.git | git clone git://git.fedorahosted.org/git/389/ds-console.git git clone ssh://git.fedorahosted.org/git/389/ds-console.git |
Admin Console (build & debug instructions) | https://git.fedorahosted.org/git/389/admin-console.git | git clone git://git.fedorahosted.org/git/389/admin-console.git git clone ssh://git.fedorahosted.org/git/389/admin-console.git |
DSGW & Web Apps (build instructions) | https://git.fedorahosted.org/git/389/dsgw.git | git clone git://https://git.fedorahosted.org/git/389/dsgw.git git clone ssh://https://git.fedorahosted.org/git/389/dsgw.git |
DSML Gateway (build instructions) | https://git.fedorahosted.org/git/389/dsmlgw.git | git clone git://git.fedorahosted.org/git/389/dsmlgw.git git clone ssh://git.fedorahosted.org/git/389/dsmlgw.git |
Passync/Winsync (build instructions) | https://git.fedorahosted.org/git/389/winsync.git | git clone git://git.fedorahosted.org/git/389/winsync.git git clone ssh://git.fedorahosted.org/git/389/winsync.git |
Continuous Integration Testing (documentation) | https://git.fedorahosted.org/git/389/lib389.git | git clone git://git.fedorahosted.org/git/389/lib389.git git clone ssh://git.fedorahosted.org/git/389/lib389.git |
Rest Server (documentation) | https://git.fedorahosted.org/git/389/rest389.git | git clone git://git.fedorahosted.org/git/389/rest389.git git clone ssh://git.fedorahosted.org/git/389/rest389.git |
OpenLDAP (build instructions) | Not Available | git clone git://git.openldap.org/openldap.git |
Feature design documents describing the various features that were introduced with each release of 389-ds-base and 389-admin are located at the Feature Design Documents page.
389 can be built to use FHS style, /opt FHS style, or user specified prefix - see FHS Packaging
It is possible to write plugins that allow you to extend the functionality of the Directory Server. Our plugins page contains information on the API and the scope of the functionality. You might also want to look at our annotated license page for some legal information on using the plugin api.
Not a coder? No problem. You can help by finding new bugs, verifying existing bugs, polishing documentation and generally improving the quality of the server.
A good way to contribute to improving the quality of the server would be to add automated tests for each of the features. Developers and contributors to the 389 Project are encouraged to write unit tests for any new features, updates and bug fixes being contributed. Where possible, the tests should be data driven. This allows for greater numbers of test cases covering more of the feature under test, to be written with minimal effort. We suggest tests be written in a scripting language like python with lib389.
There are a number of other LDAP test tools available from other groups and companies which may be of interest:
If you know python, you can add to the Continuous Integration Testing Framework (lib389), and help make the product more stable, and have less regressions in new releases.
If you want to submit code and patches you need to sign the Fedora Individual Contributor License Agreement.
This is easy to do. Just follow these steps: