Activity Backward Compatibility (was re: Re: joyride 2128 smoketest)

Bobby Powers bobbypowers at gmail.com
Sat Jul 12 12:39:50 EDT 2008


On 7/12/08, Morgan Collett <morgan.collett at gmail.com> wrote:
> On Sat, Jul 12, 2008 at 00:56, Greg Smith <gregsmitholpc at gmail.com> wrote:
>  > Hi Guys,
>  >
>  > We should definitely have backward compatibility for activities!
>
>
> In my opinion, there should be compatibility from one release to the
>  next. APIs should not break from release to release unless critically
>  necessary. If there is a new way of doing things which is better, the
>  old way should still work - but it should warn in the log files that a
>  deprecated API is being used.

Problems arise independently of API when libraries not part of the
base system are used.  For example, I have an activity that uses
goocanvas and the glibmm libaries, which I package in the activity
bundle.  I tried first using glibmm from F9, but it didn't work on
F7-based builds.  I then substituted glibmm from F7, and it works on
656, 703/8, and all the recent joyrides.

I don't know the best way to handle this generally, I suppose it is up
to individual activity owners to make sure their stuff works all over.

bobby

>  We should announce API deprecations - and API breaks where necessary -
>  in advance of a new release (as well as release notes) so that
>  activity authors are well aware of what is happening. This is done for
>  Python releases, for example, giving people details on how to update
>  python code from one version to another.
>
>  Indefinite support of backwards compatibility certainly has been a
>  major cause of platforms deteriorating (I'm thinking of Windows here).
>
>
>  > That is, activities that used to work (maybe starting at 656) must
>  > continue to work. If a new release requires that all activity authors
>  > have to recode some of their work, that will be a major deterrent to
>  > working with us.
>
>
> 65x releases did not have Rainbow running, so activities could access
>  and write to places on the filesystem which are no longer possible.
>  For that reason we can only really focus on activities which already
>  run on Rainbow.
>
>
>  > Its also a deterrent to deployments upgrading, assuming they find out
>  > their activities are broken before they upgrade.
>  >
>  > I understand that we do not have backward compatibility in 8.2.0 as it
>  > currently stands.
>
>
> My understanding is that we made no particular guarantees, and while
>  we did not intentionally break APIs, some things may have broken along
>  the way.
>
>  I think our development process should include some sort of
>  compatibility management - perhaps as I mentioned above with API
>  support between two consecutive releases - and this could be enforced
>  or monitored with some sort of test activity (or test suite) that uses
>  the various Sugar APIs and reports on failures.
>
>
>  > Can we bound the test problem by saying that all "well behaved"
>  > activities will continue to work?
>
>
> Unfortunately I think our APIs are insufficiently documented (or have
>  been) so that even core activities are not guaranteed to be "well
>  behaved".
>
>
>  > If we can define "well behaved" and not test activities that meet that
>  > criteria it will save us a lot of test time.
>
>
> I think a better criteria would be "responsive activity authors" who
>  make some kind of commitment to keep their activities up to date from
>  release to release. I don't think we should spend resources testing
>  arbitrary third party activities, but where we can maintain a
>  responsive developer community we can include them in the process.
>
>
>  > Any other suggestions on how to bound this test challenge appreciated!
>  >
>  > e.g. can we say that all activities not listed on this page:
>  > http://wiki.sugarlabs.org/go/ReleaseTeam/Releases/Sucrose/0.81.4 will
>  > work the same in 8.2.0 as they did in previous releases?
>
>
> Not all activities were updated in Sucrose release 0.81.4 - some were
>  updated in previous Sucrose releases. The activities listed in
>  http://wiki.sugarlabs.org/go/Modules are ones where the maintainers
>  have agreed to use the Sucrose release cycle (and other conditions
>  listed in http://wiki.sugarlabs.org/go/ReleaseTeam#New_activities).
>  These are activities which the Sugar project lists as demo activities,
>  and may or may not coincide with OLPC's deployed activities (in the
>  long term, as other users of Sugar emerge) - but they are certainly
>  candidates for OLPC's use.
>
>  Thus I would say that activities *not* on that list are the ones that
>  are *not* guaranteed to work with 8.2.0, because the authors did not
>  step up and take an interest in the new release.
>
>
>  > In the future if some piece of core code will cause previously supported
>  > activities to no longer work, I hope we can discuss and accept or reject
>  > that in advance (sorry if I missed that debate on this round).
>
>
> API breaks should be discussed during a development cycle as the need
>  for them emerges, hopefully as early as possible in the cycle so there
>  are no surprises.
>
>
>  > In the worst case we have to test as many activities as possible but its
>  > much better to ensure API changes are not breaking things from the OS level.
>  >
>  > On the other hand, newer activities can require a newer OS. That can be
>  > handled if we have good activity documentation on the download and
>  > activity pages.
>
>
> Yes. You've been talking about running old activities on a new release
>  - I would include new versions of activities here which may require a
>  newer OS/release.
>
>  Perhaps we should change the activity service name (e.g.
>  org.laptop.Chat) when an activity is updated in such a way that it can
>  no longer run on old releases. Perhaps that should also be done when a
>  newer version of an activity can no longer collaborate with an older
>  version.
>
>
>  > Sounds like we have a big activity test challenge ahead for 8.2.0...
>  >
>  > BTW is this the full list of all known activities?
>  > http://wiki.laptop.org/go/Activities
>  >
>  > Let's talk more about this on the Tuesday call.
>  >
>  > Thanks,
>  >
>  > Greg S
>
>
> Regards
>
> Morgan
>
> _______________________________________________
>  Devel mailing list
>  Devel at lists.laptop.org
>  http://lists.laptop.org/listinfo/devel
>



More information about the Devel mailing list