Over the final six months, I’ve been engaged on GoDBLedger, an open supply accounting system that I really feel addresses a number of the points that plague present accounting software program options. Even in my first 12 months as a graduate accountant, the software program annoyed me as a result of I’ve seen what good software program will be like and the way a lot it could actually enhance your productiveness.
An amazing instance of “good software” is a software program developer’s Editor/IDE. Developers love their editors, and there’s a enormous vary that’s extremely customizable and permits for seamless coding expertise. One of the main influencing components for the existence of nice software program on this space is as a result of builders are themselves the top customers—they scratch their very own itches and have instant suggestions on their designs.
The relationship between builders and their editor is fascinating as a result of the editor’s job is to facilitate the environment friendly switch of the developer’s concepts into the codebase.
As an accountant who loves programming in my spare time, I can see parallels between the accounting business and software program growth. You can think about the final ledger (a large listing of economic transactions) as a “codebase” that accountants work with, and it’s the accountant’s job to navigate and edit the final ledger earlier than compiling it into numerous reviews that an finish person consumes—monetary statements and tax returns, for instance. This is just like, as an illustration, the best way the Red Hat Enterprise Linux codebase is maintained by builders, after which launched formally as RHEL and CentOS to the world.
Unfortunately, when evaluating the software program between the 2 industries, I’ve discovered that navigating and modifying the final ledger just isn’t seamless, no less than not when in comparison with my experiences when programming. Additionally, the compilation is sluggish and includes lots of human labor to attain; it could actually finally be as troublesome as modifying the final ledger itself.
So, given the parallels between accountants’ and programmers’ processes, why hasn’t the accounting business developed software program to make modifying the final ledger as environment friendly as an IDE modifying a codebase? And why is compiling a set of economic statements from the final ledger not automated as is pushing code to manufacturing?
There are two influencing components that I’ve seen.
The first is the revenue motive that drives each accountants and accounting software program builders. Monetization can result in inefficiencies in software program as a result of probably the most environment friendly finish person just isn’t all the time probably the most worthwhile. A profit-maximizing entity can extract extra worth from their customers by taking actions to get management of the person’s knowledge, create walled gardens, and make it troublesome for the person to alter their software program.
Accounting software program has all the time existed within the realm of paid software program. Because it performs such an vital position in a enterprise, it has all the time been straightforward to monetize. This is nice for software program builders who want to make a revenue, however sadly, it signifies that open supply ideas have had minimal affect on the form and design of the software program.
The second influencing issue is a lack of awareness of the final ledger as a knowledge construction. The basic ledger, in easy phrases, is only a method to format a database of economic transactions. This knowledge construction was designed within the 1600s, and it labored fairly effectively inside a bodily e-book. At that time limit, working with the final ledger meant altering written textual content within the e-book as needed, and accountants had been professionals at sustaining this database. However, when relational databases had been created, the construction by no means actually bought standardized and digitalized. Software packages applied the final ledger inside their very own proprietary database constructions, and accountants misplaced their capacity to immediately edit the database. Instead of managing the final ledger immediately, the software program solely allowed for accountants to have restricted entry.
The outcome
Before TCP/IP bought standardized, corporations like AOL had been creating their very own proprietary environments and locking customers into their walled gardens. Fortunately for the web, they fell away to a free commonplace communication protocol. Unfortunately, the accounting business didn’t do that, and we bought caught with “America Online.”
Imagine that the software program business was dominated by a couple of large IDE software program conglomerates which have determined to maximise their earnings somewhat than maximizing developer effectivity. Your editor now not saves code as textual content; as an alternative, it’s saved as a proprietary knowledge format. You cannot copy a codebase simply into one other IDE, and in case you do change editors, it is in all probability secure to imagine that the codebase saved within the earlier system is misplaced.
This is the state of the accounting software program obtainable at present.
So what can accounting software program builders be taught from the open supply group?
Open supply means you may stand on the shoulders of giants and use codebases of different tasks to affect and immediately help within the progress of your individual mission. If you’re specializing in accountants’ effectivity to edit the final ledger, you may evaluate different software program and duplicate the elements that work and ignore the elements that do not. In my case, I’ve been lucky to leverage the good codebases of different accounting software program akin to GNU Cash and Ledger-CLI, however there’s one other fascinating space that has loads to contribute—the open supply servers that handle cryptocurrency nodes.
Accounting has struggled with the transition from bodily ledgers to computer systems, however fortunately the cryptocurrency group has already developed lots of open supply software program for sustaining a database of transactions.
The basic ledger is a knowledge construction to document monetary transactions—similar to a blockchain.
What this implies
My accounting system has been closely influenced by Geth (Go Ethereum) and Prysmatic Labs—Prysm, as there are lots of proficient builders engaged on these tasks. They have supplied the bottom for a server that manages monetary transactions. Combining this with a database schema that was closely influenced by GNU Cash means the heavy work behind designing an accounting system has already been executed.
The result’s GoDBLedger, with supply code obtainable on github.com/darcys22/godbledger.
It can also be written in Golang to leverage the already good code that exists on this space, and since Golang tends to be good for servers of this nature.
I’ve talked loads about how accountants ought to be capable to work with the final ledger as seamlessly as a programmer can work on their codebase. I really stay up for the day once I can create and edit journal entries with the identical effectivity that I navigate and edit code utilizing my textual content editor of selection. GoDBLedger is my first step towards attaining this. The subsequent steps shall be towards growing this “IDE” that communicates with GoDBLedger and its underlying database. Fortunately for me, there are already lots of good open supply database tasks that I am going to be capable to leverage for this.
How to make use of GoDBLedger
GoDBLedger is usable at present! You can hearth up a server that maintains a database on your monetary transactions, and it’ll feel and appear acquainted to anybody who has run a cryptocurrency node earlier than.
The finish purpose is for it to behave because the central server for receiving monetary transactions and storing them within the database. It lives within the background, all the time working in order that different techniques can talk monetary knowledge to it as wanted.
Right now, if you’re comfy with a command line and scripts that talk to techniques utilizing RPC, then you may play with GoDBLedger and expertise double-entry bookkeeping on a stage decrease than all different software program (and solely barely above immediately manipulating the SQL database).
For occasion, with GoDBLedger working, you may add entries within the interactive mode of ledger-cli:
$ ~/godbledger/ledger_cli journal
Journal Entry Wizard
--------------------
Enter the date (yyyy-mm-dd): 2019-06-30
Enter the Journal Descripion: Get Money Get Paid!Line merchandise #1
Enter the road Descripion: Income is nice yo
Enter the Account: Revenue:Sales
Enter the Amount: -1000
Would you prefer to enter extra line gadgets? (n to cease):Line merchandise #2
Enter the road Descripion: Cash is healthier
Enter the Account: Asset:Cash
Enter the Amount: 1000
Would you prefer to enter extra line gadgets? (n to cease): n&Get Money Get Paid!
2019-06-30 00:00:00 +0000 UTC [Revenue:Sales
Income is nice yo
-1000/1 Asset:Cash
Cash is healthier
1000/1] stuff
However, the identical entry will be made utilizing JSON:
$ ~/godbledger/ledger_cli jsonjournal ''
You can view a report with the reporter
command:
$ ~/godbledger/reporter trialbalanceACCOUNT | BALANCE AT 20 FEBRUARY 2020
--------------+----------------------------
Asset:Cash | 1000
|
Revenue:Sales | -1000
|
Read the quickstart on the Github Wiki for extra data. I’ve additionally developed a couple of example scripts using Python to indicate how one can ship transactions from your individual software program. Additionally, I’ve made an example “trading bot” that saves each commerce it does to GoDBLedger.
in case you’re interested by a procedural system to maintain monitoring of your accounts, strive GoDBLedger.