[sugar] [PATCH] Add speaker device and icon by default

Marco Pesenti Gritti mpgritti
Tue Apr 29 08:24:06 EDT 2008


I'm not really sure about the value of this kind of try/except blocks.
If the target is to avoid the shell exiting in any case, we could as
well try/except the whole code executed before gtk.main().

Marco

On Tue, Apr 29, 2008 at 2:12 PM, Tomeu Vizoso <tomeu at tomeuvizoso.net> wrote:
>
> On Tue, Apr 29, 2008 at 1:37 AM, Martin Dengler
>  <martin at martindengler.com> wrote:
>  > On Mon, Apr 28, 2008 at 06:12:31PM -0400, Michael Stone wrote:
>  >  > On Mon, Apr 28, 2008 at 10:26:21PM +0100, Martin Dengler wrote:
>  >  > > On Mon, Apr 28, 2008 at 01:08:04PM -0400, Michael Stone wrote:
>  >  > > > Can calls to self._mixer or self._master fail even when these attributes
>  >  > > > are not None?
>  >  > >
>  >  > > It doesn't appear a concern from the existing hardwaremanager.py code,
>  >  > > and not in practice: I've tested checking/changing the volume in a few
>  >  > > activities.
>  >  >
>  >  > I seem to recall having encountered situations where sugar startup would
>  >  > fail (in early versions of the QEMU image, before sound began working)
>  >  > as a result of unchecked use of sound hardware. I fixed the problem by
>  >  > commenting out volume control in the sugar shell. It was a particularly
>  >  > annoying problem because it was persistent, which meant that X entered
>  >  > an infinite reboot loop.
>  >
>  >  Yes, that problem exists and my patch is no worse in this respect - I
>  >  meant to make both points very explicit later in the email to which
>  >  you replied.  Given the clear implication that we should do better,
>  >  I'll change my patch.
>  >
>  >  If you, or marco, or anyone has an opinion about where the best place
>  >  to introduce the real paranoia, please let me know.  OTTOMH, given we
>  >  obviously want to make Sugar not crash and (secondarily) minimize
>  >  spamming of 'try:...except's, hardwaremanager.py's where I would
>  >  introduce the bulk of the changes (rather than make speaker.py,
>  >  randomactivity.py,
>  >  presence-palette-that-wants-to-make-a-dinging-noise.py, etc. do this).
>  >
>  >  If anyone thinks that's controversial let me know.
>  >
>  >
>  >  > > The original author of the hardwaremanager.py trusted the gst classes
>  >  > > just as much as I am...  also keep in mind that I actually saw and
>  >  > > worked around two failures (#6933, #6934) of exactly these
>  >  > > attributes/implementations,
>  >  >
>  >  > In your opinion, did the original author of hardwaremanager.py (or
>  >  > authors of the clients of hardwaremanager.py?) exercise the degree of
>  >  > caution necessary to deliver a solid, reliable Sugar experience to our
>  >  > present audience? (I say "present" audience because I think that our
>  >  > audience has changed from one which consisted primarily of developers to
>  >  > one which consists primarily of semi-literate children.)
>  >
>  >  As a rhetorical question I think I understand the point.  As a
>  >  non-rhetorical question, I'll decline to answer due to lack of
>  >  context/familiarity with the conditions.
>  >
>  >
>  >  > > > Also, what happens if an exception is thrown by, say, Device.__init__()?
>  >  > >
>  >  > > Given the current state of error checking, sugar (the shell) will fail
>  >  > > to start and matchbox will exit (I saw this during testing, and just
>  >  > > now tried 'raise Exception("we love m_stone")' to confirm.)
>  >  >
>  >  > Is the exception properly recorded?
>  >
>  >  I'm sorry, I will have to research the proper way to record such an
>  >  exception.  I don't know.
>  >
>  >
>  >  > Is it possible (easy?) to send the traceback upstream to us?
>  >
>  >  Very interesting idea.  Is there a plan for aggregating such data?
>  >  cscott's FISL presenation had some (http-sourced?) usage graphs...is
>  >  there a "Send Microsoft a Report"- (or "We Share Your Pain" :)) like
>  >  server to which our code could send such reports?  Do you want
>  >  automated/staged trac submissions? The design/architecture/maintenance
>  >  solution space is well beyond my time to explore.  Lacking any leads
>  >  therein I'm going to answer to your question as "I know not this
>  >  'upstream', would be happy to use one, but have no resources to build
>  >  one".
>  >
>  >
>  >  > > Device.__init__() is four lines of code, and depends on
>  >  > > util.unique_id() and gobject.GObject.__init__().
>  >  >
>  >  > Device.__init__() sounds like the sort of thing that I expect will be
>  >  > overridden by subclasses in interesting ways and it sounds like the sort
>  >  > of thing that will break when people try to run Sugar on platforms we
>  >  > haven't tested pre-qualified.
>  >
>  >  I think you're encouraging me to make Device.__init__() a bit safer,
>  >  or add some comments, or something similar, rather than changing
>  >  speaker.py's __init__().  It's going to get a bit hairy if we can't
>  >  trust our superclass(es)'s constructor(s).  Or perhaps you'd have me
>  >  consider patching devices.py, to survive any of its devices' not
>  >  initializing.
>  >
>  >  If you / anyone has a preference for either approach, or how I
>  >  structure the changes into one or more patches (this is part of the
>  >  culture that I haven't picked up yet), please let me know.
>  >
>  >  Otherwise I will go forward with what you've said on the principle
>  >  that you/others would rather slap my code back/down than micromanage
>  >  me forward.
>  >
>  >
>  >  > > and no other similar bit of code... does any more checking than this.
>  >  >
>  >  > Is this good? In particular, is it good that an exception that bubbles
>  >  > up through Device.__init__() causes X to enter an infinite restart loop?
>  >
>  >  ibid.
>  >
>  >
>  >  > > And please excuse me if I've missed a howler of a bug that you're
>  >  > > socraticly/patiently trying to make me realize - just feel free to say
>  >  > > outright what sucks and I'll fix it!
>  >  >
>  >  > You seem to be telling me that Sugar will crash if any of its device
>  >  > abstractions fails to initialize. That seems like a howler of a bug to
>  >  > me (though perhaps not one in your code). Is this desirable behavior? Is
>  >  > it intentional?
>  >
>  >  No, and (from the point of view of a non-Sugar, non-OLPC, new patcher)
>  >  I had to consider that it was intentional, or at least was something
>  >  that (before your email) I wasn't in a position to presume to change
>  >  (or to submit a patch that invasive for a new icon addition).
>  >
>  >  I'm happy to revise that approach, as hopefully previously made clear.
>
>  I think that Michael has spotted here a wonderful opportunity for
>  making Sugar more robust, thanks to your patch.
>
>  What about just making the shell to catch (and log) any exception
>  resulting from the initialization of a device? That should amount to
>  just add one try..except block.
>
>  Devices are thought to be easily added, so its an expected source of
>  new bugs. The shell should be able to start when any of them fail.
>
>  Thanks,
>
>  Tomeu
>
>
> _______________________________________________
>  Sugar mailing list
>  Sugar at lists.laptop.org
>  http://lists.laptop.org/listinfo/sugar
>



More information about the Sugar-devel mailing list