This has been mentioned elsewhere but I'd like to open an explicit topic about compatibility between (H)Ledger and Beancount.
From what I understand, Beancount syntax started from Ledger but went its own way (as is to be expected with any two projects, people, plants) over time.
On the other hand, ledger's syntax also evolved to include some functionality, which also makes sense.
Now, the question is - why can't they both use the same syntax? Or a subset of syntax.
Here I would argue that the data file is just that - data. There are tendencies to make it more code-like and include instructions, macros, and other executable type of stuff. I would be prefer to keep data static and add things like tags, if the existing record properties are not enough, upon which executable code could make decisions. I know this sounds simplistic but that's the general idea.
The end result, I'd be delighted to see, would be
- modular application, which is something Martin is doing with BeanCount, with pluggable components; and
- compatible (subset of) data syntax
Any incompatible syntax should simply be ignored (i.e. virtual accounts and that sort of things). In that case, having different applications use the same data set, they could provide different but complementary functionality. For example, I'm excited about the way Asset Allocation can be implemented with Ledger using virtual accounts and automatic transactions. This is something I can extract into a separate file and only run when I want to see my current asset allocation.
It also provides a modular data structure, where multiple files can be combined into the end results. I have already separated my data into accounts, commodities, journal, prices, and asset allocation definition. Seems to work great with Ledger. I wonder how useful this structure will be with Beancount, considering it requires Open Account directives.
Anyways, food for thought and discussion.