Are There Plans For A GUI Overhaul?

John Ralls jralls at ceridwen.us
Wed Oct 5 16:33:29 EDT 2016


> On Oct 5, 2016, at 5:44 PM, Dave <linuxluser at gmail.com> wrote:
> 
> Thanks, Jon and Ted.
> 
> John, you inspired my optimism. Ted, you gave me a healthy dose of caution. :)
> 
> So, I've done SysAdmin work for a living. In this field, lines of code are thought of as liabilities. If I can get something done with 10 lines of BASH code, I'll probably do it. Almost always, there needs to be a tangible result to efforts within 1-2 weeks of starting. So I'm used to being ruled more by economy and less by elegance. If I have an elegant solution, but it will take time to write, I have to essentially work in secret, burning the midnight oil. And even then, the idea may have actually been a bad one and I just wasted all that time that I didn't get paid or praised for. :(
> 
> This is why I've by a Pythonista for some time. I use OOP when it makes sense, and don't when it doesn't. I write a working solution today, and can easily come back tomorrow to abstract this or that and make it maintainable for my future self and others. So I've learned a little about evolving a project, but only really in Python.

Dave,

I've also done sysadmin on and off for 30 years or so, and I do understand the need for quick-and-dirty in that environment.

Development is different. Elegant isn't necessarily required, but intelligible is. It's *really* important that what you write is clear and concise so that when it needs changing a  year or 10 down the road whoever ends up with the job (which might be you! never overestimate how much you'll remember about what you wrote 6 weeks ago, never mind 6 years ago) must be able to quickly understand what the code does so that it's not too hard to figure out the required mods. Code that clearly and concisely gets the job done while expressing the intent without requiring a lot of comments is the ultimate goal. The goal for a C++ core is the major release after next, expected around the end of 2020. By Ted's metric a full-time programmer (working only 5 days a week with 2 off rather than the 365 he wanted--typical project manager) would produce 800,000 lines of code and (if he's well disciplined and keeps his functions to between 20 and 50 lines each) 25,000 functions. Since C++ is a lot more expressive than C or Scheme, that's
pretty much a complete rewrite of GnuCash.

OTOH, Ted left off a crucial step: Write tests. Lots of tests. That takes time too, so our notional full-time programmer will rewrite only *half* of GnuCash in 4 years.

Regards,
John Ralls




More information about the gnucash-devel mailing list