InvoicePlane 2 - Continue with CI or complete rewrite?

dev-ip2
Tags: #<Tag:0x00007ff4a7432850>

#1

Hello @Developers,

I already started working on InvoicePlane 2 by rewriting major parts of the app based on CodeIgniter 3. The question is if this makes any sense or if we should rewrite the whole app from the ground up.

###Should InvoicePlane be rewritten or should we stay with Codeigniter?

  • Stay with CodeIgniter
  • Complete Rewrite (Laravel?)

0 voters

:information_source: Please vote on the Framework Polls to choose your favourite foundation for the rewrite.


Github Repositories

InvoicePlane 2 Repository based on CodeIgniter
InvoicePlane 3 Repository based on Laravel


Related topics


V2 Rewrite - Framework Polls
Information for new Maintainers / Discussion
InvoicePlane v2 AJAX issues
Information for new Maintainers / Discussion
#2

Hi all:

I’ve been a few hours looking at the code and the structure of the database IP, in order to see the potential problems that may arise for future releases, and I have seen several things that I wanted to comment. I trust this is not understood as a criticism, although it may seem hard.

Both the code and the database look old and legacy, which is normal as it is a fairly old software.

Reviewing the database, I see no relationship between tables or seems to be normalized, and there arent indexes in the priority areas, which makes it slow in systems with many data or very old. Redoing the database (along with the migration of older installations), despite its difficulty, it should be a priority.
The fact that only now can use MySQL is another factor that must change, being that using ADO or like is very easy to offer support for several different databases, and is a basic feature in any self-host software

As for the code, regardless of the need to update libraries and framework (already known), it gives the impression of being made piece by piece, rather than be thought of as a whole. Each part is a separate module (which is not bad), no interfaces for common points (for example, an interface that defines export to PDF or other format), so create code or evaluation is more difficult. There is almost no documentation in the code (or code does not follow the principles of “Clean Code”, no Unit Test, etc.

And, most important of all, I cannt see there are a workflow defined in the application. Something like Budget -> Tasks -> Delivery note -> Billing -> Accounting -> Taxes / documents, allowing the clear interaction between the various parties.

IMHO, version 2.0 should be a review of the entire project, in structure and logic, and providing a migration script to carry the information from previous versions. Now that what is intended is to add new programming resources, I think the best time to raise this rate, simplify and clarify all the work, and especially one that allows IP be Open Source product level professionals.

Hope this would be useful


#3

@macklus I moved your post over here as it fit’s this discussion perfectly. Maybe you could also add your vote above.


#4

@Kovah mi vote is about complety rewrite, but i dont see how can i vote directly :wink:


#5

I manually added your vote, something went wrong with the poll.


#6

Hello @Contributor group!
You all worked with InvoicePlane in the past and I would like to ask you to participate in this discussion and add your vote to the poll. :slight_smile:

Additionally I would like to ask you if one of you is interested in some development work? We could really need some help with that if we decide to rebuild the app from the ground up. Feel free to contact me if you have any questions.


#7

Although I believe that IP should be completely redesigned from the ground up, I’m not sure on which framework. Maybe another poll on that if a rewrite is what’s wanted. (including a RYO option)

Mike


#8

Yeah we will do it. We now already have three options.


#9

I’m not a developer, and I know there’s always more attractive in rewriting code than manteining. I don’t really know how limited is Invoice Plane due to the framework. Initial idea was cause Code Igniter was going to be deprecated, but this is not an issue right now.
Having said that, rewriting the whole program always takes a lot of resources. Need to measure exactly if those resources are available, and how is gonna be the impact of that in the final users (as they will never notice the ‘new code’ but won’t be ok with a long time without updates).
It is even possible that during the process of rewriting the team get lost and becomes the end of the program (as it happened with Netscape). I’m pretty sure rewriting will bring new posibilities to the code and it’s gonna be more attractive for developers, but I’m not sure the impact of it could be good for Invoice Plane in the end.
From my point of view will be great if:

  1. There’s at least two different teams, working together but in both versions of the code
  2. There is a clear blueprint with releases and dates
  3. The objectives of the new program are clear for everybody (like make it modular, bring new features that wouldn’t be possible with the old framework)
  4. The community and the final users agree and understand this change
    I’m not sure if Invoice Plane’s community is big enough to handle such a huge change, but in case it is, it’s gonna be amazing how far this could get.
    Otherwise Invoice Plane is already a great software, with not many resources and regular updates I think it can really reach a bigger community before making a change like this one.
    And as I said before, a modular platform with more features would be great, as other non-free programas like paypanther.
    My 2 cent :stuck_out_tongue:

#10

I completely agree. It is a big risk to decide for this step but I don’t think that InvoicePlane has a great future if we stay with CodeIgniter. I worked with it for such a long time and even the new version 3 is not that better (my opinion). Moving to a new, more powerful and supported Framework like Yii, Laravel or Symfony ifself makes more sense than “wasting” resources in trying to make the best out of the current state of the app.

Another reason why a rewrite makes more sense: most parts of the app are written in a very confusing way and I had much problems with understanding how the app works. A rewrite would give us the chance in reinventing processes and - way more important - to properly document everything that was written.

About the rewrite and the risk that developers may bail out:
The last time I wanted to push a complete rewrite, two developers quit their work and left me alone with the whole thing so I had to cancel the rewrite.
If this happens again with the new developers I will then shut down the whole project.


#11

Whats with this poll: V2 Rewrite - Framework Polls
Isn’t it the same one?
Maybe add Symfony (Silex) as Framwork. Symfony is well known for stability.

So here are some good reasons to think about … why using symfony: https://www.christophh.net/2014/08/20/ask-christoph-symfony-over-laravel/


#12

No it’s not the same one. This poll here asks if InvoicePlane should be rewritten, the other you linked asks how.
Symfony is already available for the framework poll.


#13

Ok, I would preffer a rewrite, IF the migration is given from the older Versions.
Don’t need to be backward compatible, but there must be a stable way (even if a standalone script) to migrate data from older IP to the new one.

Because people will not support newer IP-Versions, if they have to to a REALLY BIG STEP, to migrate there given Data to a new system (my experiences with customers… and I think in the same Way).

I preffer to modularize InvoicePlane to make it easyly maintainable.


#14

IF so, then better remove (laravel?) out of the poll. It’s confusing.


#15

For sure, the migration from InvoicePlane 1 is one of the most important features.

Ps: Polls that already have votes cannot be altered anymore.