After speaking with some very talented people at Marklogic. I decided to air my wishlist with the community at large and get some feedback.
- Samba/CIFS Server – The big challenge with integrating marklogic at my company has been getting the content into marklogic. While often we can write custom loaders or some of the code on developer.marklogic.com, such as xqloader. We dont have time to prove value without some long drawn out development project. It would just be as simple to expose marklogic as a CIFS/Samba server rather than a webdav server in its current releases. First, I will say without a good webdav client or some api that is easy to follow. its useless for large scale loading of content. I think most people when they get started with Marklogic is to just mount a share and start building a directory and dropping in their xml content. Alfresco has successfully implemented such functionality with JLAN implementation and this made a big difference in me getting alfresco up and running.
- Versionable File System – Automatic file versioning similiar to Subversion or CVS. This is purely an nice to have feature. But often as a developer you dont want to have to figure out how to manage versioning of files(version storage, apis to handle it). Better if Marklogic provided this out of the box IMHO.
- True Schema Support functionality – I understand that you want to be able to handle Xml without restrictions, buts lets face it if you could validate a document against a schema in marklogic you could at least have a choice as to whether you want to bomb the file or not. I dont know how many times I have encountered a problem in one of my parsing applications because of some unknown element is introduced into my content that I havent accounted for. We can ignore things we dont like but it only makes it worse after you have ignored this problem. If I can know what schema violations a particular document has I can at least move it to QA for fixing. If anybody has implemented a schema validator in marklogic. Please send me a message.
- External Xquery functions – No I dont mean java or dotnet based functions. I mean xquery functions that can be passed to a module (which I guess would require High Order Functions). Often when writing a transformer for a particular type of Xml Content such as Docbook or NITF. You want often end up writing a series of typeswitch statements that iterate over the content. For every transformation you want to do from the base transformation(ie XSL-FO,HTML) you have to duplicate this functionality. By allowing passing of external functions you can write modules that accept a series of functions and will call that function or use the local functions. This would seriously reduce the amount of boilerplate code you would have to write for new transformations. Also the inclusion of checking if a function or variable is undefined would also prevent try catch statements from XDMP:UNDEFINED errors.
- XQuery Reflection – XQuery Reflection over modules(I have posted about this earlier tonight:0). Oh the use cases I could write for this! I will boil it down to these 3, Documentation stubs(ie XqDoc) , Dynamic Programming, and Code Generation(WSDL’s, Dynamic Eval, Scaffolding Rails???)
- Xml Diff – This would be awesome. So a few flavors would need to be handled order sensitive and insensitive. Also update functions that accept a diff-gram would save alot of headache in writing update code.