Welcome to the MarkLogic Tool Standards project!
This project aims to provide useful standards, best practices, and guidance around laying out applications that target MarkLogic. This will allow all the open source deploy tools (Roxy, mjlsadmin, ml-gradle et al) to use the same source application folder layouts - providing consistency amongst all application deployments.
This in turn will allow developers to choose their favourite tools safe in the knowledge that the same distributed application will work with their preferred toolset.
By providing overviews this project also attempts to prevent overlap and competition between tools, usually caused by unawareness. It can also be used as reference to find the toolset that suits your needs best.
Ideally we have toolsets with full coverage for all mainstream languages, that operate in a consistent way, and can be interchanged at any time.
Below a list of thumb rules to provide some overall guidance and ground rules:
- (Ideally) full coverage for each mainstream language
- No overlap between tools within a language
- Optimal use of facilities provided OOTB with MarkLogic (e.g. Management REST API)
- Consistency in configuration (primarily terminology)
- Consistency in folder structures
- Isolation of deployment tool for easy exchange
Mainstream languages is not a well-defined term. If you search on internet, you mostly find lists of most popular languages. For this project it makes more sense to look at most used languages though, so based on volume rather than number of Google/Yahoo searches. The results on the TIOBE Index look reasonable though (Sept 2016 list):
- Java (18.236%)
- C (10.955%)
- C++ (6.657%)
- C# (5.493%)
- Python (4.302%)
- JavaScript (2.929%)
- PHP (2.847%)
- Assembly (2.417%)
- .NET (2.343%)
- Perl (2.333%)
For constrast, coverage of languages on Github looks quite different, based on Githut.info (2014 Q4, number of repositories):
- JavaScript (324k)
- Java (223k)
- Python (165k)
- CSS (164k)
- PHP (139k)
- Ruby (133k)
- C++ (87k)
- C (73k)
- Shell (66k)
- C# (56k)
Looking at above lists, we can safely say, primary focus should be on:
- Java
- Python
- JavaScript
- C
- C++
- PHP
- C#
And since we already cover that in the past:
- .Net
We're documenting the tools available right now, and what we want them to do.
We need to agree the goals of the project/effort.
All of the below are a work in progress...
TODO define which tools will implement what, by when.