Files @ f15dffb821c2
Branch filter:

Location: NPO-Accounting/npo-accounting-ikiwiki/ExistingProjects/Frontaccounting.mdwn Joar@web
## Links

- [[!wikipedia Frontaccounting]] - Wikipedia
- <> - Project homepage
- Source Code Clone: hg clone frontaccounting-mercurial
   (Found only by chasing
   [Wiki]( link from homepage, which
   led to [Sourceforge page](

## Technical

- GPLv3 or later

## Preliminary evaluation

### Positive

- [Most recent release 2013-09-05](
- Themable
- Seemingly easy to deploy (Looking at their source release, structure looks similar to wordpress, for good or worse)

### Negative

- It seems to be built from scratch and not leverage any frameworks.
- Seems like a messy codebase: Table-based design. No templating, HTML is `echo`-ed to stdout.
- Uses the [deprecated]( PHP `mysql_*` functions.

## Detailed Evaluation

### Evaluation of [[Reporting|UseCases/GeneratingReports]] UseCases
- [[Trial Balance Report|UseCases/GeneratingReports#trial-balance]]: Yes
- [[Bank Reconciliation Report|UseCases/GeneratingReports#bank-reconcilation]]: Yes, seems ok
- [[Chart of Accounts|UseCases/GeneratingReports#chart-of-accounts]]: Yes
- [[Cash Disbursements Journal|UseCases/GeneratingReports#cash-disbursements]]: Yes, looks like GL Account Transactions works for this
- [[Income Report|UseCases/GeneratingReports#income-report]]: Not obviously
  there, but should be easy given the number of reports available.
- [[Expense Report|UseCases/GeneratingReports#expense-report]]: Not obviously
  there, but should be easy given the number of reports available.

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

It seems FrontAccounting's "Dimension" feature likely can do all of these,
since it seems you can limit any of the above reports by "Dimension".

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

- [[Fund-only View|UseCases/FundAccounting#fund-view]]: No, seems to be no way to
restrict a user to a specific Dimension.
- [[Funds as part of whole org View|UseCases/FundAccounting#fundless-view]]:
  Yes, dimensions appear to be purely informative.
- [[Ignore Funds for operations|UseCases/FundAccounting#fundless-view]]:
  Yes, dimensions appear to be purely informative.

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

- Does the system implement pure double-entry accounting?  Yes, it appears to
  do so.

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

- Does the system
  [[link up to external documentation|UseCases/TrackingDocumentation#document-link-up]]?
  Not that I can find.  It doesn't seem to allow addition links to external documents.

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

### 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?  It probably could be beat in submission
  to work.  It does have the knowledge of a default currency and converts to
  it based on stored rates and reports come in the default currency.
  However, it doesn't appear that you can confine those to a single

### Evaluation of WorkFlow UseCases
- Is a
  [[specific workflow dictated by the system|UseCases/WorkFlow#workflow-dictated]]
  ?  It does appear that there are certain automated operations that occur
  upon creation of invoices, and purchase orders are required.
- Is a [[the workflow configurable|UseCases/WorkFlow#workflow-configurable]]
  ? No.
- [[Unaccrued Invoice|UseCases/WorkFlow#unaccrued-invioice]] ? Seems you
  can't generate an invoice without accruing it.
- [[Purchase Order required|UseCases/WorkFlow#purchase-order-required]] ?
  Seems that way.

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

Interaction with the data seems to happen with embedded SQL statements
intermixed with PHP code.  Thus, writing SQL statements is really the only
way to interact with the data, and as such, given that there isn't anything
specifically innovative about the data model, this is no better nor worse
than most other projects of this nature.

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

Again, SQL appears to be the only way to interact with the storage of
double-entry data.  Double-entry data does not appear to be segmented away
from the other information.

### 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 GPL'ed.
- Is the [[license GPL-compatible||UseCases/CommunityHealth#gpl-compatible]]? Yes.
- Does the project
  [[require assignment of copyright or a CLA to get code upstreamed|UseCases/CommunityHealth#no-cla-for-profit]]?
  Doesn't seem to require that.
- How many
  [[active developers/companies contribute to the project||USeCases/CommunityHealth#dev-count]]?
  Likely two, as two developers made 98% of the commits:
        hg log|egrep '^user'|sort | uniq
     * If there aren't many, how hard would it be to take over the project if
       needed? Does not seem that easy given how it's designed.
- Is there good
  [[developer documentation|UseCases/CommunityHealth#dev-docs]]?
  There's a
  [bit on the wiki](
  but not much.
- How easy it to [[engage as a developer with the community|UseCases/CommunityHealth#dev-welcoming]]?
  [Developers mailing list](
  is barely active.

## Final Evaluation
<a id="final-eval"></a>

Frontaccounting seems to be a project kept alive by just two people who
presumably have deployments that are driving their work, but generally, there
is not much unique about this codebase, and the design doesn't seem to have
many reusuable components.  Converting it for use with non-profits would be
an uphill battle.  While the system clearly works, and is in fact very easy
to install, it has many assumptions about workflow that are likely specific
to its current deployments and inappropriate for non-profits. 

Finally, The use of straight PHP without a framework, and use of deprecated
techniques and APIs means that it will be difficult to attract new