Hi Phillip,
I don't have answers to all of your questions, but here are some high
level end user requirements as I understand them:
(1) We need to provide a path for users to migrate their data from one
release to another. This includes 0.6 --> 0.7.
(2) For 0.6 (and 0.6.1) --> future releases, we only need to provide
this path for calendar data, not all data persisted in the repository.
The currently available mechanism is to export the data to (standard)
ics files, and then to reimport.
(3) In the 0.7 timeframe, we're going to have midpoints (maybe these are
the same as milestones, full proposal coming) that the user can download
and use. This implies that we need to support a path for users to
migrate data from 0.6.1 --> 0.7m1, from 0.7m1 --> 0.7m2, etc.
(4) In the 0.7 timeframe, we need to expand the set of data that needs
to migrate beyond calendar, to include notes and other items seen in the
"dashboard". We do *not* need to support all persistent data in 0.7. We
do probably need to support some calendar preferences and account
settings. We don't need to support migration of ui settings (most cpia
persistent data).
(5) By 1.0 we'd like to be able to preserve "presentation data" across
releases as well.
(6) Before 1.0, we ask users to live with some risk of losing their
data, though we make it a high priority now to fix any bug or problem
known to cause data loss or corruption.
(7) The install process or Chandler launch should automate some of the
upgrade process in 0.7 (instead of asking users to do this by hand as we
do now).
(8) There should be some path for extension parcels to have data
migrated along with the ootb schemas, but it can require extra work from
the parcel writers to make it happen.
We have some open questions around sharing and schema evolution.
- Do we need to support multiple chandler versions sharing the same data?
One sort of ugly short-term proposal that Morgen and I discussed: users
would have to migrate their data locally and then publish a new share to
the server (new tickets, new subscriptions for sharees, etc.)
Morgen and I agreed that in the long term, we probably need to identify
a sharing format (the well defined externalization of the data that you
mention). This would allow the client (and the server) to be able to
change internal formats, as long as they could migrate the data to the
well known externalization. This would require some work in the sharing
framework.
Morgen proposed that the 0.7 release be the release that we really nail
down the domain model as well as this externalization. This would mean
him spending some time on the sharing framework to support this, which
we believe would fit in the schedule.
More comments below...
Phillip J. Eby wrote:
At some point, Chandler is going to be keeping users' real data, and be
the only place where that data is kept. When that happens, we will be
responsible for ensuring that their data remains intact across
upgrades. Even if this is done through some kind of import/export
mechanism, we will need to keep track of the changes in our schema so
that this *can* be done.
There are several key questions about this that remain open:
* When will we be committing to keeping users' data safe across
upgrades? Is it 0.7? 0.8? 1.0?
See above. Ask more questions if you need clarification. :)
* How will we ensure (procedurally or otherwise) that each version of
Chandler will successfully upgrade from older versions?
I'm not sure I fully understand this question. Is this question about
testing?
* What support will we provide for parcel developers to ensure that
*their* schemas upgrade safely, as well as the Chandler "out of the box"
schemas?
I think that we need to provide hooks so that parcel developers can hook
into the same ui. If we ask the user to do a manual step to
export/import, the parcel developer should be able to get data into that
same exported file (or directory or whatever). If we have an automated
step at startup, the parcel developer should be able to take advantage
of that same automated step.
I think it reasonable to ask the parcel developer to do some work,
define an external format, etc.
* When an upgrade has to be reverted, what guarantees should we give the
user for being able to revert safely without losing data?
Is it reasonable to assume that a backup externalization is good enough?
While I'm taking responsibility for driving the technical implementation
of schema evolution features in 0.7, there is a lot here that is more on
the organizational commitment level. Really, the technical
implementation of schema evolution features is only the tip of the
iceberg of effort here. Tracking changes, writing upgrade code, and
testing will be the biggest resource investments here.
Agreed.
Cheers,
Katie
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev