The Trunk: Collections-dtl.548.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
41 messages Options
123
Reply | Threaded
Open this post in threaded view
|

The Trunk: Collections-dtl.548.mcz

commits-2
David T. Lewis uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-dtl.548.mcz

==================== Summary ====================

Name: Collections-dtl.548
Author: dtl
Time: 12 December 2013, 6:58:08.878 pm
UUID: b167353b-b9ab-4911-8168-c5f184cab62a
Ancestors: Collections-ul.547

Transcripter>>initInFrame: should do nothing when not in MVC

=============== Diff against Collections-ul.547 ===============

Item was changed:
  ----- Method: Transcripter>>initInFrame: (in category 'initialization') -----
  initInFrame: rect
+ Smalltalk at: #Paragraph ifPresent: [:classParagraph | "MVC"
+ frame := rect insetBy: 2.  "Leave room for border"
+ para := classParagraph withText: self contents asText
+ style: TextStyle default
+ compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
+ clippingRectangle: frame
+ foreColor: self black backColor: self white]!
- frame := rect insetBy: 2.  "Leave room for border"
- (Smalltalk hasClassNamed: #Paragraph)
- ifFalse: [^ self inform: 'MVC class Paragraph not present'].
- para := (Smalltalk at: #Paragraph) withText: self contents asText
- style: TextStyle default
- compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
- clippingRectangle: frame
- foreColor: self black backColor: self white!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

Frank Shearar-3
On 12 December 2013 23:58,  <[hidden email]> wrote:

> David T. Lewis uploaded a new version of Collections to project The Trunk:
> http://source.squeak.org/trunk/Collections-dtl.548.mcz
>
> ==================== Summary ====================
>
> Name: Collections-dtl.548
> Author: dtl
> Time: 12 December 2013, 6:58:08.878 pm
> UUID: b167353b-b9ab-4911-8168-c5f184cab62a
> Ancestors: Collections-ul.547
>
> Transcripter>>initInFrame: should do nothing when not in MVC
>
> =============== Diff against Collections-ul.547 ===============
>
> Item was changed:
>   ----- Method: Transcripter>>initInFrame: (in category 'initialization') -----
>   initInFrame: rect
> +       Smalltalk at: #Paragraph ifPresent: [:classParagraph | "MVC"
> +               frame := rect insetBy: 2.  "Leave room for border"
> +               para := classParagraph withText: self contents asText
> +                                       style: TextStyle default
> +                                       compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
> +                                       clippingRectangle: frame
> +                                       foreColor: self black backColor: self white]!
> -       frame := rect insetBy: 2.  "Leave room for border"
> -       (Smalltalk hasClassNamed: #Paragraph)
> -               ifFalse: [^ self inform: 'MVC class Paragraph not present'].
> -       para := (Smalltalk at: #Paragraph) withText: self contents asText
> -                               style: TextStyle default
> -                               compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
> -                               clippingRectangle: frame
> -                               foreColor: self black backColor: self white!

Well, that definitely stops a DNU and such when running in Morphic
(yay!) but it still won't work in a non-MVC/Morphic world. That's when
you accused me of overengineering, David :) It is a nice example of
using #at:ifPresent though - we don't make enough use of that idiom,
IMO.

frank

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

David T. Lewis
On Fri, Dec 13, 2013 at 07:42:28AM +0000, Frank Shearar wrote:

> On 12 December 2013 23:58,  <[hidden email]> wrote:
> > David T. Lewis uploaded a new version of Collections to project The Trunk:
> > http://source.squeak.org/trunk/Collections-dtl.548.mcz
> >
> > ==================== Summary ====================
> >
> > Name: Collections-dtl.548
> > Author: dtl
> > Time: 12 December 2013, 6:58:08.878 pm
> > UUID: b167353b-b9ab-4911-8168-c5f184cab62a
> > Ancestors: Collections-ul.547
> >
> > Transcripter>>initInFrame: should do nothing when not in MVC
> >
> > =============== Diff against Collections-ul.547 ===============
> >
> > Item was changed:
> >   ----- Method: Transcripter>>initInFrame: (in category 'initialization') -----
> >   initInFrame: rect
> > +       Smalltalk at: #Paragraph ifPresent: [:classParagraph | "MVC"
> > +               frame := rect insetBy: 2.  "Leave room for border"
> > +               para := classParagraph withText: self contents asText
> > +                                       style: TextStyle default
> > +                                       compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
> > +                                       clippingRectangle: frame
> > +                                       foreColor: self black backColor: self white]!
> > -       frame := rect insetBy: 2.  "Leave room for border"
> > -       (Smalltalk hasClassNamed: #Paragraph)
> > -               ifFalse: [^ self inform: 'MVC class Paragraph not present'].
> > -       para := (Smalltalk at: #Paragraph) withText: self contents asText
> > -                               style: TextStyle default
> > -                               compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
> > -                               clippingRectangle: frame
> > -                               foreColor: self black backColor: self white!
>
> Well, that definitely stops a DNU and such when running in Morphic
> (yay!) but it still won't work in a non-MVC/Morphic world. That's when
> you accused me of overengineering, David :)

Yes you're right, I meant that with a smiley, sorry :)

I also made a mistake when I tested it, I didn't have MVC completely
unloaded. Hmmm, the unload procedure in #unloadReloadablePackages does
not seem to work, at least not if MVC projects exist in the image.

The full MVC removal used to be in #unloadAllKnownPackages, which is no
longer in the image. The MVC removal in #unloadReloadablePackages seems to
be focused only on removing code, not on doing the full removal. Presumably
that is the intent, but do we also have a method elsewhere that does what
#unloadAllKnownPackages used to do?

Dave


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

Frank Shearar-3
On 13 December 2013 12:57, David T. Lewis <[hidden email]> wrote:

> On Fri, Dec 13, 2013 at 07:42:28AM +0000, Frank Shearar wrote:
>> On 12 December 2013 23:58,  <[hidden email]> wrote:
>> > David T. Lewis uploaded a new version of Collections to project The Trunk:
>> > http://source.squeak.org/trunk/Collections-dtl.548.mcz
>> >
>> > ==================== Summary ====================
>> >
>> > Name: Collections-dtl.548
>> > Author: dtl
>> > Time: 12 December 2013, 6:58:08.878 pm
>> > UUID: b167353b-b9ab-4911-8168-c5f184cab62a
>> > Ancestors: Collections-ul.547
>> >
>> > Transcripter>>initInFrame: should do nothing when not in MVC
>> >
>> > =============== Diff against Collections-ul.547 ===============
>> >
>> > Item was changed:
>> >   ----- Method: Transcripter>>initInFrame: (in category 'initialization') -----
>> >   initInFrame: rect
>> > +       Smalltalk at: #Paragraph ifPresent: [:classParagraph | "MVC"
>> > +               frame := rect insetBy: 2.  "Leave room for border"
>> > +               para := classParagraph withText: self contents asText
>> > +                                       style: TextStyle default
>> > +                                       compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
>> > +                                       clippingRectangle: frame
>> > +                                       foreColor: self black backColor: self white]!
>> > -       frame := rect insetBy: 2.  "Leave room for border"
>> > -       (Smalltalk hasClassNamed: #Paragraph)
>> > -               ifFalse: [^ self inform: 'MVC class Paragraph not present'].
>> > -       para := (Smalltalk at: #Paragraph) withText: self contents asText
>> > -                               style: TextStyle default
>> > -                               compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
>> > -                               clippingRectangle: frame
>> > -                               foreColor: self black backColor: self white!
>>
>> Well, that definitely stops a DNU and such when running in Morphic
>> (yay!) but it still won't work in a non-MVC/Morphic world. That's when
>> you accused me of overengineering, David :)
>
> Yes you're right, I meant that with a smiley, sorry :)

I knew there was something of a smiley in there :) I just meant that
if we want to preserve the Transcripter's emergencyEvaluator we would
need this "complexity" because we'd need an emergencyEvaluator per UI
framework.

> I also made a mistake when I tested it, I didn't have MVC completely
> unloaded. Hmmm, the unload procedure in #unloadReloadablePackages does
> not seem to work, at least not if MVC projects exist in the image.
>
> The full MVC removal used to be in #unloadAllKnownPackages, which is no
> longer in the image. The MVC removal in #unloadReloadablePackages seems to
> be focused only on removing code, not on doing the full removal. Presumably
> that is the intent, but do we also have a method elsewhere that does what
> #unloadAllKnownPackages used to do?

I can't remember now the who/when/what of #unloadAllKnownPackages's
removal. I think I'd moaned about its references to things like ST80.
At any rate, the images that CI use don't have ST80 in them, by virtue
of a #unloadAllKnownPackages done long, long ago.

frank

> Dave

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

Nicolas Cellier
See Name: System-cmm.586
- Factor SmalltalkImage>>#unloadAllKnownPackages into several smaller methods to allow more deliberate shrinking.
snip...

Note that MCMcmUpdater comment does still refer to this method.


2013/12/13 Frank Shearar <[hidden email]>
On 13 December 2013 12:57, David T. Lewis <[hidden email]> wrote:
> On Fri, Dec 13, 2013 at 07:42:28AM +0000, Frank Shearar wrote:
>> On 12 December 2013 23:58,  <[hidden email]> wrote:
>> > David T. Lewis uploaded a new version of Collections to project The Trunk:
>> > http://source.squeak.org/trunk/Collections-dtl.548.mcz
>> >
>> > ==================== Summary ====================
>> >
>> > Name: Collections-dtl.548
>> > Author: dtl
>> > Time: 12 December 2013, 6:58:08.878 pm
>> > UUID: b167353b-b9ab-4911-8168-c5f184cab62a
>> > Ancestors: Collections-ul.547
>> >
>> > Transcripter>>initInFrame: should do nothing when not in MVC
>> >
>> > =============== Diff against Collections-ul.547 ===============
>> >
>> > Item was changed:
>> >   ----- Method: Transcripter>>initInFrame: (in category 'initialization') -----
>> >   initInFrame: rect
>> > +       Smalltalk at: #Paragraph ifPresent: [:classParagraph | "MVC"
>> > +               frame := rect insetBy: 2.  "Leave room for border"
>> > +               para := classParagraph withText: self contents asText
>> > +                                       style: TextStyle default
>> > +                                       compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
>> > +                                       clippingRectangle: frame
>> > +                                       foreColor: self black backColor: self white]!
>> > -       frame := rect insetBy: 2.  "Leave room for border"
>> > -       (Smalltalk hasClassNamed: #Paragraph)
>> > -               ifFalse: [^ self inform: 'MVC class Paragraph not present'].
>> > -       para := (Smalltalk at: #Paragraph) withText: self contents asText
>> > -                               style: TextStyle default
>> > -                               compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
>> > -                               clippingRectangle: frame
>> > -                               foreColor: self black backColor: self white!
>>
>> Well, that definitely stops a DNU and such when running in Morphic
>> (yay!) but it still won't work in a non-MVC/Morphic world. That's when
>> you accused me of overengineering, David :)
>
> Yes you're right, I meant that with a smiley, sorry :)

I knew there was something of a smiley in there :) I just meant that
if we want to preserve the Transcripter's emergencyEvaluator we would
need this "complexity" because we'd need an emergencyEvaluator per UI
framework.

> I also made a mistake when I tested it, I didn't have MVC completely
> unloaded. Hmmm, the unload procedure in #unloadReloadablePackages does
> not seem to work, at least not if MVC projects exist in the image.
>
> The full MVC removal used to be in #unloadAllKnownPackages, which is no
> longer in the image. The MVC removal in #unloadReloadablePackages seems to
> be focused only on removing code, not on doing the full removal. Presumably
> that is the intent, but do we also have a method elsewhere that does what
> #unloadAllKnownPackages used to do?

I can't remember now the who/when/what of #unloadAllKnownPackages's
removal. I think I'd moaned about its references to things like ST80.
At any rate, the images that CI use don't have ST80 in them, by virtue
of a #unloadAllKnownPackages done long, long ago.

frank

> Dave




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

Chris Muller-3
In reply to this post by Frank Shearar-3
On Fri, Dec 13, 2013 at 7:08 AM, Frank Shearar <[hidden email]> wrote:
On 13 December 2013 12:57, David T. Lewis <[hidden email]> wrote:
> On Fri, Dec 13, 2013 at 07:42:28AM +0000, Frank Shearar wrote:
>> On 12 December 2013 23:58,  <[hidden email]> wrote:
>> > David T. Lewis uploaded a new version of Collections to project The Trunk:
>> > http://source.squeak.org/trunk/Collections-dtl.548.mcz
>> >
>> > ==================== Summary ====================
>> >
>> > Name: Collections-dtl.548
>> > Author: dtl
>> > Time: 12 December 2013, 6:58:08.878 pm
>> > UUID: b167353b-b9ab-4911-8168-c5f184cab62a
>> > Ancestors: Collections-ul.547
>> >
>> > Transcripter>>initInFrame: should do nothing when not in MVC
>> >
>> > =============== Diff against Collections-ul.547 ===============
>> >
>> > Item was changed:
>> >   ----- Method: Transcripter>>initInFrame: (in category 'initialization') -----
>> >   initInFrame: rect
>> > +       Smalltalk at: #Paragraph ifPresent: [:classParagraph | "MVC"
>> > +               frame := rect insetBy: 2.  "Leave room for border"
>> > +               para := classParagraph withText: self contents asText
>> > +                                       style: TextStyle default
>> > +                                       compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
>> > +                                       clippingRectangle: frame
>> > +                                       foreColor: self black backColor: self white]!
>> > -       frame := rect insetBy: 2.  "Leave room for border"
>> > -       (Smalltalk hasClassNamed: #Paragraph)
>> > -               ifFalse: [^ self inform: 'MVC class Paragraph not present'].
>> > -       para := (Smalltalk at: #Paragraph) withText: self contents asText
>> > -                               style: TextStyle default
>> > -                               compositionRectangle: ((frame insetBy: 4) withHeight: 9999)
>> > -                               clippingRectangle: frame
>> > -                               foreColor: self black backColor: self white!

Dave, the only thing I don't like about this change is I thought we said we were going to migrate away from using the Dictionary API on Smalltalk.  This was back when Andreas and community came up with the idea of the wrapped 'globals'.

I think it would be better to use

    (Smalltalk classNamed: #Paragraph) ifNotNil: [ : classParagraph | ... ]
 
otherwise we can never find all the places where we try to do logical access to class.

>>
>> Well, that definitely stops a DNU and such when running in Morphic
>> (yay!) but it still won't work in a non-MVC/Morphic world. That's when
>> you accused me of overengineering, David :)
>
> Yes you're right, I meant that with a smiley, sorry :)

I knew there was something of a smiley in there :) I just meant that
if we want to preserve the Transcripter's emergencyEvaluator we would
need this "complexity" because we'd need an emergencyEvaluator per UI
framework.

-1.  Please be more conservative and lazy about putting new code/elements into the system.  TSTTCPW demands that we don't start building out infrastructure for new UI frameworks until those frameworks are being pushed into existence and such a factoring is actually NEEDED.  Please only write code for the "now" not for some "potential future".  10 years could go by with no new graphical frameworks and then someone looking at your class-hierarchy will regard it as "cruft".



Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

Frank Shearar-3
On 13 December 2013 15:57, Chris Muller <[hidden email]> wrote:

> On Fri, Dec 13, 2013 at 7:08 AM, Frank Shearar <[hidden email]>
> wrote:
>>
>> On 13 December 2013 12:57, David T. Lewis <[hidden email]> wrote:
>> > On Fri, Dec 13, 2013 at 07:42:28AM +0000, Frank Shearar wrote:
>> >> On 12 December 2013 23:58,  <[hidden email]> wrote:
>> >> > David T. Lewis uploaded a new version of Collections to project The
>> >> > Trunk:
>> >> > http://source.squeak.org/trunk/Collections-dtl.548.mcz
>> >> >
>> >> > ==================== Summary ====================
>> >> >
>> >> > Name: Collections-dtl.548
>> >> > Author: dtl
>> >> > Time: 12 December 2013, 6:58:08.878 pm
>> >> > UUID: b167353b-b9ab-4911-8168-c5f184cab62a
>> >> > Ancestors: Collections-ul.547
>> >> >
>> >> > Transcripter>>initInFrame: should do nothing when not in MVC
>> >> >
>> >> > =============== Diff against Collections-ul.547 ===============
>> >> >
>> >> > Item was changed:
>> >> >   ----- Method: Transcripter>>initInFrame: (in category
>> >> > 'initialization') -----
>> >> >   initInFrame: rect
>> >> > +       Smalltalk at: #Paragraph ifPresent: [:classParagraph | "MVC"
>> >> > +               frame := rect insetBy: 2.  "Leave room for border"
>> >> > +               para := classParagraph withText: self contents asText
>> >> > +                                       style: TextStyle default
>> >> > +                                       compositionRectangle: ((frame
>> >> > insetBy: 4) withHeight: 9999)
>> >> > +                                       clippingRectangle: frame
>> >> > +                                       foreColor: self black
>> >> > backColor: self white]!
>> >> > -       frame := rect insetBy: 2.  "Leave room for border"
>> >> > -       (Smalltalk hasClassNamed: #Paragraph)
>> >> > -               ifFalse: [^ self inform: 'MVC class Paragraph not
>> >> > present'].
>> >> > -       para := (Smalltalk at: #Paragraph) withText: self contents
>> >> > asText
>> >> > -                               style: TextStyle default
>> >> > -                               compositionRectangle: ((frame
>> >> > insetBy: 4) withHeight: 9999)
>> >> > -                               clippingRectangle: frame
>> >> > -                               foreColor: self black backColor: self
>> >> > white!
>
>
> Dave, the only thing I don't like about this change is I thought we said we
> were going to migrate away from using the Dictionary API on Smalltalk.  This
> was back when Andreas and community came up with the idea of the wrapped
> 'globals'.
>
> I think it would be better to use
>
>     (Smalltalk classNamed: #Paragraph) ifNotNil: [ : classParagraph | ... ]
>
> otherwise we can never find all the places where we try to do logical access
> to class.

In which case we should have #bindingOf:ifPresent, or similar. An API
that forces you to acknowledge the potential not-there-ness of a thing
is far preferable, in my book, to a separate-check-then-use. The
latter also have fun time-of-check-time-of-use issues in a
multiprocessing environment... which we happen to have.

>> >> Well, that definitely stops a DNU and such when running in Morphic
>> >> (yay!) but it still won't work in a non-MVC/Morphic world. That's when
>> >> you accused me of overengineering, David :)
>> >
>> > Yes you're right, I meant that with a smiley, sorry :)
>>
>> I knew there was something of a smiley in there :) I just meant that
>> if we want to preserve the Transcripter's emergencyEvaluator we would
>> need this "complexity" because we'd need an emergencyEvaluator per UI
>> framework.
>
>
> -1.  Please be more conservative and lazy about putting new code/elements
> into the system.  TSTTCPW demands that we don't start building out
> infrastructure for new UI frameworks until those frameworks are being pushed
> into existence and such a factoring is actually NEEDED.  Please only write
> code for the "now" not for some "potential future".  10 years could go by
> with no new graphical frameworks and then someone looking at your
> class-hierarchy will regard it as "cruft".

(a) The emergency evaluator's there _for good reason_.
(b) We HAVE two UI frameworks right now. They're part of the standard image.
(c) "Stripped" 4.5 base images do not have ST80, so this code is broken.
(d) To fix it _requires_ two separate UI implementations because of point (b).

Unless you're specifically saying "we should not have an emergency
evaluator". But then say that, not -1 me suggesting a way to fix
something broken. (Please feel free to suggest a simpler way of
solving the problem that works for all CURRENT UI frameworks.)

frank

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

Chris Muller-3
> Dave, the only thing I don't like about this change is I thought we said we
> were going to migrate away from using the Dictionary API on Smalltalk.  This
> was back when Andreas and community came up with the idea of the wrapped
> 'globals'.
>
> I think it would be better to use
>
>     (Smalltalk classNamed: #Paragraph) ifNotNil: [ : classParagraph | ... ]
>
> otherwise we can never find all the places where we try to do logical access
> to class.

In which case we should have #bindingOf:ifPresent, or similar. An API
that forces you to acknowledge the potential not-there-ness of a thing
is far preferable, in my book, to a separate-check-then-use. The
latter also have fun time-of-check-time-of-use issues in a
multiprocessing environment... which we happen to have.

I used to prefer Potential-not-thereness API's in "my book" too until one day I found it unnecessarily expanding and complicating API's.  Users of API's must write defensive code anyway.  The ifNotNil: approach allows a simpler API that can provide either existence-testing OR access via one simple message rather than two.

As for "fun time-of-check-time-of-use issues" that's just bunk.  You think the ifPresent: method doesn't do the same ifNotNil: check or could not be interrupted?  Unless you're thinking to put a Mutex into SmalltalkImage to make it "thread safe".  What, for background unloading?  If you need that guard it from the outside.
 

>> >> Well, that definitely stops a DNU and such when running in Morphic
>> >> (yay!) but it still won't work in a non-MVC/Morphic world. That's when
>> >> you accused me of overengineering, David :)
>> >
>> > Yes you're right, I meant that with a smiley, sorry :)
>>
>> I knew there was something of a smiley in there :) I just meant that
>> if we want to preserve the Transcripter's emergencyEvaluator we would
>> need this "complexity" because we'd need an emergencyEvaluator per UI
>> framework.
>
>
> -1.  Please be more conservative and lazy about putting new code/elements
> into the system.  TSTTCPW demands that we don't start building out
> infrastructure for new UI frameworks until those frameworks are being pushed
> into existence and such a factoring is actually NEEDED.  Please only write
> code for the "now" not for some "potential future".  10 years could go by
> with no new graphical frameworks and then someone looking at your
> class-hierarchy will regard it as "cruft".

(a) The emergency evaluator's there _for good reason_.
(b) We HAVE two UI frameworks right now. They're part of the standard image.
(c) "Stripped" 4.5 base images do not have ST80, so this code is broken.
(d) To fix it _requires_ two separate UI implementations because of point (b).

Unless you're specifically saying "we should not have an emergency
evaluator". But then say that, not -1 me suggesting a way to fix
something broken. (Please feel free to suggest a simpler way of
solving the problem that works for all CURRENT UI frameworks.)

Ok, all I'm saying is, part of your work is about reorganizing, and other parts are about engineering new functionality just to accomodate the reorganizations.  (What's worse is when you want to remove functionality just to accomodate but I'll be lazy about addressing that).

Whenever there's an arbitrary piece of new functionality (e.g., Morphic-based emergency evaluator) just to avoid crossing package boundaries you don't want to cross, then engineering "solutions" to that I think could end up being code for ghost situations.

Because there has been no concrete vision/requirement for a Morphic-based emergency evaluator (EE).  EE is a relatively rare occurrence (one would hope!) and for developers only.  But developers typically use _development images_ which tend to be fat, not "Stripped", and so might probably include ST80 anyway..?  The cases seem pretty uncertain and so that's why I'm questioning engineering new stuff like this into the image.

Particularly we're at a time when I want to get 4.5 out the door, so that may be contributing to my aversion to new engineerings.  I ask you to at least consider simple stub error-handling in situations where packages/functionality would be unfulfilled.  We can fill in implementations later, if needed, but at least you'll have made the structure.

Thanks.


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

Nicolas Cellier
Apart reorganizing and engineering new functionalities, there is a third activity which is essential: fixing broken features.

Packaging is useful for
- stripping an image
- constructing an image
- replacing some parts by alternatives
If unloading a package has unexpected side effects that affect more features than expected, then it falls into broken features.

Emergency evaluator is like our insurance, we hope it's never used, but we subscribe just in case.



2013/12/13 Chris Muller <[hidden email]>
> Dave, the only thing I don't like about this change is I thought we said we
> were going to migrate away from using the Dictionary API on Smalltalk.  This
> was back when Andreas and community came up with the idea of the wrapped
> 'globals'.
>
> I think it would be better to use
>
>     (Smalltalk classNamed: #Paragraph) ifNotNil: [ : classParagraph | ... ]
>
> otherwise we can never find all the places where we try to do logical access
> to class.

In which case we should have #bindingOf:ifPresent, or similar. An API
that forces you to acknowledge the potential not-there-ness of a thing
is far preferable, in my book, to a separate-check-then-use. The
latter also have fun time-of-check-time-of-use issues in a
multiprocessing environment... which we happen to have.

I used to prefer Potential-not-thereness API's in "my book" too until one day I found it unnecessarily expanding and complicating API's.  Users of API's must write defensive code anyway.  The ifNotNil: approach allows a simpler API that can provide either existence-testing OR access via one simple message rather than two.

As for "fun time-of-check-time-of-use issues" that's just bunk.  You think the ifPresent: method doesn't do the same ifNotNil: check or could not be interrupted?  Unless you're thinking to put a Mutex into SmalltalkImage to make it "thread safe".  What, for background unloading?  If you need that guard it from the outside.
 

>> >> Well, that definitely stops a DNU and such when running in Morphic
>> >> (yay!) but it still won't work in a non-MVC/Morphic world. That's when
>> >> you accused me of overengineering, David :)
>> >
>> > Yes you're right, I meant that with a smiley, sorry :)
>>
>> I knew there was something of a smiley in there :) I just meant that
>> if we want to preserve the Transcripter's emergencyEvaluator we would
>> need this "complexity" because we'd need an emergencyEvaluator per UI
>> framework.
>
>
> -1.  Please be more conservative and lazy about putting new code/elements
> into the system.  TSTTCPW demands that we don't start building out
> infrastructure for new UI frameworks until those frameworks are being pushed
> into existence and such a factoring is actually NEEDED.  Please only write
> code for the "now" not for some "potential future".  10 years could go by
> with no new graphical frameworks and then someone looking at your
> class-hierarchy will regard it as "cruft".

(a) The emergency evaluator's there _for good reason_.
(b) We HAVE two UI frameworks right now. They're part of the standard image.
(c) "Stripped" 4.5 base images do not have ST80, so this code is broken.
(d) To fix it _requires_ two separate UI implementations because of point (b).

Unless you're specifically saying "we should not have an emergency
evaluator". But then say that, not -1 me suggesting a way to fix
something broken. (Please feel free to suggest a simpler way of
solving the problem that works for all CURRENT UI frameworks.)

Ok, all I'm saying is, part of your work is about reorganizing, and other parts are about engineering new functionality just to accomodate the reorganizations.  (What's worse is when you want to remove functionality just to accomodate but I'll be lazy about addressing that).

Whenever there's an arbitrary piece of new functionality (e.g., Morphic-based emergency evaluator) just to avoid crossing package boundaries you don't want to cross, then engineering "solutions" to that I think could end up being code for ghost situations.

Because there has been no concrete vision/requirement for a Morphic-based emergency evaluator (EE).  EE is a relatively rare occurrence (one would hope!) and for developers only.  But developers typically use _development images_ which tend to be fat, not "Stripped", and so might probably include ST80 anyway..?  The cases seem pretty uncertain and so that's why I'm questioning engineering new stuff like this into the image.

Particularly we're at a time when I want to get 4.5 out the door, so that may be contributing to my aversion to new engineerings.  I ask you to at least consider simple stub error-handling in situations where packages/functionality would be unfulfilled.  We can fill in implementations later, if needed, but at least you'll have made the structure.

Thanks.






Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

Frank Shearar-3
In reply to this post by Chris Muller-3
On 13 December 2013 16:59, Chris Muller <[hidden email]> wrote:

>> > Dave, the only thing I don't like about this change is I thought we said
>> > we
>> > were going to migrate away from using the Dictionary API on Smalltalk.
>> > This
>> > was back when Andreas and community came up with the idea of the wrapped
>> > 'globals'.
>> >
>> > I think it would be better to use
>> >
>> >     (Smalltalk classNamed: #Paragraph) ifNotNil: [ : classParagraph |
>> > ... ]
>> >
>> > otherwise we can never find all the places where we try to do logical
>> > access
>> > to class.
>>
>> In which case we should have #bindingOf:ifPresent, or similar. An API
>> that forces you to acknowledge the potential not-there-ness of a thing
>> is far preferable, in my book, to a separate-check-then-use. The
>> latter also have fun time-of-check-time-of-use issues in a
>> multiprocessing environment... which we happen to have.
>
>
> I used to prefer Potential-not-thereness API's in "my book" too until one
> day I found it unnecessarily expanding and complicating API's.  Users of
> API's must write defensive code anyway.  The ifNotNil: approach allows a
> simpler API that can provide either existence-testing OR access via one
> simple message rather than two.
>
> As for "fun time-of-check-time-of-use issues" that's just bunk.  You think
> the ifPresent: method doesn't do the same ifNotNil: check or could not be
> interrupted?  Unless you're thinking to put a Mutex into SmalltalkImage to
> make it "thread safe".  What, for background unloading?  If you need that
> guard it from the outside.
>
>>
>>
>> >> >> Well, that definitely stops a DNU and such when running in Morphic
>> >> >> (yay!) but it still won't work in a non-MVC/Morphic world. That's
>> >> >> when
>> >> >> you accused me of overengineering, David :)
>> >> >
>> >> > Yes you're right, I meant that with a smiley, sorry :)
>> >>
>> >> I knew there was something of a smiley in there :) I just meant that
>> >> if we want to preserve the Transcripter's emergencyEvaluator we would
>> >> need this "complexity" because we'd need an emergencyEvaluator per UI
>> >> framework.
>> >
>> >
>> > -1.  Please be more conservative and lazy about putting new
>> > code/elements
>> > into the system.  TSTTCPW demands that we don't start building out
>> > infrastructure for new UI frameworks until those frameworks are being
>> > pushed
>> > into existence and such a factoring is actually NEEDED.  Please only
>> > write
>> > code for the "now" not for some "potential future".  10 years could go
>> > by
>> > with no new graphical frameworks and then someone looking at your
>> > class-hierarchy will regard it as "cruft".
>>
>> (a) The emergency evaluator's there _for good reason_.
>> (b) We HAVE two UI frameworks right now. They're part of the standard
>> image.
>> (c) "Stripped" 4.5 base images do not have ST80, so this code is broken.
>> (d) To fix it _requires_ two separate UI implementations because of point
>> (b).
>>
>> Unless you're specifically saying "we should not have an emergency
>> evaluator". But then say that, not -1 me suggesting a way to fix
>> something broken. (Please feel free to suggest a simpler way of
>> solving the problem that works for all CURRENT UI frameworks.)
>
>
> Ok, all I'm saying is, part of your work is about reorganizing, and other
> parts are about engineering new functionality just to accomodate the
> reorganizations.  (What's worse is when you want to remove functionality
> just to accomodate but I'll be lazy about addressing that).
>
> Whenever there's an arbitrary piece of new functionality (e.g.,
> Morphic-based emergency evaluator) just to avoid crossing package boundaries
> you don't want to cross, then engineering "solutions" to that I think could
> end up being code for ghost situations.
>
> Because there has been no concrete vision/requirement for a Morphic-based
> emergency evaluator (EE).  EE is a relatively rare occurrence (one would
> hope!) and for developers only.  But developers typically use _development
> images_ which tend to be fat, not "Stripped", and so might probably include
> ST80 anyway..?  The cases seem pretty uncertain and so that's why I'm
> questioning engineering new stuff like this into the image.

This is a bug. It needs to be fixed. It's not new functionality,
unless by "new" you mean "it actually works in Morphic".

> Particularly we're at a time when I want to get 4.5 out the door, so that
> may be contributing to my aversion to new engineerings.  I ask you to at
> least consider simple stub error-handling in situations where
> packages/functionality would be unfulfilled.  We can fill in implementations
> later, if needed, but at least you'll have made the structure.

So you'll be happy with

* move the current EE to ST-80,
* fix the EE for Morphic (at some point),
* add an AppRegistry for the EE (which is just a hook like ToolSet and
friends, so we don't tangle the two UI frameworks we have so carefully
untangled)

? If there's a simpler solution, I'm all ears.

frank

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

Chris Muller-3

> Because there has been no concrete vision/requirement for a Morphic-based
> emergency evaluator (EE).  EE is a relatively rare occurrence (one would
> hope!) and for developers only.  But developers typically use _development
> images_ which tend to be fat, not "Stripped", and so might probably include
> ST80 anyway..?  The cases seem pretty uncertain and so that's why I'm
> questioning engineering new stuff like this into the image.

This is a bug. It needs to be fixed. It's not new functionality,
unless by "new" you mean "it actually works in Morphic".

By new I meant, "it works when ST80 is unloaded."


> Particularly we're at a time when I want to get 4.5 out the door, so that
> may be contributing to my aversion to new engineerings.  I ask you to at
> least consider simple stub error-handling in situations where
> packages/functionality would be unfulfilled.  We can fill in implementations
> later, if needed, but at least you'll have made the structure.

So you'll be happy with

* move the current EE to ST-80,
* fix the EE for Morphic (at some point),
* add an AppRegistry for the EE (which is just a hook like ToolSet and
friends, so we don't tangle the two UI frameworks we have so carefully
untangled)

? If there's a simpler solution, I'm all ears.


I too swamped to dig in today and know.  If its small and no potential issue for 4.5, I probably won't complain anymore.  But, in general, I do hope extreme TSTTCPW will be considered for cases during the detangling process.  We have a dynamic programming system.  We wax about developing in the debugger.  It's ok to leave some things simply stubbed if there's a chance they may never be encountered.



Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

David T. Lewis
In reply to this post by Frank Shearar-3
On Fri, Dec 13, 2013 at 06:37:19PM +0000, Frank Shearar wrote:

> On 13 December 2013 16:59, Chris Muller <[hidden email]> wrote:
> >> > Dave, the only thing I don't like about this change is I thought we said
> >> > we
> >> > were going to migrate away from using the Dictionary API on Smalltalk.
> >> > This
> >> > was back when Andreas and community came up with the idea of the wrapped
> >> > 'globals'.
> >> >
> >> > I think it would be better to use
> >> >
> >> >     (Smalltalk classNamed: #Paragraph) ifNotNil: [ : classParagraph |
> >> > ... ]
> >> >
> >> > otherwise we can never find all the places where we try to do logical
> >> > access
> >> > to class.
> >>
> >> In which case we should have #bindingOf:ifPresent, or similar. An API
> >> that forces you to acknowledge the potential not-there-ness of a thing
> >> is far preferable, in my book, to a separate-check-then-use. The
> >> latter also have fun time-of-check-time-of-use issues in a
> >> multiprocessing environment... which we happen to have.
> >
> >
> > I used to prefer Potential-not-thereness API's in "my book" too until one
> > day I found it unnecessarily expanding and complicating API's.  Users of
> > API's must write defensive code anyway.  The ifNotNil: approach allows a
> > simpler API that can provide either existence-testing OR access via one
> > simple message rather than two.
> >
> > As for "fun time-of-check-time-of-use issues" that's just bunk.  You think
> > the ifPresent: method doesn't do the same ifNotNil: check or could not be
> > interrupted?  Unless you're thinking to put a Mutex into SmalltalkImage to
> > make it "thread safe".  What, for background unloading?  If you need that
> > guard it from the outside.
> >
> >>
> >>
> >> >> >> Well, that definitely stops a DNU and such when running in Morphic
> >> >> >> (yay!) but it still won't work in a non-MVC/Morphic world. That's
> >> >> >> when
> >> >> >> you accused me of overengineering, David :)
> >> >> >
> >> >> > Yes you're right, I meant that with a smiley, sorry :)
> >> >>
> >> >> I knew there was something of a smiley in there :) I just meant that
> >> >> if we want to preserve the Transcripter's emergencyEvaluator we would
> >> >> need this "complexity" because we'd need an emergencyEvaluator per UI
> >> >> framework.
> >> >
> >> >
> >> > -1.  Please be more conservative and lazy about putting new
> >> > code/elements
> >> > into the system.  TSTTCPW demands that we don't start building out
> >> > infrastructure for new UI frameworks until those frameworks are being
> >> > pushed
> >> > into existence and such a factoring is actually NEEDED.  Please only
> >> > write
> >> > code for the "now" not for some "potential future".  10 years could go
> >> > by
> >> > with no new graphical frameworks and then someone looking at your
> >> > class-hierarchy will regard it as "cruft".
> >>
> >> (a) The emergency evaluator's there _for good reason_.
> >> (b) We HAVE two UI frameworks right now. They're part of the standard
> >> image.
> >> (c) "Stripped" 4.5 base images do not have ST80, so this code is broken.
> >> (d) To fix it _requires_ two separate UI implementations because of point
> >> (b).
> >>
> >> Unless you're specifically saying "we should not have an emergency
> >> evaluator". But then say that, not -1 me suggesting a way to fix
> >> something broken. (Please feel free to suggest a simpler way of
> >> solving the problem that works for all CURRENT UI frameworks.)
> >
> >
> > Ok, all I'm saying is, part of your work is about reorganizing, and other
> > parts are about engineering new functionality just to accomodate the
> > reorganizations.  (What's worse is when you want to remove functionality
> > just to accomodate but I'll be lazy about addressing that).
> >
> > Whenever there's an arbitrary piece of new functionality (e.g.,
> > Morphic-based emergency evaluator) just to avoid crossing package boundaries
> > you don't want to cross, then engineering "solutions" to that I think could
> > end up being code for ghost situations.
> >
> > Because there has been no concrete vision/requirement for a Morphic-based
> > emergency evaluator (EE).  EE is a relatively rare occurrence (one would
> > hope!) and for developers only.  But developers typically use _development
> > images_ which tend to be fat, not "Stripped", and so might probably include
> > ST80 anyway..?  The cases seem pretty uncertain and so that's why I'm
> > questioning engineering new stuff like this into the image.
>
> This is a bug. It needs to be fixed. It's not new functionality,
> unless by "new" you mean "it actually works in Morphic".
>
> > Particularly we're at a time when I want to get 4.5 out the door, so that
> > may be contributing to my aversion to new engineerings.  I ask you to at
> > least consider simple stub error-handling in situations where
> > packages/functionality would be unfulfilled.  We can fill in implementations
> > later, if needed, but at least you'll have made the structure.
>
> So you'll be happy with
>
> * move the current EE to ST-80,
> * fix the EE for Morphic (at some point),
> * add an AppRegistry for the EE (which is just a hook like ToolSet and
> friends, so we don't tangle the two UI frameworks we have so carefully
> untangled)
>

No.

> ? If there's a simpler solution, I'm all ears.
>

Hopefully there is a simpler solution, aalthough I cannot look into it right now.

Dave

> frank

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections-dtl.548.mcz

Eliot Miranda-2



On Fri, Dec 13, 2013 at 11:38 AM, David T. Lewis <[hidden email]> wrote:
On Fri, Dec 13, 2013 at 06:37:19PM +0000, Frank Shearar wrote:
> On 13 December 2013 16:59, Chris Muller <[hidden email]> wrote:
> >> > Dave, the only thing I don't like about this change is I thought we said
> >> > we
> >> > were going to migrate away from using the Dictionary API on Smalltalk.
> >> > This
> >> > was back when Andreas and community came up with the idea of the wrapped
> >> > 'globals'.
> >> >
> >> > I think it would be better to use
> >> >
> >> >     (Smalltalk classNamed: #Paragraph) ifNotNil: [ : classParagraph |
> >> > ... ]
> >> >
> >> > otherwise we can never find all the places where we try to do logical
> >> > access
> >> > to class.
> >>
> >> In which case we should have #bindingOf:ifPresent, or similar. An API
> >> that forces you to acknowledge the potential not-there-ness of a thing
> >> is far preferable, in my book, to a separate-check-then-use. The
> >> latter also have fun time-of-check-time-of-use issues in a
> >> multiprocessing environment... which we happen to have.
> >
> >
> > I used to prefer Potential-not-thereness API's in "my book" too until one
> > day I found it unnecessarily expanding and complicating API's.  Users of
> > API's must write defensive code anyway.  The ifNotNil: approach allows a
> > simpler API that can provide either existence-testing OR access via one
> > simple message rather than two.
> >
> > As for "fun time-of-check-time-of-use issues" that's just bunk.  You think
> > the ifPresent: method doesn't do the same ifNotNil: check or could not be
> > interrupted?  Unless you're thinking to put a Mutex into SmalltalkImage to
> > make it "thread safe".  What, for background unloading?  If you need that
> > guard it from the outside.
> >
> >>
> >>
> >> >> >> Well, that definitely stops a DNU and such when running in Morphic
> >> >> >> (yay!) but it still won't work in a non-MVC/Morphic world. That's
> >> >> >> when
> >> >> >> you accused me of overengineering, David :)
> >> >> >
> >> >> > Yes you're right, I meant that with a smiley, sorry :)
> >> >>
> >> >> I knew there was something of a smiley in there :) I just meant that
> >> >> if we want to preserve the Transcripter's emergencyEvaluator we would
> >> >> need this "complexity" because we'd need an emergencyEvaluator per UI
> >> >> framework.
> >> >
> >> >
> >> > -1.  Please be more conservative and lazy about putting new
> >> > code/elements
> >> > into the system.  TSTTCPW demands that we don't start building out
> >> > infrastructure for new UI frameworks until those frameworks are being
> >> > pushed
> >> > into existence and such a factoring is actually NEEDED.  Please only
> >> > write
> >> > code for the "now" not for some "potential future".  10 years could go
> >> > by
> >> > with no new graphical frameworks and then someone looking at your
> >> > class-hierarchy will regard it as "cruft".
> >>
> >> (a) The emergency evaluator's there _for good reason_.
> >> (b) We HAVE two UI frameworks right now. They're part of the standard
> >> image.
> >> (c) "Stripped" 4.5 base images do not have ST80, so this code is broken.
> >> (d) To fix it _requires_ two separate UI implementations because of point
> >> (b).
> >>
> >> Unless you're specifically saying "we should not have an emergency
> >> evaluator". But then say that, not -1 me suggesting a way to fix
> >> something broken. (Please feel free to suggest a simpler way of
> >> solving the problem that works for all CURRENT UI frameworks.)
> >
> >
> > Ok, all I'm saying is, part of your work is about reorganizing, and other
> > parts are about engineering new functionality just to accomodate the
> > reorganizations.  (What's worse is when you want to remove functionality
> > just to accomodate but I'll be lazy about addressing that).
> >
> > Whenever there's an arbitrary piece of new functionality (e.g.,
> > Morphic-based emergency evaluator) just to avoid crossing package boundaries
> > you don't want to cross, then engineering "solutions" to that I think could
> > end up being code for ghost situations.
> >
> > Because there has been no concrete vision/requirement for a Morphic-based
> > emergency evaluator (EE).  EE is a relatively rare occurrence (one would
> > hope!) and for developers only.  But developers typically use _development
> > images_ which tend to be fat, not "Stripped", and so might probably include
> > ST80 anyway..?  The cases seem pretty uncertain and so that's why I'm
> > questioning engineering new stuff like this into the image.
>
> This is a bug. It needs to be fixed. It's not new functionality,
> unless by "new" you mean "it actually works in Morphic".
>
> > Particularly we're at a time when I want to get 4.5 out the door, so that
> > may be contributing to my aversion to new engineerings.  I ask you to at
> > least consider simple stub error-handling in situations where
> > packages/functionality would be unfulfilled.  We can fill in implementations
> > later, if needed, but at least you'll have made the structure.
>
> So you'll be happy with
>
> * move the current EE to ST-80,
> * fix the EE for Morphic (at some point),
> * add an AppRegistry for the EE (which is just a hook like ToolSet and
> friends, so we don't tangle the two UI frameworks we have so carefully
> untangled)
>

No.

> ? If there's a simpler solution, I'm all ears.
>

Hopefully there is a simpler solution, aalthough I cannot look into it right now.

Do we have a place-holder?  It is much better to have a string appear in top-left that says "The Morphic emergency evaluator is current;y unimplemented.  this is an oversight it is intended to fix." than have the system lock-up silently.  I'm worried that in a few weeks or months we'll have completely orgotten about the Morphic EE and it'll present a mystery when it is needed.


Dave

> frank




--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Is the FileList broken in trunk?

David T. Lewis
I cannot open a file list (world -> open... -> file list) in a fully updated trunk image.

Is it just me?

Dave


Reply | Threaded
Open this post in threaded view
|

Re: Is the FileList broken in trunk?

timrowledge

On 13-12-2013, at 4:50 PM, David T. Lewis <[hidden email]> wrote:

> I cannot open a file list (world -> open... -> file list) in a fully updated trunk image.
>
> Is it just me?

Possibly; my latest was -297 which worked ok and I just updated to 321 and opening the filelist works ok. OS X 10.9, iMac, Cog vm. Only thing I noticed was a merge dialog popping up relating to some ST80 packages stuff.


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Klingon Code Warrior:- 6) "Our competitors are without honor!"



Reply | Threaded
Open this post in threaded view
|

Re: Is the FileList broken in trunk?

Nicolas Cellier
In reply to this post by David T. Lewis
It works for me... What is the error?


2013/12/14 David T. Lewis <[hidden email]>
I cannot open a file list (world -> open... -> file list) in a fully updated trunk image.

Is it just me?

Dave





Reply | Threaded
Open this post in threaded view
|

Re: Is the FileList broken in trunk?

David T. Lewis
On Sat, Dec 14, 2013 at 02:06:00AM +0100, Nicolas Cellier wrote:
> It works for me... What is the error?
>

Something about a morph not knowing its layout frame, so #layoutFrame answers
nil, leading to a DNU. See attached,

Dave

>
> 2013/12/14 David T. Lewis <[hidden email]>
>
> > I cannot open a file list (world -> open... -> file list) in a fully
> > updated trunk image.
> >
> > Is it just me?
> >
> > Dave
> >
> >
> >

>




MessageNotUnderstood: UndefinedObject>>leftOffset.jpeg (79K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Is the FileList broken in trunk?

David T. Lewis
In reply to this post by timrowledge
On Fri, Dec 13, 2013 at 05:05:27PM -0800, tim Rowledge wrote:
>
> On 13-12-2013, at 4:50 PM, David T. Lewis <[hidden email]> wrote:
>
> > I cannot open a file list (world -> open... -> file list) in a fully updated trunk image.
> >
> > Is it just me?
>
> Possibly; my latest was -297 which worked ok and I just updated to 321 and opening the filelist works ok. OS X 10.9, iMac, Cog vm. Only thing I noticed was a merge dialog popping up relating to some ST80 packages stuff.
>

I'm stumped. My freshly working image is broken (cannot open a file list), so
I went back to an older version of that image in which the file list still
worked, and updated it. No joy, see attached.

<rant>
This is not making me happy. For a long time I have been able to comfortably
work with a working image updated from trunk, and I have never had problems.
That seems to be not the case right now. I might expect this kind of thing in
other forks, but we should be able to do better in Squeak. Really.
</rant>

Dave
 



MessageNotUnderstood: Metaclass>>compile:notifying:trailer:ifFail:.png (45K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Is the FileList broken in trunk?

David T. Lewis
On Fri, Dec 13, 2013 at 09:04:18PM -0500, David T. Lewis wrote:

> On Fri, Dec 13, 2013 at 05:05:27PM -0800, tim Rowledge wrote:
> >
> > On 13-12-2013, at 4:50 PM, David T. Lewis <[hidden email]> wrote:
> >
> > > I cannot open a file list (world -> open... -> file list) in a fully updated trunk image.
> > >
> > > Is it just me?
> >
> > Possibly; my latest was -297 which worked ok and I just updated to 321 and opening the filelist works ok. OS X 10.9, iMac, Cog vm. Only thing I noticed was a merge dialog popping up relating to some ST80 packages stuff.
> >
>
> I'm stumped. My freshly working image is broken (cannot open a file list), so
> I went back to an older version of that image in which the file list still
> worked, and updated it. No joy, see attached.
>
> <rant>
> This is not making me happy. For a long time I have been able to comfortably
> work with a working image updated from trunk, and I have never had problems.
> That seems to be not the case right now. I might expect this kind of thing in
> other forks, but we should be able to do better in Squeak. Really.
> </rant>
>
> Dave
>  

As long as I'm going to indulge in a rant, I should probably put it in context:

- All that I wanted to do was address the rather trivial problem of
Transcripter not working in Morphic if MVC has been unloaded.

- In order to test this, I need to be able to unload MVC.

- MVC unloading is apparently broken, so I want to file in the old method
that does work. But the file list is broken so I cannot do that.

- Meanwhile, Transcripter (which has nothing whatsoever to do with MVC) has
been moved into the ST80 package, which means that as soon as I do figure
out how to get MVC unloaded, the Transcripter will be gone and there will
be nothing left to test.

- Meanwhile, Juan Vuletich (my current role model for quality and clarity of
design) has somehow figured out how to make the Transcripter work in Morphic
in his excellent Cuis image. So now we know that it can be done.

- I figure that all we need to do is adopt Juan's implementation, possibly
vectored through Project or UIManager if there are MVC/Morphic differences,
and we are good to go.

But right now I cannot even open a file list. Hence my rant.

Dave


Reply | Threaded
Open this post in threaded view
|

Re: Is the FileList broken in trunk?

timrowledge
All I can offer is that my image is about as vanilla as it can be; which may well be the crucial difference of course.

Quickly looking around the builder code (wow, never actually seen any of that before…) I can’t even see how the layout could be missing; so far as I can see it is specified as a literal in the FileList>buildWith: method. Eek, and going much further involves diving into the rabbit hole… I might get time to look a bit more later.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: DCBP: Detonate Chair on Bad Password



123