On Thu, Apr 07, 2016 at 04:01:59PM -0500, Derek Martin wrote: > I mostly agree, but there are points where you have to simply > acknowledge that what you have does not lend itself to gradual > improvement, and a rewrite really is necessary. > almost every single sizeable project that chose the route of a (near) rewrite from scratch died, or the rewrite never took off. it's just not a reasonable approach. and why would it be? when you find yourself in this situation, there is always enough competition with a better codebase. so when you decide that you just can't work with your old code any more, your best bet is to join/fork your competition.
but then, "it's so bad, we have to rewrite it from scratch" just attests a lack of imagination .... > Where I work, some teams have had a "make the smallest useful change" > policy, justified by a desire to minimize risk while still getting > things done. > well, that's just stupid. > Over time, this has led to software that has become extremely fragile > and nearly impossible to change. > of course it has. kind of reminds me of mutt, actually. ;) continuous refactoring is a must-have in a project that aims to be maintainable. asses the architectural requirements of your new feature, refactor as necessary, _then_ add your feature. books have been written about this. give your boss one of them. > > > FWIW related to this: One thing I've always wanted to see was to > > > create a uniform API for the UI, and also for mailboxes, so that it > > > was easier to basically completely replace the UI, and to implement > > > new mail store types. If we used console-based widgets for the UI > > > > I believe there was a discussion a while back -- maybe 10 years or so, > > even -- about building on the mx.c framework to make mailbox drivers > > more of a thing. Anyone remember this? > in http://isync.sourceforge.net/ you can see how i actually pulled this off in a M.E.-originated codebase (though i'll admit that the main refactoring is a horrible blob - there was no git back then, and i was young ^^). generalizing the drivers some more wouldn't be an incredibly big deal ...