From: Kevin W. <kw...@co...> - 2012-10-02 02:30:10
|
Hello all, As you may be aware, we've done a full merge of the Tk-Cocoa (native Mac OSX) backport into the main branch of Tk 8.5, so that it will more closely track development in 8.6 and not require the complexity of maintaining a separate branch. Going forward, Tk 8.5 as well as Tk 8.6 for OS X will be based on Cocoa. As a result of this, the question of what to do with the older Carbon version of Tk--in both 8.5 and 8.6--has arisen. When Tk-Cocoa was first merged into Tk 8.6/trunk a few years ago, it was decided to set up a separate "Carbon" subdirectory in the Tk source tree, which someone could build using an "--enable-carbon" switch during the configure phase. I believe Larry McVoy, and perhaps one or two others, were unhappy with simply dropping Carbon at that time. However, more than three years later, I'm not aware of any current Tk 8.6-based projects that make a point of using Carbon, nor am I aware of any in 8.5; ActiveState switched ActiveTcl to the Cocoa-based version a couple of years ago, and the version of Tk that Apple ships with OS X has been Cocoa-based since 10.6. Most projects simply go with Cocoa because that is now the most widely-supported version; if a project is using Carbon, it is likely by happenstance (an older build of Tk, for instance). Adding to these observations is the fact that that the Carbon version is increasingly hard to build on recent versions of OS X, especially in a 64-bit environment. I've heard reports that it won't build at all on 10.8 (can't confirm that myself as I'm still on Lion); Apple has moved from deprecating to actively removing some part of the Carbon framework from OS X. No significant work has been done on the Carbon version of Tk for about five years, since Daniel Steffen began working on the Cocoa port. Based on all this, from my perspective it makes little sense to continue supporting the Carbon version of Tk. It seems at this point just to take up space in the Tk source tree, but is not used anywhere that I can see. My vote would be to remove it from both 8.5 and 8.6, set the line of demarcation on Carbon at Tk 8.5.12, and move forward. I posted this question on the Tcl-Mac mailing list, and the consensus there lined up with what I put forth above: drop Carbon. The Tcl-Mac community isn't 100% happy with Cocoa--Tk's event loop is only imperfectly integrated with Cocoa's (a task that is by definition nearly impossible because there is such an impedance mismatch between the design of Cocoa and Tk at a low level)--but they generally agreed that it makes sense to move forward with a single toolkit focus. At this point, if the core group decides it's OK to remove Carbon, then we can simply delete it from the Fossil source tree and document the last point where it was supported: Tk 8.5.11 and Tk 8.6b2. I haven't yet set up a Carbon directory in the 8-5 main branch, but have simply merged Cocoa in over it. But before simply proceeding, I wanted to put the question out there and see if there was any support for retaining Carbon. Again, to reiterate: apart from the usual bugs and issues that arise, the Cocoa port has some fundamental issues, which are probably going to have to be documented and worked around rather than fixed. Nonetheless, these factors in my view do not outweigh the facts that the Carbon port is now obsolete, cannot build in a 64-bit environment, and is unsupported in every major binary distribution of Tk on the Mac. I believe that Tk would not suffer by removing that code from the source tree in both 8.5 and 8.6. Comments are not only welcome but invited. If there is a clear constituency for keeping the Carbon port around, we need to be aware of that. Thank you, Kevin -- Kevin Walzer Code by Kevin http://www.codebykevin.com |