In a previous post Kashoo announced the open sourcing of Synctos. As a part of a series of ongoing posts directed to give insight and reveal how Kashoo operates - both our team and our technology - we wanted to give additional context to the previous announcement. While certain aspects of this follow-up may be technical and primarily of interest to many of the software developers who use Kashoo, we hope it will give all readers a glimpse into how Kashoo works and help you understand our excitement about giving back to the open source community.
What is Open Source Software (OSS)?
The Wordpress blogging platform, Firefox web browser, and Linux operating system may be among the most well known open source projects of all time. The fact that they are open source means anyone in the world can download the source code to see how it works, fix bugs, add features, or leverage it to create something entirely new. In a time where “Maker culture” has all the buzz, this free sharing attitude is not new to the world of software development. Open Source Software (OSS) started in 1998 by the Open Source Initiative and has roots going all the way back to 1985 when the Free Software Movement started.
A more detailed overview or exhaustive definition of OSS may be interesting for some to read. However, the previous explanation serves appropriately in understanding the value and to see how critical OSS is to delivering the Kashoo product so many small business owners have come to appreciate.
Why does Kashoo Use Open Source Software?
More often than not, OSS is free, meaning it does not cost anything to use. However, it is the freedom to access, use, change, and share the source code that lead us to incorporate it in Kashoo. Those freedoms lead to many advantages we gain by using OSS:
- Focus: Our goal at Kashoo is to deliver easy to use accounting software for small business owners in Canada and around the world. OSS enables us to focus on the mission of writing and delivering the accounting software a small business owner needs instead of maintaining the code for databases, web frameworks, and all the other underlying technical infrastructure upon which Kashoo is built.
- Quality: The more developers who see the code the better the chances a bug will be identified before it is released. If a bug is released, the same logic applies, as more eyeballs will be able to find the root cause and fix it quicker. And when the code is used by hundreds of thousands of other organizations it means those bugs which are released are more apt to be surfaced much more quickly across all the different manners in which it is being used. It all boils down to high quality software which has been battle-hardened by the massive companies like Amazon and Netflix which serves as the foundation for Kashoo.
- Control: Have you ever been pestered by software wanting to install an update? Frequent software updates are good. The Kashoo team suggests installing updates as soon as possible, especially amidst the daily headlines of data breaches and internet outages. That being said, maintaining control over the timeline and scope of updates is important in delivering a service like Kashoo. Just as you would not want your laptop to be forced to reboot as you prepare to make a presentation to a customer, the Kashoo team wants the ability to control how updates are integrated. Often we apply critical security patches within minutes of when they become available. But for minor releases focused on bug fixes and major releases with new features (which might introduce new bugs), maintaining control is paramount. This gives us time to test Kashoo and make sure the updates improve the product and do not introduce instability.
- Design: By including software from many OSS projects around the world our source code tends to take on a modular design. This helps not only with maintenance, but makes the system approachable when new developers join our team. They can learn about one module at a time and do not need to comprehend the whole complex system. We’re a small company of approximately 20 people, half of which are technologists working as a single team on the Kashoo software. Conway’s Law says that even though we’re small, as a single team we should expect our source code to grow together like one small blob over time simply because that is how we’re organized. Having many small modules which focus on a single responsibility leads to modularity and is a desirable attribute in software architecture. Therefore, integrating many OSS projects into Kashoo drives our code to be more modular.
- Leverage: Experts around the world take on research and development projects working for big corporations like Google, non-profit organizations like Mozilla, or for themselves as “indie devs”. They are solving challenging problems in innovative new ways. Some of the brightest minds at Netflix, LinkedIn, and many other companies discover new solutions to challenges they encounter, and because of their dedication to sharing with the larger open source community, Kashoo can leverage those solutions and deliver new features and functionality for which otherwise we might not have the time or expertise.
What Open Source Software is Used to Deliver Kashoo?
Kashoo has been built on open source from the start when it was known as Clarity Accounting and ran on a single server. Since that time it has grown to be built upon hundreds of projects too numerous to list exhaustively here.
We are appreciative of the maintainers of all the projects we use, both big and small. Each one enables us to focus on building Kashoo to be better and do more for our customers. To do this we use many great open source projects including:
- Postgres: The relational database where all of the general ledger data resides.
- Couchbase: A NoSQL document-oriented datastore integrated across the system.
- CentOS Linux: Distribution of the Linux operating system used on the Kashoo servers.
- Hibernate: An object relational mapping framework used to store Java objects in Postgres.
- Scala: A hybrid functional and object-oriented programming language which runs on the Java Virtual Machine for all of the newer services.
- CocoaPods: a dependency manager used in the iOS build toolchain that makes integration of third-party OSS components a breeze.
- AFNetworking: An iOS networking wrapper that makes it easier to write flexible communications over HTTP, which we use for data sync and attachment transport.
- FMDB: An iOS local database wrapper around SQLite that we use for convenience in loading and storing general ledger data on device.
How and Why does Kashoo Give Back to the Open Source Movement?
Kashoo is a small company focused on doing big things for small business owners managing their own books. In the process of finding success in doing that, we’ve stood on the shoulders of countless others who deserve our thanks. And that is why we jumped at the opportunity to give back when it presented itself with Synctos. We hope it will enable someone else to focus on delivering high quality products to their customers and we hope others will help us improve Synctos.
We have a lot of ideas about new and improved ways we can help small business owners stay on top of their books. To successfully deliver on our vision we will continue to use great projects from the open source community. And we hope we can continue to give back. As we do you can follow the projects on GitHub.
How does Kashoo’s Choice to Use and Support Open Source Impact our Customers?
Our goal at Kashoo is to help the small business owner plant their flag and find success. We do this by delivering peace of mind in knowing that your books are accurate and making it easy to keep them up to date. Ultimately, your choice to use Kashoo to run your business gives you the freedom to focus on growing your business instead of accounting.
Leveraging Open Source Software enables that same kind of focus for our small development team at Kashoo. For example, rather than expending time and energy building functionality that allows our customers to export to Excel or Google Sheets, we use open source libraries that have been proven to work and do 90% of the heavy lifting for us. This frees us up to build and improve on features that really matter to our subscribers - things like attachments of any type, or the ability to have your Stripe and Square transactions post directly to your general ledger - things that will ultimately save you time and money.