Engineering
Knowledge levels
L1: App Creator
Wants a one-liner use case for adding Material Motion to their app. For example:
transitionController.director = PhotoTransition
Will generally just use — and potentially compose — pre-built directors in order to describe interactions. The pre-built directors might come from the material motion catalog or from elsewhere.
L2: Director Creator
May be an App Creator who was unable to express their desired interaction with the pre-packaged Directors. A Director Creator must now learn how to use plans to describe interactions and to create custom Directors. The resulting director will get added to the list of Directors used by the App Creators.
L3: Motion Creator
May be a Director Creator who was unable to express their desired interaction with the pre-packaged plans. A Motion Creator must now learn how to create new motion families (plans\/performers) that can describe the types of motion they desire. The resulting motion families will be used by Director Creators.
L4: Runtime engineering
The Creator has decided that there is some functionality missing from all of the above knowledge areas, and has now decided to make modifications to the Runtime. This may result in modifications to the Runtime, the Plan\/Performer protocols, or other aspects of the Runtime as a whole.
Pivotal journey: First use of Material Motion in an existing app
Assumptions
The person is familiar with their platform and their platform’s dominant package management solution.
Result
Material Motion transition or interaction integrated into an existing app.
Ideal journey (does not exist yet)
- Visit <material motion website>.
- Select a platform.
- Read a one-pager download and integration guide.
- Add dependencies to the app.
- Add lines of code required to use a director.
- Build and run the app.
Pivotal journey: Create a new director
Assumptions
The person is familiar with Material Motion’s concept of “directors”.
End-goal
Create a new transition or interaction director and use it in an app.
Ideal journey (does not exist yet)
- Visit <material motion website>.
- Visit <guides | tutorials>.
- Read a one-pager on creating a new director.
- Create a new director in code.
- Add dependencies for needed motion families.
- Integrate the director in the app.
- Build and run the app.
Pivotal journey: Create a new motion family
Assumptions
The person is familiar with Material Motion’s concept of “motion families”.
End-goal
Create a new motion family and use it in a director.
Ideal journey (does not exist yet)
- Visit <material motion website>.
- Visit <guides | tutorials>.
- Read a one-pager on creating a new motion family.
- Create new plan\/performer types.
- Use the new plans in a director.
- Integrate the director in the app.
- Build and run the app.
Pivotal journey: Onboard a new contributor
Assumptions
The person has already made some minor contributions to the project or is intending to join the team in a regularly-contributing capacity.
End-goal
All code review tooling installed and ready to use. Able to run arc diff successfully.
Ideal journey (does not exist yet)
- Visit <material motion website>.
- Visit <Contributing?>.
- Read a one-pager on onboarding.
Journey
- Pings a core team member, either via Discord or directly.
- Person is told to visit the Onboarding doc.
- Follows the steps outlined in the doc.
Toothbrush journey: Publish a diff
Assumptions
The engineer has read the Onboarding documentation and is able to run arc diff. The engineer is a “frequent contributor”.
End-goal
Publish a local change to the GitHub repository’s develop branch.
Journey
- Creates a local git branch with a variety of changes.
- Runs arc diff to generate a diff for review. Diff is published to codereview.cc. Diff is auto-assigned reviewer groups.
- Receives feedback from peers.
- Iterates on local changes. Runs arc diff again to update the diff.
- Receives an LGTM from a peer.
- Lands the diff onto origin\/develop with arc land.