We are gradually ramping up the programming work on the Mac version of Goldenseal Pro, accounting software.
After starting on the interface classes, we soon realized that almost everything needs to be written in Objective-C. That is the only way to hook into our existing C++ code. We were really psyched to use the newer Swift language, but switching between three different languages drove us nuts. Partly because different concepts, but mostly because the punctuation is very different. So, Swift is out, unless we find good reasons to use it later. We will still use Swift for future iPhone/iPad development, because that will be entirely new code that won’t need to integrate with anything old.
Back when we tried subcontracting the upgrade work, the contract had 6 payment draw stages of approximately equal sizes. Draw 1 is to open a list window (for example, anything from Options-Payment Terms), and then view and save list records. Now that the programming work is in-house, we will use the same milestones.
We are still climbing the learning curve for Objective-C, but the Pro version already has menu commands that open windows and show a list of items. We still need to link it to the database and have it load screen layouts, then that will finish draw 1. This is also the time to design many basic structures, which is good reason to take it slow, and do it right.
The Cocoa framework was developed in the mid-1980s for the NextStep computer. It’s a ‘black box’ with many nifty features, but it can be challenging (especially for large apps like ours). We aren’t the only ones who still need a major rewrite: Microsoft is finally releasing their first Cocoa and 64-bit code this year, in Office 2016.
On the plus side, Cocoa lets you build a lot of interface with very little code. It’s going to allow some nifty improvements to the Goldenseal user interface. For example, popup buttons you can access from the keyboard.
On the minus side, Cocoa is hard to debug, and lacking in practical documentation. We have been perusing open-source projects, just to see how other people handle ‘the basics’. Cocoa is also changing constantly, so at least half the answers for it in Stack Overflow are outdated and incorrect. We have learned to check the date on all books and online info. Much before 2013 and it is probably wrong. Anything after 2014 will be for Swift, not Objective-C. The ‘sweet spot’ is very narrow!
Some year soon, Apple will probably change the Macintosh from Intel to their own ARM chips. Most likely they will also replace Cocoa with a new Swift-based OS, though that will be an enormous project. We’ve learned our lesson, and are now designing things so the next remodeling round will be easier.