Skip to content

Project Plan

richardgilham edited this page Nov 2, 2022 · 19 revisions

Project Scope

Fab will

  • Develop software to build codebases including major Met Office scientific applications. This will include LFRic, UM and JULES but will be in principle transferable to many science codebases.
  • Demonstrate the use of Fab for specific target applications- LFRic, UM and JULES.
  • Take a quality-focused, open and sustainable approach to minimise barriers for users worldwide.

Fab will not

  • Implement the Fab software as the default extract/build tool for any software
  • NG-DA and JEDI are explicit out of scope

Project Plan- Overview

Fab will be run in a series of phases. These are the same as project stages but the term 'phase' is used to better align with how github is set up.

Early phases of the project occurred prior to this github project being set up and are documented internally to the Met Office. From May 2020 onwards, these documents will be maintained on this wiki.

Untimed milestones

  • Advertise Fab to Met Office Partners to raise awareness and encourage use.

Phases are documented in reverse order to keep newer information at the top.

(NB- plan for later phases to refer back to requirements) Critical path activities will be noted in bold.


Phase 8 (Oct-2022 to Mar-2023) Version 1 release

This phase will refine Fab from beta to vn1.0. Following a full review of the requirements, the following deliverables have been chosen to measure this phase (subject to PjB approval):

  • Support for PSyKALite
  • Upgrade to grab step to improve flexibility and support package branch use cases
  • Documented process for deployment & testing Fab on Met Office and other systems
  • Demonstration of Fab using a second compiler (ifort) for key use cases

Phase 7 (Jul-2022 - Sep-2022) Demonstrator Enhancement

This phase will improve Fab through implementation requirements with aim of improving it usability with major codes, culminating in a beta version. The headline objectives are:

  • Incremental build support
  • Prebuild support
  • PSyKAl-lite support

General improvement of the codebase and documentation will address other small items from the project requirements, but not at the expense of the headline objectives. Notably, there will be some trailing of the 'Busby' optimisation (building .mod files first).


Phase 6 (Apr-2022 - Jun-2022) LFRic Demonstrator

In practice, work towards Phase 6 may run in parallel to Phase 5, starting early. This will be a tactical decision based on how specific tasks map onto the available people. However, if we can't built the UM it's likely we can't build LFRic either.

  • Support for psyclone (Tech Req 13(ii)a) (carried over the from Stage 4).
  • Minimally functional demonstration build of LFRic

Phase 5 (Sept 2021 - Mar-2022) UM Demonstrator

It is expected that most of the required functionality for building JULES and UM, which represent successively larger parts of the LFRic codebase, is already present. This stage will therefore identify and remedy any gaps and demonstrate application of Fab to large codebases.

  • Onboarding and familiarisation of new staff
  • Report back tactical work plan to the Project Board for delivery of Phase 5/6 (end Nov-21)
  • Demonstration build of JULES
  • Demonstration build of UM

Phase 4 (Sept 2020 - Sept 2021)

This stage will work on building the Fab feature set, focused on implementation of the requirements.

Overview & deliverables (under discussion)

  • Support for psyclone (Tech Req 13(ii)a)
  • Fortran/C interoperability (Func Req 3(vii))
  • Annotate the requirements page to note completed/outstanding items
  • Demonstrate building JULES (or suitable alternative) as an example of a large real-world code (stretch)
    • This is expected to flush out shortcomings in what we've done already that can be addressed

We will seek expression of interest from developers in the UM Partnership to contribute developments. In particular, the extract tool looks like a good opportunity.

Further items we are deliberately not doing now include:

  • Merging- not for now as we have MVP to allow us to develop the main build tool. It is hoped that non-MO developers may work in this area as a non-critical path activity.
  • Building libraries- should be largely incidental from the main thrust of the build tool. If we can't build programmes, we can't build libraries.
  • Incremental builds- no point in spending effort on this if we can't build from scratch.

Resources

  • Project management- 0.1 FTE Met Office Scientific Systems Manager
  • Project team - 3 x 0.5 FTE Met Office Scientific Software Engineers

Reports

To follow


Phase 3 (April 2020 - July 2020)

Overview & deliverables

This stage will work on consolidation of the Fab architecture and prepare the ecosystem for opening out to a wider developer pool in later phases

  • Update the project Working Practices so as to allow Fab development to be opened up to selected collaborators at the end of the stage
  • Demonstration of a prototype extraction tool able to fetch from a MOSRS repository using an extensible architecture
  • Demonstration of an extension of the Fab infrastructure to support C code
  • Demonstration of an extensible Fab configuration file to enable flexible control of build options
  • Demonstrate support for a second Fortran compiler (stretch)

Resources

  • Project management- 0.1 FTE Met Office Scientific Systems Manager
  • Project team - 3 x 0.5 FTE Met Office Scientific Software Engineers

Reports


Phase 2 (Nov 2019 to March 2020)

Overview & deliverables

This stage will focus on writing code. The work done in phase 1 identified some core functionalities and these need to be shown to be tractable. These are expected to be:

  • Dependency analysis
  • Transforms API
  • Build state tracking
  • Task management
  • Code extraction

Additionally, the project documents will be moved over to the Fab github. This matches the long-standing and well-regarded practice on the MOSRS such as the UM and LFRic.

Resources

  • Project management- 0.1 FTE Met Office Scientific Systems Manager
  • Project team - 3 x 0.5 FTE Met Office Scientific Software Engineers

Reports

Clone this wiki locally