Change Sets
Idea: Actions are stored in some way to reflect changes. Modern configuration management systems (e.g. Git) implement this idea. Can follow a sequence of changes to artifacts. Change Sets are packaged as a unit of exchange. Can lump or split at various levels, depending on need.
Do not want to represent an entire, large artifact as a change set. Would instead store the large artifact in a repository and the Change Set would only represent the changes to that artifact, i.e., would not try to package the entire artifact as a change set.
Proposal: One general method/format to exchange changes to an artifact. Must be generic so that it doesn't matter what the artifact is. Use versioned (STAMP'd) ASTs to represent the changes. Implies that artifacts must be expressed in language for which there is a grammar that allows definition in an AST. Allow changes to any node in the AST tree. Can be used to compute a differential. Artifacts should use UUIDs.
Change Sets should reference a de-serializer. This allows separation of the transport from the artifact notation.
Not for sharing final, approved artifacts. Used for collaboration on creating/editing artifacts.
If we use something like Git, we can store the changes within Git (not using Git's differential capability to calculate the diff between 2 versions of an artifact). We agree on the file format of the change files (e.g., AST).
Need to decide on what to put into a Change Set. Keith proposed it is the equivalent of what a developer commits, which could be small or large.
Also use a delta Change Set vs. a complete (whole component) Change Set.
Action Items: Need to develop a limited demonstration to prove Keith's Change Set proposal. The ABD project might be a candidate since it uses ASTs internally.