Frontend Architecture Working Group/Scope of work

From mediawiki.org

Deliverable: A proposal[edit]

The output of the working group for each exploration is to produce a project proposal. The proposed project should make progress towards the stated goals of the exploration. The proposal does not have to be a FULL SOLUTION for the exploration, but it should be a specific, measurable, achievable, relevant and time bound project that will be a first step for a team to make progress towards the larger goal. The proposal has specific information that must be included. The format of this proposal is at the end of the document.

Context: Product ownership[edit]

For each working group exploration and proposal, the working group must have a product owner. The role of the product owner is to provide scoping which will guide the design of solutions developed within the working group. This can be in the form of requirements, mockups, user stories, features, or any other way to express product needs. This is an important step and component for framing any technology choices as it makes sure that engineering efforts are grounded in real world use cases and make them much more likely to deliver value to our users and communities.

Work: Developing a proposal[edit]

In order to create the proposal, the working group should engage in activities such as discussion, gathering requirements, performing research, speaking with stakeholders, designing architecture, developing mockups, prototyping, or any other activities needed to properly scope the project. During this process the group will be facilitated in order to help them select the best activities in order to accomplish their goal.

Proposal Format[edit]

Each project proposal should be a brief but thorough document that defines the project. The layout and format should be adapted to suit the project, and can include diagrams, tables, schematics, designs, etc…

In addition, every proposal must include the following components:

1. Project deliverable[edit]

What will be produced upon completion of the project. The output of the project must be a demo-able product or prototype with a UI. This ensures that the project has practical application and has demonstrable value which stakeholders, both technical and nontechnical, can see and understand.

2. Product requirements[edit]

A description of the project in terms of features, use cases and/or user stories. This keeps the project focused on delivering something that will solves a real problem that some set of users have and emphasizes knowing why we build something before we get to how.

3. Nonfunctional requirements[edit]

A list of requirements that lay out the constraints of the project. These should include, but are not limited to:

  • Scalability: performance, memory, caching, storage, etc…
  • Security
  • Maintainability
  • Database schema changes and migration plan
  • API changes and migration plans

4. Resources[edit]

People[edit]

The people required to ship the project. These people must be full time and include all disciplines such as managemproposal should be a brief but thorough document that defines the project. The layout and format should be adapted to suit the project, and can include diagrams, tables, schematicsent, design and product. For engineering, the request should reference any needed skills, but should not request specific people.

Required Hardware[edit]

In addition to people, any required hardware should be listed in order to plan for any needed purchases and requests for our data center.

5. Communication[edit]

Any required communications that need to be made to develop and ship the project. This can include:

  • Technical RFCs
  • WMF/WMDE staff
  • Wikimedia Community
  • 3rd Party Community

6. Tradeoffs[edit]

What benefits are gained from doing this project? What burdens do we take on?

7. Risks and contingencies[edit]

A list of potential risks for the project. This should include risks that are both technical and social. In addition, should be a list out contingencies in order to mitigate these risks. How can we fail or backout gracefully?

8. Success and failure[edit]

What does success look like? What about failure? How do we know when we are done, or when we should stop and cut our losses?

9. Questions to be answered[edit]

Unknowns of a project… what questions will we need to answer during the development of the project in order to be successful?

Out of scope[edit]

The working group will not work on these projects themselves. The working group should perform the research and planning in order to develop a good project plan which is represented in the proposal. That proposal will be used to define the work for a separate cross-functional team (though it is possible that some of the working group members may be on that team). The working group can and should make recommendations on the skills of the staff required by the team in order to complete the project, but refrain from specific people requests.

Completion: Presentation to leadership[edit]

After developing the proposal, members of the working group will present the proposal to the Executive Sponsors and Leadership for feedback and sponsorship. Following this process, leadership will form a team and schedule the project for development.