Hi,
I'll chime in as an OSX user and perl user. I think you need to
define this a little better.
Pardon me for a long post of no code or even design, but I think as a
direction I need to get this clear to myself. This applies to any "distribution"
of an OS which includes Perl (or any other language) which is not controlled
by distribution owner. Putting on my corporate hat and using jargon:


What is Apples service level agreement to with users in regard to
development tools included with OSX that are NOT directly controlled by Apple?
I think this goes beyond perl. Let me just suggest some possible levels of support (Your friend
at Apple would really need to make this explicit.) and their
implications.


A. Minimum Level -
        1. Apple makes sure the "language engine" (compiler/interpreter plus
included libraries) functions under the current revision of OSX and any
Apple distributed Modules work with that rev level of engine and OS.
        2. Whenever Apple releases a new version it makes sure any Modules and
programs it has released work with the new version.
        3. Apple makes no effort to keep to any particular latest revision.
        4. Any user supplied modules are guaranteed nothing across a revision.
It is up to users/writers to come out with compatible versions.

B. Higher Level
        1. A1 and A2 stay same.
        2. Apple tries to stay reasonably close to leading edge revision of
language engine.
        3. Apple attempts to make compatible interfaces so third party apps
continue to work with new revision.
        ok we can stop right here because this is already to much of a burdon
on Apple or anyone ....

I think the current situation is A with Apple fine with B2 if possible.

so what about a different direction with "Engine" developers having a
responsibility:

C. Core + other
        1. Apple makes sure the "language engine" (compiler/interpreter plus
included libraries) functions under the current revision of OSX and any
Apple distributed Modules work with that rev level of engine and OS.
        2. Whenever Apple releases a new version it makes sure any Modules and
programs it has released work with the new version. This "version"
shouldn't change in Module compatibility until major OS changes when it
could make a jump to new major revision if possible. Small revisions
could be applied for security etc, but should not break interface
compatibility except for some sev 1 issues (like major security issue
or something).
        3. The language engine should be designed so it is easy for more than
one version (at least two but preferably any number) to
co-exist with tool chains able to function totally independently. This
is a "service level" that the language "owners" need to support.
        4. Apple would then "bless"  the means to switch to the different
versions. What does this mean? In practice it means that if there were
two copies of the language engine  exactly as Apple released it, one in
the default location and one in another location and independent, then
whatever means that would be used to "switch" would be ok'd by Apple,
and all the things that Apple provided that worked with one version
would work with the other. That is, the location of the distribution
shouldn't matter to Apple. The distribution used should be able to be
chosen at the application program level also, but also the "default"
system distribution should be settable via environment, init, Netinfo,
or symlink change or whatever.
        5. If the "other" version is switched in Apple has no responsibility...

I think option C or something like it would be the way to go. It would
mean that language developers could "switch in" their newer versions
and see how they would work and Apple could still depend on a
consistent version for its use.

It would also allow Apple to upgrade to newer versions while still
having an out if someone is depending on an older version. Simply have
the new Apple version and the old Apple version available, then Apple
can tell users, no problem - switch back as Apple moves forward. This
would be really nice for Server folks (speaking as someone who has to
plan for 100's of servers from 15K's to Blades.) since they could
upgrade on their timetable.

OK enough generics. Is this the direction to go? If so I think
that there is some effort, but not a huge amount split between apple
and perl developers.

Perl Developers work

1. Make sure we can have multiple distributions co-exist with no
interaction. Much of this is already there. There may be some
unresolved issues. The work would be documenting exactly how to do this
under Macosx and how to have modules point to where we want.
2. Making sure that all the modules Apple uses (modperl...) work with
whatever distribution wanted - responding to discoveries below.

Apple's Work
1. Documenting all Perl scripts and modules used with OSX distribution
(probably already exists).
2. Creating documented method to switch default distribution locations
(e.g. change a link in standard directory maybe plus?)
3. Checking that all stuff under #1 would still work when pointing to
another distribution. From Apples point of view it can actually be the
same one for test. Changing what is needed to make this switch work. If
there are perl related things that cause this to fail, then notify
perl5-porters or [EMAIL PROTECTED], say, to have them worked on.

If this was done then I think we could get things like apt-get perl
distributions as well and Apple would have to do less work qualifying
new versions since if people could run them - they could get a level of
confidence in use aside from whatever regression tests they may do.

Having said this I now have to get off my behind and look at the recipes out there now to replace
and build separately...


I think parrot/perl6 should definitely be able to be built this way
also....with multiple active distributions possible in a system.

Hope this rambling helps...
Mark Kaehny


On Thursday, February 27, 2003, at 02:09 AM, Rich Morin wrote:


[ I posted this on [EMAIL PROTECTED], because the issue is important to
  everyone on that list.  OTOH, some of the folks on this list may be
  interested enough to drift over and take part in the discussion, so
  I'm copying it to this list, as well.  Please don't post Mac OS X
  upgrade strategies to p5p; it will just split the discussion.  -r ]


I bugged an Influential Friend at Apple about the Perl upgrade issue,
hoping that he would have a Wonderfully Authoritative Solution to offer:


As you may recall, OSX ships with version 5.6.0 of perl:

[EMAIL PROTECTED] [~] 18: perl -v

   This is perl, v5.6.0 built for darwin
   ...

Given that 5.6.1 (a bug fix release) has been out for quite a while, one
could ask why Apple hasn't pushed it into an update. But that's not the
critical issue, at lease for me (and assorted folks on [EMAIL PROTECTED]).


I want to be able to ship installable (e.g., mpkg > dmg > bin) packages
that depend on XS-based modules (e.g., CamelBones). More to the point,
I'd like these packages to keep working when Apple upgrades its version
of perl. Several months have gone by, but I haven't heard any "formula"
that seems to accomplish this. So, wazzup?

Unfortunately, he didn't have any answer to offer:


I don't think there is any such formula.  Perl gets upgraded, packages
break, it appears to be a fact of life in the Perl world.

Fortunately, he's quite willing to listen to (workable) suggestions:


If you know of some magic bullet here, we're all ears. :)

So, gang, can we brainstorm up a solution that meets our needs AND is sanitary and safe for Apple to implement? (It would be REALLY BAD to solve this problem and create a bigger problem in the process. :-)

I think the best place to begin is by defining the problem, as clearly
as possible. I'll give it a try, then Sherm and Dan and the rest of you
can point out the things I get wrong. A bazaar approach; I know...



If OSX were to upgrade its Perl to 5.6.1, using the same compile options
and such, nothing that is dependent on the current perl binary _should_
break. So, this seems like a fairly safe move which would move us past
some known bugs.


OTOH, version 5.8.0 has been out since mid-July (5.8.1 is under discussion
on [EMAIL PROTECTED], but nothing seems imminent; besides, shouldn't
a 5.8.1 upgrade be transparent?). Anyway, here's the story on 5.8.0:


  "The most important new features are enhanced Unicode and threads
  support, and the new I/O subsystem called PerlIO, but there are lots
  of new goodies, not to mention bazillion bugfixes."

-- Jarkko Hietaniemi, on http://www.perl.org

Enhanced Unicode and thread support could both be important for writing
Real Apps under Cocoa.  Bug fixes are also a Good Thing.  So, moving to
5.8.0 will be important in the long run, even if it isn't critical for
most of us right now.

Also, new versions of Perl will no doubt emerge over time. In the Linux
and BSD communities, this is no big deal; we're always installing new
releases (and dealing with the consequences :-). Apple, however, has
this silly idea that OS software should be stable and reliable for YEARS.
OS upgrades (particularly dotdots) aren't supposed to break things. If
Perl is to be considered a Real Language for OSX development, we need a
way to allow these upgrades to take place i_n_v_i_s_i_b_l_y. Really.


As an aspiring OSX developer, I'll have to say that I approve of this. I
have NO interest in dealing with mass breakage of my apps, caused by a
Perl upgrade. I want my apps to sail through any upgrade, allowing me to
slip in _my own_ upgrade(s) in a calm and controlled manner.


Several issues have to be handled to make this work:

* language changes

     If the Perl upgrade introduces incompatible language changes, apps
     may break.  There doesn't seem to be much of this in 5.8.0 that
     affects Mac OS X; the only possibilities I see are:

- Attributes For my Now Handled At Run-Time

- REF(...) instead of SCALAR(...)

- Unicode Model Changed (no more "use utf8", almost)

-- http://dev.perl.org/perl5/news/2002/07/18/580ann

* module changes

If a Perl upgrade removes a module or changes it incompatibly, things
could break. I don't see anything of this nature, however, in 5.8.0.


* perl(1) binary changes

Here's where things get sticky:

"Mainly because of the PerlIO introduction, Perl 5.8 is not binary
compatible with any earlier Perl release; XS MODULES WILL HAVE TO
BE RECOMPILED!"


It sounds as if this will require two versions of perl(1) and two sets of
any XS-based modules. Can we do this in a way that works for command and
apps, alike? Inquiring minds need to know...


-r
--
email: [EMAIL PROTECTED]; phone: +1 650-873-7841
http://www.cfcl.com/rdm    - my home page, resume, etc.
http://www.cfcl.com/Meta   - The FreeBSD Browser, Meta Project, etc.
http://www.ptf.com/dossier - Prime Time Freeware's DOSSIER series
http://www.ptf.com/tdc     - Prime Time Freeware's Darwin Collection




Reply via email to