Frequently Asked Questions


Is DitaBase open source? And what about dit?

DitaBase is a company. Dit is an open source technology. DitaBase is developing dit at the same time as attempting to profit from it. Think of this as though a company were building git at the same time as GitHub.com

The dit file type and all essential tools will always be open source. DitaBase itself will make other tools and services that will not be open source, like freemium features on the website and freemium editors with more features. DitaBase will also host a marketplace for dit classes, where open and closed source code can be found and used in dits, either for free or for use as a service.

Does dit have support for X? (JSON-Schema, RDF, spreadsheets...)

Yes.
DitaBase is designed from the ground up to be fully generic, before any other feature. Dit can be made to work with any format, file type, concept, anything. In fact, if dit can't work with something, that's considered a bug, not just a missing feature. By breaking down format into objects, anything can be described. If it can be written down in binary, then scripts can be written that work with it's functionality.

This does not mean all formats are supported out of the box, or that DitaBase will support all of them.
But it does mean the following:

  • The most popular and requested formats will always be formally supported by DitaBase.
  • The open source community can support any format it chooses.
  • Support for a format cannot be dropped, only the responsibility transferred from DitaBase to open source. If you want to keep using something, just support it yourself.

What's a KirbyLang?

KirbyLang is term I invented to describe any language that can easily absorb the properties of any other language, just like Kirby, the Nintendo character. Dit is a KirbyLang, but it's not the first and probably won't be the last.

Kirby Sucking up Food

Imagine Kirby sucking up other languages and technologies, really really fast.

A KirbyLang can go about managing the Guest languages however it wants to. Dit is just one implementation, and there may be better ones. However, all KirbyLangs must meet the following requirements:

  • Adding a new language must be "easy". It should require less than 1000 lines of code, and take less than 100 man hours.
  • All Functions must be Kirbyish. That is, they act exactly like the normal functions in the KirbyLang, with no loss in functionality.
For dit, a guest language is added by implementing a local socket server in that language. Dit will send a job to the socket server with the filepath of some code it needs the guest to run. The guest has to run it and return the results back to dit.

Adding Lua took me about 12 hours and 76 lines, even though I was rusty and had never used sockets or JSON in Lua. I am sure compiled languages will be more complex, maybe 2 or 4 fold, but that's okay. You can see how languages are implemented here.

Wait, so I can use any language for scripting?

Yep! DitaBase will always support the most popular languages, but you can always add more!

Isn't dit just another competing format?

XKCD comic, the one true standard
The problem of trying to make a universal standard, as illustrated by XKCD.

We realize the irony of any new format inherently making the problem worse, but dit is not trying to make a format that covers everyone's use cases. That is probably impossible.

Dit is less of a format, more of a container. It's trying to be a bridge between other formats, and that means it relies on them heavily. In general, you're not writing data in dit format. Rather, you're putting existing data inside a dit. Dit can only work with so many formats because their functionality gets added to dit with the KirbyLangs. Dit takes the features of format 'X' because someone coded 'X' directly into dit.

Maybe format 'Y' will turn out to be better than 'X'. To dit, it doesn't matter. It only wants to make sure that switching between 'X' and 'Y' is as easy as possible. The only competing standard that dit introduces is whether to use a container like this or not. And at the moment, dit is the only one.