In December our staff discovered a batch of C++ code online that makes spreadsheet-like tables for Windows. It didn’t take long to add their sample code to Goldenseal, and get it displaying a spreadsheet on the screen. It looked a lot like Excel for Windows 95, without the formulas. Not surprising, since the code was written back then.
Getting their code to be fully usable for our needs has been more challenging. Fortunately, we’re making steady progress on that. It really helps to see all the source files, and be able to change it.
First step was to remove unnecessary features. The ideal way to do that is to remove them one at a time, and test the code to make sure it still works after each removal. Sadly, everything was too interconnected for that. So we hacked away and deleted everything all at once. Then spent a week fixing hundreds of error messages, until it worked again. Very similar to the demolition phase in a gut/rehab project.
With the raw framing exposed, we are now adapting the code to better suit Goldenseal’s needs. By the time it’s done, I suspect almost all will be rewritten. Some of the work is updating 90s code to modern standards. Some is plain old refactoring and redesign. For example, they store cells in columns then rows, but Goldenseal works better if they are in rows then columns. They use 0 for the first row, and we’d rather start with 1 like normal humans.
When we worked on the Mac version, Apple’s NSTableView class did have better overall design than the original Goldenseal. As we revise the Windows tables, it’s a chance to work in some of those improvements. This is the third batch of table code our staff has created, and each one is slightly better.
20 years ago, we thought Goldenseal would last for decades without big rewrites. Now we are more
cynical realistic. The goal now is code that works well for the moment, and isn’t too difficult to adapt in the future.