Merging TkAqua Cocoa port into Tk HEAD

View: New views
20 Messages — Rating Filter:   Alert me  
< Prev | 1 - 2 | Next >

Merging TkAqua Cocoa port into Tk HEAD

by Daniel A. Steffen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi All,

as you may know, I have been working on a port of TkAqua to the Cocoa
API for some time, with the goal to get TkAqua to run on 64bit, and to
move away from Mac OS X Carbon API that has been deprecated.

The Cocoa port has now been feature complete for about a month and I
believe is of equal or better quality than the existing TkAqua
implementation, it has been built, tested and is already being used
successfully by various parties, and IMO is now ready to be merged
into the Tk mainline.

The port is available as patches against HEAD (large!)
        http://www.categorifiedcoder.info/tcltk/patches/tk-de-carbon.diff.bz2
        http://www.categorifiedcoder.info/tcltk/patches/tcl-de-carbon.diff.bz2
or from github with full history:
        http://github.com/das/tcltk/commits/de-carbon

The patch to Tcl only touches the macosx README and the Xcode
projects, related generally applicable changes to Tcl (in particular
the revised macosx notifier) have already gone in a few weeks ago for
8.5.7.

The principal new constraint of the TkAqua Cocoa port is that it
requires Mac OS X 10.5 or later (TkAqua currently requires Mac OS X
10.3).

After discussion with Jeff and other TkAqua maintainers and
distributors, we have decided that the Tk 8.6 release is a reasonable
moment to drop support for pre-10.5 OS X, as users who still need to
run on earlier OS versions should be able to remain with 8.5 for some
time.

There is a 8.5 backport of TkAqua Cocoa, which I will continue to
maintain as a fork at github (to avoid a system requirements jump in a
8.5 point release):
        http://github.com/das/tcltk/commits/de-carbon-8-5

There should be no script-visible changes to standard Tk functionality
introduced by the Cocoa port; there are some additions of
TkAqua-specific functionality (c.f. excerpt from tk/macosx/README
below) and a few removals of obsolete unsupported Carbon-specific bits
in the tk::mac namespace.
Various longstanding missing features have been implemented (e.g. [wm
aspect]) and a number of bugs tightly tied to the old implementation
are fixed by the rewrite. Drawing performance is also significantly
improved (e.g. >2x speedup of a benchmark that draws many short lines
on a canvas).

At the public Tk C API level, there is a tiny signature change to
macosx-specific API in the public plat stubs table (replacing two
Carbon pointer types that should never have entered a public x-plat
header by void*).
Otherwise, public API is unchanged and extensions that use only public
Tk API are unaffected and should continue to work unchanged (verified
with extensions like TkImg and TkTable).
Thus I believe there is no requirement for a TIP for the integration
of the Cocoa port changes.

There are also no additions/removals to the private plat stubs table,
but a significant number of signature changes (mostly turning more
Carbon pointer types into void*).
However, many of the macosx private stubs API calls had unfortunately
exposed details of the internal Carbon implementation that could not
be preserved, such calls had to be neutered and are now just NOPs. Tk
extensions that rely on these or make other assumptions about TkAqua
internals (like the presence of QuickDraw and QD ports) will have to
be ported to support TkAqua Cocoa (e.g. Treectrl and Tile are known to
be affected).

I am planning to move forward with the merge tonight (CEST), so if you
have objections, please speak up soon!

Cheers,

Daniel

--
** Daniel A. Steffen                   **
** <mailto:das@...>  **


==== From tk/macosx/README ====

- The default metrics of native buttons, radiobuttons, checkboxes and
menubuttons in the Cocoa-based Tk 8.6b2 and later preserve
compatibility with the older Carbon-based implementation, you can turn
off the compatibility metrics to get more native-looking spacing by
setting:
        set tk::mac::useCompatibilityMetrics 0

- TkAqua provides access to native OS X images via the Tk native
bitmap facility (including any image file readable by NSImage). A
native bitmap name is interpreted as follows (in order):
    - predefined builtin 32x32 Tk icon name (stop, caution, document, etc)
    - name defined by [tk::mac::iconBitmap]
    - NSImage named image name
    - NSImage url string
    - 4-char OSType of IconServices icon
the syntax of [tk::mac::iconBitmap] is as follows:
        tk::mac::iconBitmap name width height -kind value
where -kind is one of
    -file    icon of file at given path
    -fileType    icon of given file type
    -osType    icon of given 4-char OSType file type
    -systemType    icon for given IconServices 4-char OSType
    -namedImage    named NSImage for given name
    -imageFile    image at given path
This support was added with the Cocoa-based Tk 8.6b2.

- TkAqua cursor names are interpred as follows (in order):
    - standard or platform-specific Tk cursor name (c.f. cursors.n)
    - @path to any image file readable by NSImage
    - NSImage named image name
Support for the latter two was added with the Cocoa-based Tk 8.6b2.

- The standard Tk dialog commands [tk_getOpenFile],
[tk_chooseDirectory], [tk_getSaveFile] and [tk_messageBox] all take an
additional optional -command parameter on TkAqua. If it is present,
the given command prefix is evaluated at the global level when the
dialog closes, with the dialog command's result appended (the dialog
command itself returning an emtpy result). If the -parent option is
also present, the dialog is configured as a modeless (window-modal)
sheet attached to the parent window and the dialog command returns
immediately.
Support for -command was added with the Cocoa-based Tk 8.6b2.

- The TkAqua-specific [tk::mac::standardAboutPanel] command brings the
standard Cocoa about panel to the front, with all its information
filled in from your application bundle files (i.e. standard about
panel with no options specified). See Apple Technote TN2179 and the
AppKit documentation for -[NSApplication
orderFrontStandardAboutPanelWithOptions:] for details on the
Info.plist keys and app bundle files used by the about panel.
This support was added with the Cocoa-based Tk 8.6b2.

- TkAqua has three special menu names that give access to the standard
Application, Window and Help menus, see menu.n for details.
Support for the Window menu was added with the Cocoa-based Tk 8.6b2.

- The TkAqua-specific command [tk::unsupported::MacWindowStyle style]
is used to get and set Mac OS X-specific toplevel window class and
attributes. Note that the window class and many attributes have to be
set before the window is first mapped for the change to have any
effect.
The command has the following syntax:
        tk::unsupported::MacWindowStyle style window ?class? ?attributes?
The 2 argument form returns a list of the current class and attributes
for the given window. The 3 argument form sets the class for the given
window using the default attributes for that class. The 4 argument
form sets the class and the list of attributes for the given window.
Window class names:
    document, modal, floating, utility, toolbar, simple, help, overlay
Window attribute names:
    standardDocument, standardFloating, resizable, fullZoom, horizontalZoom,
    verticalZoom, closeBox, collapseBox, toolbarButton, sideTitlebar,
    noTitleBar, unifiedTitleAndToolbar, metal, hud, noShadow, doesNotCycle,
    noActivates, hideOnSuspend, inWindowMenu, ignoreClicks, doesNotHide,
    canJoinAllSpaces, moveToActiveSpace, nonActivating
Note that not all attributes are valid for all window classes.
Support for the 3 argument form was added with the Cocoa-based Tk
8.6b2, at the same time support for some legacy Carbon-specific
classes and attributes was removed (they are still accepted by the
command but no longer have any effect).

- The Cocoa-based TkAqua can be distinguished from the older
Carbon-based version via the [winfo server .] command, example output
on Mac OS X 10.5.7:
    Cocoa-based: CG409.3 Apple AppKit GC 949.46 Mac OS X 1057
    Carbon-based: QD10R30 Apple 1057

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: Merging TkAqua Cocoa port into Tk HEAD

by Adrian Robert-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On May 17, 2009, at 3:43 PM, Daniel A. Steffen wrote:

> After discussion with Jeff and other TkAqua maintainers and
> distributors, we have decided that the Tk 8.6 release is a reasonable
> moment to drop support for pre-10.5 OS X, as users who still need to
> run on earlier OS versions should be able to remain with 8.5 for some
> time.
>
> There is a 8.5 backport of TkAqua Cocoa, which I will continue to
> maintain as a fork at github (to avoid a system requirements jump in a
> 8.5 point release):
> http://github.com/das/tcltk/commits/de-carbon-8-5

Hi,

This is great news and thanks for the tremendous work!

However, as a Tcl/Tk-based app developer, I'm concerned about the  
dropping of support for 10.4 (Tiger), though doing it with 8.6 is  
obviously better than 8.5.x.

Are there / will there be backports of the PNG and font chooser  
features (to be) introduced in 8.6 to 8.5?  It would be nice to bring  
those features to Tiger users.

Failing that, what about delaying the merge, if it is going to remove  
aqua-carbon as well, until after 8.6b2 is released, so the PNG and  
zlib functionality can make it in to a release, albeit a beta one?  
This would also allow for a period of wider testing of the Cocoa  
implementation (from people using CVS head) before putting it into a  
release.


One functionality question: two major gaps in the aqua-Carbon  
functionality were support for Services and support for Asian  
language text input.  Are these remedied in Cocoa or are they open  
projects?

thanks,
Adrian


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: Merging TkAqua Cocoa port into Tk HEAD

by Daniel A. Steffen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Adrian,

On Sun, May 17, 2009 at 11:27, Adrian Robert <adrian.b.robert@...> wrote:

> Are there / will there be backports of the PNG and font chooser features (to
> be) introduced in 8.6 to 8.5?  It would be nice to bring those features to
> Tiger users.

8.5 is feature frozen, so not likely to happen

> Failing that, what about delaying the merge, if it is going to remove
> aqua-carbon as well,

it will

> until after 8.6b2 is released, so the PNG and zlib
> functionality can make it in to a release, albeit a beta one?  This would
> also allow for a period of wider testing of the Cocoa implementation (from
> people using CVS head) before putting it into a release.

if it goes into the CVS head now it goes into 8.6b2...

IMO delaying the merge post 8.6b2 will significantly reduce the amount
of testing the cocoa port receives before 8.6 goes final, so I'm not
too keen on that

> One functionality question: two major gaps in the aqua-Carbon functionality
> were support for Services and support for Asian language text input.  Are
> these remedied in Cocoa

services, no, were you thinking of a Tk app as a service consumer? for
what kind of services, modification of text selection in a text
widget?
there is no provision for that sort of thing in the generic tk text
widget code ATM, so it would need generic (TIPable) changes, feel free
to write something up (e.g. [clipboard] based), it would probably not
be very hard to add once a design is nailed down (services API is
pasteboard based and very similar to the pasteboard use in the
clipboard code in TkAqua Cocoa).

Asian language text input does not work currently, along with other
advanced cocoa text input features, mainly because Tk text input is
based on raw key events and we do not use the full cocoa text input
pipeline. It is not clear to me ATM how we can preserve Tk's
requirement to bind to raw key events (with any modifier) without
relying on raw key events.

Cheers,

Daniel

--
** Daniel A. Steffen                   **
** <mailto:das@...>  **

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Lars Hellström :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Daniel A. Steffen skrev:
> The principal new constraint of the TkAqua Cocoa port is that it
> requires Mac OS X 10.5 or later (TkAqua currently requires Mac OS X
> 10.3).
>
> After discussion with Jeff and other TkAqua maintainers and
> distributors, we have decided that the Tk 8.6 release is a reasonable
> moment to drop support for pre-10.5 OS X,

Ouch! And me not having a single machine running 10.5.

> as users who still need to
> run on earlier OS versions should be able to remain with 8.5 for some
> time.

8.5 won't do for me I'm afraid, but I suppose there's always the 8.6b1
I've got running now.

Still, since /my/ 8.6 dependency is entirely in Tcl, I can't help
wondering how much work it will be to link Tk 8.6b1 (or last pre-merge
CVS version) against Tcl 8.6.0...

Lars Hellström


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: Merging TkAqua Cocoa port into Tk HEAD

by Adrian Robert-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On May 17, 2009, at 4:54 PM, Daniel A. Steffen wrote:

>> One functionality question: two major gaps in the aqua-Carbon  
>> functionality
>> were support for Services and support for Asian language text  
>> input.  Are
>> these remedied in Cocoa
>
> services, no, were you thinking of a Tk app as a service consumer? for
> what kind of services, modification of text selection in a text
> widget?
> there is no provision for that sort of thing in the generic tk text
> widget code ATM, so it would need generic (TIPable) changes, feel free
> to write something up (e.g. [clipboard] based), it would probably not
> be very hard to add once a design is nailed down (services API is
> pasteboard based and very similar to the pasteboard use in the
> clipboard code in TkAqua Cocoa).

It would be good to support service provision at the script level --  
allow a script to be called when an info.plist-specified service is  
requested from the app.  On the consumer end, some sort of selection  
modification would be a good long-term goal, but most services are  
not of this type, but more along the lines of "open XX in YY", or  
"new window with selection", etc. that only need the clipboard to be  
sent.  If I get some time I'll try to propose something more specific.


> Asian language text input does not work currently, along with other
> advanced cocoa text input features, mainly because Tk text input is
> based on raw key events and we do not use the full cocoa text input
> pipeline. It is not clear to me ATM how we can preserve Tk's
> requirement to bind to raw key events (with any modifier) without
> relying on raw key events.

Multi-keystroke input methods (e.g. for Chinese characters) work in  
Tk under Windows currently, so maybe the raw vs. processed issue for  
bindings could be handled the same way as there.  Implementation-
wise, an NSView can implement the NSTextInput protocol and have  
access to both the raw keys and the characters composed by whatever  
system input manager is active.  (The Cocoa port of emacs does this.)


-Adrian


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: Merging TkAqua Cocoa port into Tk HEAD

by Kevin Walzer-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Daniel A. Steffen wrote:

> Hi All,
>
> as you may know, I have been working on a port of TkAqua to the Cocoa
> API for some time, with the goal to get TkAqua to run on 64bit, and to
> move away from Mac OS X Carbon API that has been deprecated.
>
> The Cocoa port has now been feature complete for about a month and I
> believe is of equal or better quality than the existing TkAqua
> implementation, it has been built, tested and is already being used
> successfully by various parties, and IMO is now ready to be merged
> into the Tk mainline.
>
> The port is available as patches against HEAD (large!)
> http://www.categorifiedcoder.info/tcltk/patches/tk-de-carbon.diff.bz2
> http://www.categorifiedcoder.info/tcltk/patches/tcl-de-carbon.diff.bz2
> or from github with full history:
> http://github.com/das/tcltk/commits/de-carbon
>
> The patch to Tcl only touches the macosx README and the Xcode
> projects, related generally applicable changes to Tcl (in particular
> the revised macosx notifier) have already gone in a few weeks ago for
> 8.5.7.
>
> The principal new constraint of the TkAqua Cocoa port is that it
> requires Mac OS X 10.5 or later (TkAqua currently requires Mac OS X
> 10.3).
>
> After discussion with Jeff and other TkAqua maintainers and
> distributors, we have decided that the Tk 8.6 release is a reasonable
> moment to drop support for pre-10.5 OS X, as users who still need to
> run on earlier OS versions should be able to remain with 8.5 for some
> time.
>
> There is a 8.5 backport of TkAqua Cocoa, which I will continue to
> maintain as a fork at github (to avoid a system requirements jump in a
> 8.5 point release):
> http://github.com/das/tcltk/commits/de-carbon-8-5
>
> There should be no script-visible changes to standard Tk functionality
> introduced by the Cocoa port; there are some additions of
> TkAqua-specific functionality (c.f. excerpt from tk/macosx/README
> below) and a few removals of obsolete unsupported Carbon-specific bits
> in the tk::mac namespace.
> Various longstanding missing features have been implemented (e.g. [wm
> aspect]) and a number of bugs tightly tied to the old implementation
> are fixed by the rewrite. Drawing performance is also significantly
> improved (e.g. >2x speedup of a benchmark that draws many short lines
> on a canvas).
>
> At the public Tk C API level, there is a tiny signature change to
> macosx-specific API in the public plat stubs table (replacing two
> Carbon pointer types that should never have entered a public x-plat
> header by void*).
> Otherwise, public API is unchanged and extensions that use only public
> Tk API are unaffected and should continue to work unchanged (verified
> with extensions like TkImg and TkTable).
> Thus I believe there is no requirement for a TIP for the integration
> of the Cocoa port changes.
>
> There are also no additions/removals to the private plat stubs table,
> but a significant number of signature changes (mostly turning more
> Carbon pointer types into void*).
> However, many of the macosx private stubs API calls had unfortunately
> exposed details of the internal Carbon implementation that could not
> be preserved, such calls had to be neutered and are now just NOPs. Tk
> extensions that rely on these or make other assumptions about TkAqua
> internals (like the presence of QuickDraw and QD ports) will have to
> be ported to support TkAqua Cocoa (e.g. Treectrl and Tile are known to
> be affected).
>
> I am planning to move forward with the merge tonight (CEST), so if you
> have objections, please speak up soon!
>
> Cheers,
>
> Daniel

Daniel,

Congratulations on this major accomplishment. It ensures that Tk will
remain viable on OS X for years to come. All of us developing in Tk on
the Mac thank you.

Best,
Kevin


--
Kevin Walzer
Code by Kevin
http://www.codebykevin.com

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Larry McVoy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> The principal new constraint of the TkAqua Cocoa port is that it
> requires Mac OS X 10.5 or later (TkAqua currently requires Mac OS X
> 10.3).

Does this mean that if we upgrade to 8.6 we drop support for anything
earlier than 10.5 for _all_ tk apps?  

Or is it only an issue if you want to use the new stuff?  I.e., is it
a flag day or a choice?

If it is a flag day, that raises serious problems for us, we'll probably
have to stay one whatever is the pre-merge.  10.5 is the current release
and it's awfully hard to tell customers they have to upgrade their os
that is only a couple of years old (we support other platforms with
releases as old as 1996, or 13 years).

Perhaps we're the only commercial vendor left using tk that is always
interested in 8.6.  I would have thought there are others but maybe
not.  Anyway, if it is a flag day let me register my strong vote
against that idea.
--
---
Larry McVoy                lm at bitmover.com           http://www.bitkeeper.com

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Kevin Walzer-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Larry McVoy wrote:

> Perhaps we're the only commercial vendor left using tk that is always
> interested in 8.6.  I would have thought there are others but maybe
> not.  Anyway, if it is a flag day let me register my strong vote
> against that idea.

I'm a much smaller commercial vendor than Bitmover that also uses Tk
(exclusively) on Mac OS, and I strongly endorse the move to support only
Cocoa in 8.6. 8.5 will continue to be available if you need pre-10.5
support. I am curious how many of your customers use older versions of
Mac OS? The tendency among Mac users is to migrate very quickly to the
latest OS release, and with 10.6 due out later this year--even in the
next couple of months--10.5 will soon become a legacy platform.

More importantly, the Carbon foundation that currently underlies Tk Aqua
is nearing obsolescence. It doesn't support 64-bit, Apple is not doing
any more development of it, and so on. The move to Cocoa ensures Tk's
viability as a native toolkit on OS X for years to come. In my view that
fact alone makes this a necessary move for Tk Aqua.

--
Kevin Walzer
Code by Kevin
http://www.codebykevin.com

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Youness Alaoui-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sun, May 17, 2009 at 05:38:39PM -0400, Kevin Walzer wrote:

> Larry McVoy wrote:
>
> > Perhaps we're the only commercial vendor left using tk that is always
> > interested in 8.6.  I would have thought there are others but maybe
> > not.  Anyway, if it is a flag day let me register my strong vote
> > against that idea.
>
> I'm a much smaller commercial vendor than Bitmover that also uses Tk
> (exclusively) on Mac OS, and I strongly endorse the move to support only
> Cocoa in 8.6. 8.5 will continue to be available if you need pre-10.5
> support. I am curious how many of your customers use older versions of
> Mac OS? The tendency among Mac users is to migrate very quickly to the
> latest OS release, and with 10.6 due out later this year--even in the
> next couple of months--10.5 will soon become a legacy platform.
>
> More importantly, the Carbon foundation that currently underlies Tk Aqua
> is nearing obsolescence. It doesn't support 64-bit, Apple is not doing
> any more development of it, and so on. The move to Cocoa ensures Tk's
> viability as a native toolkit on OS X for years to come. In my view that
> fact alone makes this a necessary move for Tk Aqua.
>
I agree that the move to Cocoa is important for the Tk
community, and I would definitely vote for integrating those
patches.. all I'm wondering is if it's possible to have
Carbon AND Cocoa support in the core.. if not, then Larry, I
guess you'd have to release two bundles, one with TK 8.5 and
one with Tk 8.6 for greater compatibility..

KaKaRoTo

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Daniel A. Steffen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Larry,

On Sun, May 17, 2009 at 22:40, Larry McVoy <lm@...> wrote:
>> The principal new constraint of the TkAqua Cocoa port is that it
>> requires Mac OS X 10.5 or later (TkAqua currently requires Mac OS X
>> 10.3).
>
> Does this mean that if we upgrade to 8.6 we drop support for anything
> earlier than 10.5 for _all_ tk apps?

yes, for TkAqua anyway, you could always fallback to TkX11 of course

> Or is it only an issue if you want to use the new stuff?  I.e., is it
> a flag day or a choice?

a flag day, IMO it is not feasible to interleave the two codebases
into the same sourcefiles via #ifdefs, it would make things even less
maintainable than the current Carbon code (difficult enough to
maintain as is)

the only reasonable other option would be to have a separate source
directory in tk for the new cocoa port (or better move the contents of
the current 'macosx' directory to tk/macosx-legacy or somesuch) and
add a configure flag that lets you switch back to carbon.

The main drawback with that idea (other than making a mess in
unix/Makefile.in) are lack of maintainer resources.
Quite honestly, I have zero interest in continuing to maintain the
Carbon code now that the Cocoa port is done, and me being the only
active Mac OS X Tk maintainer, the legacy codebase is certain to
bitrot fairly quickly on the ever-changing HEAD.

As evidence of this, see the rapid bitrot of the mac classic codebase
(which still ships with Tcl/Tk 8.4), even though this was on a less
frequently changing maintenance branch it became unbuildable pretty
much immediately after I removed mac classic support from the mainline
and stopped maintenance on the 8.4 codebase, and now is only so much
dead weight that has been shipping with the last 10 or so 8.4
releases, all because we wanted to be prudent and not withdraw support
for the platform on the stable branch at the time (in effect the users
lost support very quickly anyway because nobody was maintaining the
code anymore...).

> If it is a flag day, that raises serious problems for us, we'll probably
> have to stay one whatever is the pre-merge.  10.5 is the current release
> and it's awfully hard to tell customers they have to upgrade their os
> that is only a couple of years old (we support other platforms with
> releases as old as 1996, or 13 years).

I'm guessing that none of those have the update frequency and API
churn of Mac OS X however, the Carbon API that TkAqua is using
currently is EOL and in life support mode.

FWIW Omni has some stats on 10.5 adoption at large, over 55% of their
users are running 10.5 currently, and once 10.6 is out (which will
almost certainly be before Tk 8.6 goes final), the percentage of users
still running 10.4 or earlier is certain to decrease even more rapidly
    http://update.omnigroup.com/

> Perhaps we're the only commercial vendor left using tk that is always
> interested in 8.6.  I would have thought there are others but maybe
> not.  Anyway, if it is a flag day let me register my strong vote
> against that idea.

Larry, you being a commercial vendor and all, if this is a big issue
for you, I would suggest you put up and provide maintainer resources
for the Carbon port!

If one of your engineers takes over maintaining the Carbon codebase, I
will put in the time to modify the buildsystem for a parallel carbon
and cocoa source dirs (which will still take several weeks to get done
however, swamped with work that actually pays the bills ATM) and I
will happily be the maintainer for TkAqua Cocoa only from then on and
let you guys deal with Carbon...

I won't put in that time however just to be left holding the bag with
an unmaintained bitrotting legacy codebase that we'll be dragging
around for several more years without it doing any good to anybody...

Cheers,

Daniel

--
** Daniel A. Steffen                   **
** <mailto:das@...>  **

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Larry McVoy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

The issue for us is not that carbon is going away, it's that 10.4 support
is going away.  I'm perfectly happy to go through the growing pains of
moving over to the Cocoa based aqua toolkit.

What I'm not happy about is dropping 10.4 support.  10.4 is still an
actively supported release, it was a good release, and as a vendor it
is not my place to tell people to get off a platform before the platform
is end of lifed.

One of tcl/tk's claims to fame is backwards compat and platform support.
Dropping 10.4 seems to run counter to the goals of the system.
--
---
Larry McVoy                lm at bitmover.com           http://www.bitkeeper.com

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Larry McVoy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sun, May 17, 2009 at 05:52:55PM -0400, Youness Alaoui wrote:

> On Sun, May 17, 2009 at 05:38:39PM -0400, Kevin Walzer wrote:
> > Larry McVoy wrote:
> >
> > > Perhaps we're the only commercial vendor left using tk that is always
> > > interested in 8.6.  I would have thought there are others but maybe
> > > not.  Anyway, if it is a flag day let me register my strong vote
> > > against that idea.
> >
> > I'm a much smaller commercial vendor than Bitmover that also uses Tk
> > (exclusively) on Mac OS, and I strongly endorse the move to support only
> > Cocoa in 8.6. 8.5 will continue to be available if you need pre-10.5
> > support. I am curious how many of your customers use older versions of
> > Mac OS? The tendency among Mac users is to migrate very quickly to the
> > latest OS release, and with 10.6 due out later this year--even in the
> > next couple of months--10.5 will soon become a legacy platform.
> >
> > More importantly, the Carbon foundation that currently underlies Tk Aqua
> > is nearing obsolescence. It doesn't support 64-bit, Apple is not doing
> > any more development of it, and so on. The move to Cocoa ensures Tk's
> > viability as a native toolkit on OS X for years to come. In my view that
> > fact alone makes this a necessary move for Tk Aqua.
> >
> I agree that the move to Cocoa is important for the Tk
> community, and I would definitely vote for integrating those
> patches.. all I'm wondering is if it's possible to have
> Carbon AND Cocoa support in the core.. if not, then Larry, I
> guess you'd have to release two bundles, one with TK 8.5 and
> one with Tk 8.6 for greater compatibility..

So we've got a lot of internal development on top of 8.6 already.
It's not really an option to move back to 8.5, then we chew off
solving all the problems that are only solved in 8.6.

It's more likely that this would be the last straw for us and
we'd have to start migrating off of tcl.  I'm really not sure
but I know I'm going to be raked over the coals by my team and
customers when they find out about this.  From my point of view,
dropping support for a perfectly viable platform throws into
question the viability of the tk system as a toolkit.  It's a
big deal and if the core goes along with this I dunno what we'll
do, but it won't be much fun.

I wonder what the technical issues are in supporting 10.4?
--
---
Larry McVoy                lm at bitmover.com           http://www.bitkeeper.com

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Kevin Walzer-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Larry McVoy wrote:

>
> What I'm not happy about is dropping 10.4 support.  10.4 is still an
> actively supported release, it was a good release, and as a vendor it
> is not my place to tell people to get off a platform before the platform
> is end of lifed.

Apple's general practice is to support the current and immediately
preceding OS. Last week I downloaded my 10.5.7 update, and I also
downloaded a bunch of security updates for my installation of 10.4 OS X
Server. Once 10.6 is released, 10.4 will no longer receive security
updates if Apple follows its traditional practice and it will be an
unsupported OS.

--
Kevin Walzer
Code by Kevin
http://www.codebykevin.com

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Daniel A. Steffen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, May 18, 2009 at 00:08, Larry McVoy <lm@...> wrote:

> So we've got a lot of internal development on top of 8.6 already.
> It's not really an option to move back to 8.5, then we chew off
> solving all the problems that are only solved in 8.6.
>
> It's more likely that this would be the last straw for us and
> we'd have to start migrating off of tcl.  I'm really not sure
> but I know I'm going to be raked over the coals by my team and
> customers when they find out about this.  From my point of view,
> dropping support for a perfectly viable platform throws into
> question the viability of the tk system as a toolkit.  It's a
> big deal and if the core goes along with this I dunno what we'll
> do, but it won't be much fun.
>
> I wonder what the technical issues are in supporting 10.4?

they may not be that large, I haven't looked into it frankly. Feel
free to have someone at bitmover look into it, I can't justify
spending time on it.

FWIW I'm also quite happy to continue with the status quo, i.e.
maintain the cocoa port in the gihub fork and let the tk/macosx code
in CVS bitrot away, I won't be doing any more work on it, I haven't
touched it since last August as is (nor has anybody else).

Cheers,

Daniel

--
** Daniel A. Steffen                   **
** <mailto:das@...>  **

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Youness Alaoui-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sun, May 17, 2009 at 06:12:25PM -0400, Kevin Walzer wrote:

> Larry McVoy wrote:
>
> >
> > What I'm not happy about is dropping 10.4 support.  10.4 is still an
> > actively supported release, it was a good release, and as a vendor it
> > is not my place to tell people to get off a platform before the platform
> > is end of lifed.
>
> Apple's general practice is to support the current and immediately
> preceding OS. Last week I downloaded my 10.5.7 update, and I also
> downloaded a bunch of security updates for my installation of 10.4 OS X
> Server. Once 10.6 is released, 10.4 will no longer receive security
> updates if Apple follows its traditional practice and it will be an
> unsupported OS.
>
> --
> Kevin Walzer
> Code by Kevin
> http://www.codebykevin.com
>

But does Apple dropping support for a platform mean that
everyone else should drop support for it ? Microsoft dropped
support for windows 95 so long ago, but people are still
using it, and we, as software developers should still give
support to those people who want to keep using an
unsupported platform...

That's my 2c,

KaKaRoTo

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Larry McVoy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sun, May 17, 2009 at 06:21:10PM -0400, Youness Alaoui wrote:

> On Sun, May 17, 2009 at 06:12:25PM -0400, Kevin Walzer wrote:
> > Larry McVoy wrote:
> >
> > >
> > > What I'm not happy about is dropping 10.4 support.  10.4 is still an
> > > actively supported release, it was a good release, and as a vendor it
> > > is not my place to tell people to get off a platform before the platform
> > > is end of lifed.
> >
> > Apple's general practice is to support the current and immediately
> > preceding OS. Last week I downloaded my 10.5.7 update, and I also
> > downloaded a bunch of security updates for my installation of 10.4 OS X
> > Server. Once 10.6 is released, 10.4 will no longer receive security
> > updates if Apple follows its traditional practice and it will be an
> > unsupported OS.
> >
> > --
> > Kevin Walzer
> > Code by Kevin
> > http://www.codebykevin.com
> >
>
> But does Apple dropping support for a platform mean that
> everyone else should drop support for it ? Microsoft dropped
> support for windows 95 so long ago, but people are still
> using it, and we, as software developers should still give
> support to those people who want to keep using an
> unsupported platform...

Indeed.  I know people like to use the latest and greatest but I have to
deal with enterprise customers who tend to skip a release or 2 when they
get on one that works.  10.4 works.
--
---
Larry McVoy                lm at bitmover.com           http://www.bitkeeper.com

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Larry McVoy :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, May 18, 2009 at 12:16:31AM +0200, Daniel A. Steffen wrote:

> On Mon, May 18, 2009 at 00:08, Larry McVoy <lm@...> wrote:
> > So we've got a lot of internal development on top of 8.6 already.
> > It's not really an option to move back to 8.5, then we chew off
> > solving all the problems that are only solved in 8.6.
> >
> > It's more likely that this would be the last straw for us and
> > we'd have to start migrating off of tcl.  I'm really not sure
> > but I know I'm going to be raked over the coals by my team and
> > customers when they find out about this.  From my point of view,
> > dropping support for a perfectly viable platform throws into
> > question the viability of the tk system as a toolkit.  It's a
> > big deal and if the core goes along with this I dunno what we'll
> > do, but it won't be much fun.
> >
> > I wonder what the technical issues are in supporting 10.4?
>
> they may not be that large, I haven't looked into it frankly. Feel
> free to have someone at bitmover look into it, I can't justify
> spending time on it.

I can understand that, everyone is busy.  Unfortunately, I'm basically
the only person at BitMover that is in favor of using the tcl/tk system.
I've fought for years to stay on it for the cross platform cost savings
but it's not been easy.  We have daily arguments about whether something
else would be a better choice.

The reality is that if I were not the guy in charge we would have long
since moved off.  If I show up and tell the team that the tcl core team
has decided to drop support for a current major platform and our only
answer is to do the work ourselves, they'll crucify me.  I'll be faced
with a screaming pile of I-told-you-so's.

Not your problem, I'm just giving a glimpse into the hell that is my
management life.  For me, this decision has a real chance of killing
our use of tcl, killing the L project, and setting us back a couple
of years.  Lovely position to find oneself in but it is what it is.

> FWIW I'm also quite happy to continue with the status quo, i.e.
> maintain the cocoa port in the gihub fork and let the tk/macosx code
> in CVS bitrot away, I won't be doing any more work on it, I haven't
> touched it since last August as is (nor has anybody else).

Just for the record, I'm very grateful for your work, I should have
started with that statement.  Showing up and raining on your parade
is the last thing I wanted to do.  And to put some teeth in that, if
you wanted to offer up a price tag for maintaining 10.4 support,
figure that out.  If it's something we can afford I'm happy to cough
up the money.

Regardless, this is great stuff, and I support it, I just wish it
included 10.4.  Sorry to be such a downer.
--
---
Larry McVoy                lm at bitmover.com           http://www.bitkeeper.com

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Kevin Walzer-5 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Youness Alaoui wrote:
> On Sun, May 17, 2009 at 06:12:25PM -0400, Kevin Walzer wrote:

>
> But does Apple dropping support for a platform mean that
> everyone else should drop support for it ? Microsoft dropped
> support for windows 95 so long ago, but people are still
> using it, and we, as software developers should still give
> support to those people who want to keep using an
> unsupported platform...

Well, of course you have a point, and if maintaining two builds of your
app is the way to support older platforms, then that's a sensible decision.
--
Kevin Walzer
Code by Kevin
http://www.codebykevin.com

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Adrian Robert-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On May 18, 2009, at 4:38 AM, Kevin Walzer wrote:

> Larry McVoy wrote:
>
>> Perhaps we're the only commercial vendor left using tk that is always
>> interested in 8.6.  I would have thought there are others but maybe
>> not.  Anyway, if it is a flag day let me register my strong vote
>> against that idea.
>
> I'm a much smaller commercial vendor than Bitmover that also uses Tk
> (exclusively) on Mac OS, and I strongly endorse the move to support  
> only
> Cocoa in 8.6. 8.5 will continue to be available if you need pre-10.5
> support. I am curious how many of your customers use older versions of
> Mac OS? The tendency among Mac users is to migrate very quickly to the
> latest OS release, and with 10.6 due out later this year--even in the
> next couple of months--10.5 will soon become a legacy platform.

I don't have statistics to support this but anecdotally I know many  
people who have held off on Leopard for various reasons, and  
therefore as a software vendor I keep a machine myself on Tiger for  
debug and support purposes.  I'd suspect others do the same.  There  
are plenty of even Panther machines about for that matter.  Support  
for 10.4 at least is worth having for some time.

What is the technical reason for 10.5?  Is it GC or something else in  
ObjC-2.0, or is it a few new Leopard API methods here and there that  
could perhaps be easily #ifdef'd with workarounds for 10.4?  If so  
perhaps those of us interested in 10.4 could work on and maintain  
these, and Dan could continue to focus on 10.5.

-Adrian


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac

Re: [TCLCORE] Merging TkAqua Cocoa port into Tk HEAD

by Daniel A. Steffen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, May 18, 2009 at 00:16, Daniel A. Steffen
<das@...> wrote:
> they may not be that large, I haven't looked into it frankly. Feel
> free to have someone at bitmover look into it, I can't justify
> spending time on it.

I looked into it briefly, unfortunately as suspected it's not looking
good, with the following small patch (backporting some types)
    http://www.categorifiedcoder.info/tcltk/tk-de-carbon-10.4.diff
you'll get the following error log:
   http://www.categorifiedcoder.info/tcltk/tk-de-carbon-10.4.log
(about 100 errors and 100 warnings)

the most serious of these is the unavailability of CoreText on 10.4,
i.e. the tkMacOSXFont.c errors.
This means the total rewrite of the text renderer to CoreText and font
handling to NSFont that this represents is not available on 10.4. This
was at least one month fulltime work to get right...

To add support for 10.4 probably the existing ATSUI renderer would
somehow have to be glued back in and amalgamated with the new font
handling (native widgets, menus etc also use the NSFont handling so it
would need to be there even on 10.4)

This would certainly not be a small project, and definitely not
something I could take on at present (even as paywork). Benny, the
original author of the ATSUI renderer might conceivably be somebody to
ask...

even with that, there is no guarantee that there won't be some other
serious problem that is not as easy to tell from the error log...

> FWIW I'm also quite happy to continue with the status quo, i.e.
> maintain the cocoa port in the gihub fork and let the tk/macosx code
> in CVS bitrot away, I won't be doing any more work on it, I haven't
> touched it since last August as is (nor has anybody else).

if the cocoa port is merge in, at this point, I think the only
feasible option for continued 10.4 support is to maintain a parallel
sourcebase with the existing carbon code.
If the general consensus is that this is the way to go, cognizant of
the fact that I won't be able to maintain it, and that it may break
soon if no other maintainer steps forward, I can look into setting
that up, but it will take some time.

Anyway, I've run out of free time to spend on Tk this week, so the
merge won't happen before next weekend at the earliest, so there is
some time to hash this out.

Cheers,

Daniel

--
** Daniel A. Steffen                   **
** <mailto:das@...>  **

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables
unlimited royalty-free distribution of the report engine
for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Tcl-mac mailing list
tcl-mac@...
https://lists.sourceforge.net/lists/listinfo/tcl-mac
< Prev | 1 - 2 | Next >