InvoicePlane is one of the leading open source invoicing applications out there. As the successor of the first version of FusionInvoice by Jesse Terry it evolved into a more complex application that is used by thousands of companies and freelancers all over the world. We will reach the project’s 4th birthday in a couple of months and it’s been some exciting years! A thriving community and over 50 different contributors helped me build this application.
Sure, the project had it’s ups and downs and I often wanted to quit. Unhappy users, only few time to work on the app and no outside contributions hit me hard several times. But isn’t this some kind of normal for open source projects that are not backed by a commercial product or a foundation? The point is that I never really quit and I won’t do so in the future. I already spend thousands of hours in the past years and I bet it will be much more in the future.
So, what about InvoicePlane 2?
First, a little bit of history.
InvoicePlane 2 is kind of a little curse for me. There were two big attempts to push the development of this new version. The first one should be based on Laravel, I think it was back in 2015. I had set up the repository and started working before realizing that just starting to work is a terrible idea. Detailed planning, structuring and a solid roadmap are needed in order to properly build an application that is not only solid but also modular. I aimed high and failed. InvoicePlane 2 was way too ambitious for a single developer and 2-3 contributors.
Some time later, after continuing development on InvoicePlane 1 I thought about version 2 again. I asked dozens of developers to help me, planned the project and failed again. Summoning the power of a dozens of developers before you have any real work for them didn’t work. Almost all of them quit and again, the project seemed too ambitious. I started my studies and the few time I had didn’t allowed me to continue my work.
So, what about InvoicePlane 2 now?
I began thinking about version 2 again some weeks ago. After pushing out the latest versions with various fixes and security updates, reading through the recent discussions and talking to users I realized that something needs to be done.
Current problems with InvoicePlane
The problem is, that in fact, InvoicePlane as a software grew too fast. We added new features before providing a rock solid base for the existing features. Projects and Tasks are two examples for this. The implementation is okay. Just okay.
The codebase is a mess to be honest and really needs to be optimized. At the current point the implementation of some features require way too much work because of the current state of the application.
Why InvoicePlane 2 might be a good idea
With the existing problems in the current version it seems just impossible to a) develop new features and implement them properly and b) make sure the app is both stable and secure.
So, there are two options now:
- rewrite the entire application with a completely new base
- rewrite the entire application based on the existing code.
Well, option 1 is a terrible idea. InvoicePlane is just not big enough to start from scratch and build an entire new application. It would take years. Several years. But we need a solution now. So what about option 2?
The main idea behind InvoicePlane 2
My idea is to start from scratch. But this time with the old application in mind. The base should be exactly the same. We use Codeigniter, the modular structure. No new plugin system, no new approach.
This has some big advantages over option 1:
- The basic structure stays the same so old developers can jump straight into working
- We can copy and paste stable and working features from InvoicePlane 1. We do not have to reinvent the wheel.
- While rewriting the application we review all parts of the application and can directly optimize all modules and rewrite major parts to be more accessible for new features, be faster and more secure.
- While working on the application we can document everything in a proper way without having to figure out how things are meant to work in the future.
This way InvoicePlane 2 will be more stable, more secure and ship with more exciting features.
What will change and new features
To make this short: here is a link to the new development wiki of version 2 that lists all things that will or may change.
Please notice that the list may change in the future.
Version 2 will not directly be backwards-compatible with version 1. Sorry.
The simple reason is that everything will change. From the way how amounts are calculated, how information is stored in the database and so on. The decision is quite easy: no backwards-compatibility means that we can go into development with a free mind. If we have to change how things work, they will be changed no matter if this breaks any function of version 1. Period.
But wait! Previous users should not get lost or be forced to stay with version 1. There will be an import function for all your data. But be sure that moving from v1 to v2 will not be a one-click process. Further details will be published once we reach a final state for version 2.
What do you think?
At this point InvoicePlane 2 looks like a very good idea. The app will be rock-solid, provide new features and provide an open base for new features.
So, what do you think?
- Fantastic Idea!
- Good idea, but… (see my comment)
Thanks for reading!
…wait, I want to help!
Super cool! Just drop me a line via direct message, via social media, on Slack or via email to discuss further details.
…wait, YOU can help!
Yes, you. Everyone can help by going trough our latest user survey and provide some insights on online payments and templates. Very important for further planning of InvoicePlane 2.
Start the survey here