Files @ eafc98ed458d
Branch filter:

Location: NPO-Accounting/npo-accounting-ikiwiki/ExistingProjects/Ledger.mdwn

brett
Pre-approval can wait until after the first release.

This is a very valuable feature, and we want it soon, but it doesn't
have to be in literally the first release.
Links:

- [[!wikipedia Ledger_(software)]] - Wikipedia
- <http://ledger-cli.org/> - Project homepage

## Technical

- Written in C++ using boost libraries.
- Python interface, might need some work

## Preliminary evaluation

### Positive

- Version controllable file format

### Negative

- You should preferably have the discipline of a programmer to use it

<a id="evaluation"></a>
## Evaluation

**Note**: Due to the simplistic philosophy and architecture of ledger-cli, the sky, development ability and time are the limits to what ledger can achieve.

### Evaluation of [[Reporting|UseCases/GeneratingReports]] UseCases

Conservancy has contributed a few scripts regarding reporting: <https://github.com/ledger/ledger/tree/master/contrib/non-profit-audit-reports>.

- [[Trial Balance Report|UseCases/GeneratingReports#trial-balance]]: Yes, 
- [[Bank Reconciliation Report|UseCases/GeneratingReports#bank-reconcilation]]: Yes, [if you're a hacker](https://github.com/ledger/ledger/wiki/Reconciling). Can also be found in ledger/contrib/non-profit-audit-reports mentioned above.
- [[Chart of Accounts|UseCases/GeneratingReports#chart-of-accounts]]: The trial balance report shows the chart of accounts during the selected period.
- [[Cash Disbursements Journal|UseCases/GeneratingReports#cash-disbursements]]: Can be found in ledger/contrib/non-profit-audit-reports mentioned above.
- [[Income Report|UseCases/GeneratingReports#income-report]]: Yes
- [[Expense Report|UseCases/GeneratingReports#expense-report]]: Yes

### Evaluation of [[Reporting|UseCases/GeneratingReports]] UseCases for Fund Accounting

Can each of these reports be generated, confined to a specific temporarily
restricted asset type?
   
- [[Trial Balance Report|UseCases/GeneratingReports#trial-balance]]: Not by default.
- [[Bank Reconciliation Report|UseCases/GeneratingReports#bank-reconcilation]]: Not by default.
- [[Chart of Accounts|UseCases/GeneratingReports#chart-of-accounts]]: Not by default.
- [[Cash Disbursements Journal|UseCases/GeneratingReports#cash-disbursements]]: Not by default.
- [[Income Report|UseCases/GeneratingReports#income-report]]: Not by default.
- [[Expense Report|UseCases/GeneratingReports#expense-report]]: Not by default.

**Note**: All these are possible using Conservancy's [npo-ledger-cli](https://gitorious.org/ledger/npo-ledger-cli/source/78e68f0bd97a6b565f0384f1a73d8036863a0d1a:).

### Evaluation of [[Fund Accounting|UseCases/FundAccounting]] UseCases

All these are possible using Conservancy's [npo-ledger-cli](https://gitorious.org/ledger/npo-ledger-cli/source/78e68f0bd97a6b565f0384f1a73d8036863a0d1a:)

- [[Fund-only View|UseCases/FundAccounting#fund-view]] 
- [[Funds as part of whole org View|UseCases/FundAccounting#fundless-view]]
- [[Ignore Funds for operations|UseCases/FundAccounting#fundless-view]]

### [[UseCases/Collaborating]] evaluation
- [[Simultaneous Editing of Ledger|UseCases/Collaborating#simultaneous-ledger-edits]]: Not by default. Possible by using a version control system since the ledger data is in plaintext files

### Evaluation of [[Double-entry Accounting|UseCases/DoubleEntryAccounting]] UseCases

- Does the system implement pure double-entry accounting? Yes

### Evaluation of [[TrackingDocumentation|UseCases/TrackingDocumentation]] UseCases

- Does the system [[link up to external documentation|UseCases/TrackingDocumentation#document-link-up]]? Not by default. 

- Does it have a [[the ability to explore transactions via documentation linkage|UseCases/TrackingDocumentation#document-link-explore]]? Not by default.

### Evaluation of [[Handling multiple currencies|UseCases/MultiCurrency]] UseCases

- Does it support the concept of
  [[a single functional currency|UseCases/MultiCurrency]], while still
  permitting multi-currency entries? Up to the user.

### Evaluation of [[draft transaction|UseCases/DraftTransactions]] UseCases

- Does the system allow
  [[generally for draft transactions|UseCases/DraftTransactions#draft-general]]
  that can be later approved before officially being posted to the books? Not by default.

### Evaluation of WorkFlow UseCases
- Is a [[specific workflow dictated by the system|UseCases/WorkFlow#workflow-dictated]] ? No.
- Is a [[the workflow configurable|UseCases/WorkFlow#workflow-configurable]] ? Yes.
- [[Unaccrued Invoice|UseCases/WorkFlow#unaccrued-invioice]] ? ledger-cli does not manage your invoices by default, it only manages accounting data.

### Evaluation of the [[Reading and Reporting API|UseCases/ReadingAPI]]

ledger-cli can be configured to output machine-readable formats, you can also read the text files directly.

### Evaluation of the [[Storage API|UseCases/StorageAPI]]

It is possible to alter the text files in any way as long as they are parsable by ledger-cli.

### Evaluation of the [[Community Health|UseCases/CommunityHealth]]
- Is the [[license both determined as Free Software by FSF and OSI-approved|USeCases/CommunityHealth#license-approved]]? Yes, it's the [BSD license](http://ledger-cli.org), see e.g. <https://github.com/ledger/ledger/blob/master/src/account.cc> for license text.
- Is the [[license GPL-compatible||UseCases/CommunityHealth#gpl-compatible]]? Yes, it seems to be the [modified BSD licsense](http://www.gnu.org/licenses/license-list.html#ModifiedBSD).
- Does the project
  [[require assignment of copyright or a CLA to get code upstreamed|UseCases/CommunityHealth#no-cla-for-profit]]? No, it does not seem like it.
- How many
  [[active developers/companies contribute to the project||USeCases/CommunityHealth#dev-count]]? [21 over the last 12 months](http://www.ohloh.net/p/ledger). The C++-based ledger-cli is in maintenance mode until further notics - New features will probably not be added by the maintainer himself but could be added by the community.
     * If there aren't many, how hard would it be to take over the project if needed?
- Is there good [[developer documentation|UseCases/CommunityHealth#dev-docs]]? There does not seem to be any developer documentation.
- How easy it to [[engage as a developer with the community|UseCases/CommunityHealth#dev-welcoming]]? Public IRC channel and mailing list, friendly.