InvoicePlane 2. The next Step for the Project

:warning: This post is deprecated. See https://community2.invoiceplane.com/t/topic/6299/ for more information


Dear community,

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. :hugs:

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.
Another failure.

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:

  1. rewrite the entire application with a completely new base
  2. 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.

:point_right: Planned Features for version 2

Please notice that the list may change in the future.

Backwards compatibility

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.

:point_up: 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. :rocket:

So, what do you think?

  • Fantastic Idea!
  • Good idea, but… (see my comment)
  • Meh.
0 voters

Thanks for reading!
Kovah

…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. :+1:

…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

4 Likes

Sounds like a good plan. I agree starting from scratch would require too much work for little benefit when there’s only a small number of devs.

Choosing the best bits from IP1 and putting them into V2 certainly speeds things up and creates a stable platform that’s already tried and tested.

Sounds very promising! :smiley:

Second that! Apart from a few areas, IP1 is really mature and useable. would be a waste to throw all that away.
Still, the task shouldn’t be underestimated. I’ll contribute what little I have to offer :slight_smile:

I like invoiceplane a lot. I tried odoo and took a look at metasfresh. But both were a lot to big for me.
Templating for quotes and invoices were easy and flexible.
Well, there is still a list, that I am missing to use it in a slightly bigger environment or with more than one user like

  • authentication against LDAP
  • order confirmation - the missing link between a quote and an invoice.
  • roles - where are the users who are simply sales persons?
  • double currencies - quotes in EUR and USD
  • Finding revenue for certain products…

But I do not quite get the need for a major number change or rewrite. I had a rewrite with my own project, since the python framework was EOL, so we had to move - but I can not see this here.
So why not do these steps in a more smooth manner?

These features are already on the list. And something like order confirmation may be pretty easy to do too. Don’t know about LDAP as I never worked with it.

Besides that I already stated the reason for this idea in the text. The current code base is a big mess and implementing new features makes more work and probably produces more bugs than in a new and clear environment. So… let’s say that the InvoicePlane core is kind of EOL. :sweat_smile:

1 Like

I am just wondering about an open source mantra release early and release often.

The code might be a mess, I do not know it to the details. So I can simply wonder, if it is possible to clean up the code step by step or if it is really necessary to somehow start over. Or could it be possible to come to the same result in a more iterative way.

My idea is simply to allow regular output/releases - instead of maybe working a long time on version 2 without having installable releases in the meantime. Releases mean interesting new stuff for users, things to talk about, project activity, which make the project more attractive.

But again - I do not know the core code. So if “cleaning up the mess” is only possible by “starting over”, then so it be!

1 Like

I can only speak for myself about this. For me the code is a mess and no fun to work with. Which is kinda my fault because all contributors worked on new features with their own style and I missed to lead them to a unified style and structure.

About the releases: I would like to put my efforts into IP 2, yes. But that does not mean that there will be no new releases in the meantime. Versions 1.6 and 1.7 are still planned and will definitely be released.
Features like the “templates files for email content” can be implemented and then ported to version 2 with minimal efforts. I don’t expect that there will be much to change with features like this. Another cool feature would be the table sorting. Or email notifications for overdue invoices.
There are many features that can be coded for both versions. :tada:

3 Likes

Hello, do you have a date to us for the release of version 2 of invoiceplane. Thank you

IP v2 sounds like a good plan. Many of planned features will be great.

As cornelinux wrote, there is no connection between quote an invoice in IP v1. Sometimes it’s hard to look back at some business cases.

What do you think about idea “business cases”, which tied the whole communication with a customer? In some business cases, there are more steps, then quote and invoice and you need to share it with another guy.

  • inquiry
  • quote to a customer
  • refuse of the first quote
  • the second quote to the customer, if he wants a discount, change of a parameter, etc.
  • confirmation of order
  • our order to a supplier
  • invoice from a supplier
  • invoice
  • payment

In
IP v1, we add all these documents to quote as an attachment. A link between quote and invoice we did by the note in invoice and quote. If IP v2 allows tied these documents in one place, it will be great.

Hello, thank you so much for bringing up the idea of IP2! I believe it is a way to go. I run an upholstery business and IP1 is serving me well, though not without some challenges. From my point of view improving current application in the easiest way possible is optimal, as it will not waste time on setting everything up again from the scratch.

I really appreciate all the features that are already existing in IP1 though I think that IP2 is giving us a chance to take a fresh look on how the actual sale process in companies looks like. Then we could find a way to make a software that is flexible and customizable enough to assist users with different business needs.

I really like the process that @Pozda came up with. It is very similar in my company as well. I know that other companies might have different type of relationships with their clients, therefore might need a different process. IP2 could be flexible enough to allow for picking and choosing steps that are needed while developing more connections between different parts of IP that could simplify the project management.

However as the discussion is going forward, what do we really want the IP2 to be? (And what are we capable of delivering within the short to medium time frame?) Invoicing program with some aspects of project management, or a project management with all the aspects one could think of, like quotes, invoices, inventory and product management etc.

In my opinion IP2 should connect somehow separated pieces of IP1 and deliver more unified solution with whatever features community needs the most.

I’m curious about your thoughts! And again, thank you for all your involvement and hard work on this fantastic project!

Nope, not yet. Just want to properly think about this and plan everything. But it will take several months.
Development on InvoicePlane 1 will continue.

To answer @Pozda:
There already is a small link in the database for quotes to invoices but you are correct: the workflow must and will be optimized. I am not sure if there will be any steps in between or any additional documents as I don’t want to force users into a very strict workflow. We will see.

To answer @Sziha:
The focus group of the application stays the same: freelancers and small businesses with let’s say 2-10 employees. Howerver IP2 will feature a role system with at least 3 different roles that are customizable so larger businesses could use the app as well.
To address that one question: InvoicePlane will stay an invoicing system. Project management tools like in the current version will be still there but toggleable on/off. As an API is planned there is no need to develop extensive project management tools and just say: connect IP to your project management tool. Because there are hundreds of tools that focus on that.
It’s hard to say what is achievable in a short time span as I would like to release IP2 this year. I learned that being too ambitious can break down everything so there are some key tasks/features that are a must-have for the next version:

  • complete review of the current workflow (which also addresses the linking)
  • a role system
  • an API even if it’s basic for the first stable version
  • overhaul of the amount calculation system
  • overhaul of the PDF system and better templates
  • exporting of data to various formats

All other features are kind of optional for me and could be included in a later release. For me it’s important to have a new core that is clean and solid. That’s the main aim for IP2. A rock solid foundation that addresses some core problems and implements new features on a very low level.

1 Like

Hello ! Great to hear on V2 Project :slight_smile: i am excited :hugs::star_struck:

I need Following Future in V2

I want barcode scanner automatically recognize and add product information in row. Via SKU

Thanks a lot

I do not think it would be appropriate to force users to a strict workflow.

Quotes, invoices, projects, payments, tasks, orders, user files could optionally be grouped into a business case. A business case will actually be just an envelope linking everything related together. Eventually, global business case state could be set.

Users would not necessarily use it. They could create quotes and invoices separately, as they have done so far.

1 Like

I think you are totally right. Designing a well working core features and giving the ability for it to become a part of a larger business solution through API sounds like a good plan. Thank you!

1 Like

Hello @Kovah , what a great project on the way, I just installed this application and I loved it, however, it still has a long way to show us what it is made of and to kick others in the ass (jokes). I wait firm to the request of the cannon the release of the IP2

If you have to work hard in:

  • Appearance and interface using icons fonts (UI),
  • Increase currencies in a predefined package (the most important ones)
  • Communication with online store (ejm shopify, Eccomerce)
  • Show in the invoice and budget exchange rate (USD-EUR, USD-MXN, USD-PEN etc.)
  • Define that the product must have SKU and Manufacturer Code, MSRP price
  • Flat text import of (products, services, prices, currency type, etc.)

I am willing to contribute and spread to customers if they only integrate in (invoice and budget the exchange rate) and a customizable from UI configurable so that you can change details that should go in the template

Because we do not launch a massive support campaign for us to support directly

1 Like

Hello Guys,
Hope your are doing great,

I am PHP/CI developer and using Invoice plane since 1 year. its too good. I loved it.
Let me know if i can help you while development of new version.

Thanks
Ketan
NetSofters

3 Likes

I used IP for 2 years now. I love it. I host it on a Windows 2008 server in the cloud. I had some typing-issues at the beginning, but I am on 157 now and I face no issues.

I love this application. The fact that it’s basic and easy to learn made it a success. You may build a hosting business around it, rather than point your users to hosting companies. There may be something in it for you then?

1 Like

Hi, so I’ve been use the app for about a year and I must say, it’s tops. Given its Open-source. Also the religious nature of updates are amazing. That’s great. So yes we at Pseudocode Solutions would say the roadmap share is a fantastic idea!! We love every bit of it.

Maybe if the development team would also look at making a mobile app? And a little person request here, with the online payments, how about adding one which those of us in Ghana, Africa could make use of? We could provide you api documentation for ExpressPay.

Once again, thank you so much for the good work done.

Regards

1 Like