diff --git a/.github/workflows/pages_graphs.yml b/.github/workflows/pages_graphs.yml new file mode 100644 index 0000000..fa74c18 --- /dev/null +++ b/.github/workflows/pages_graphs.yml @@ -0,0 +1,57 @@ +name: Pages and Graphviz re-render +on: + push: + branches: + - '!100_days' + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +jobs: + build: + name: Rebuild graphs and pages + runs-on: ubuntu-latest + defaults: + run: + working-directory: . + steps: + - uses: actions/checkout@v4 + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' # Not needed with a .ruby-version file + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + cache-version: 0 # Increment this number if you need to re-download cached gems + working-directory: '${{ github.workspace }}' + - name: Setup Pages + id: pages + uses: actions/configure-pages@v3 + - name: Build with Jekyll + # Outputs to the './_site' directory by default + # Will this copy the diagrams tho + run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" + env: + JEKYLL_ENV: production + - uses: ts-graphviz/setup-graphviz@v2 + - name: Diagrams + run: chmod +x ./scripts/render_diagrams.sh; bash ./scripts/render_diagrams.sh + - name: Upload artifact + # Automatically uploads an artifact from the './_site' directory by default + uses: actions/upload-pages-artifact@v1 + with: + path: "_site" + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 \ No newline at end of file diff --git a/.github/workflows/pandoc_pdf.yml b/.github/workflows/pandoc_pdf.yml new file mode 100644 index 0000000..9af8d36 --- /dev/null +++ b/.github/workflows/pandoc_pdf.yml @@ -0,0 +1,17 @@ +on: + push: + paths: "team/talks/**" + +jobs: + convert_via_pandoc: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + - uses: docker://pandoc/latex:3.3.0.0 + with: + args: -s --dpi=300 --slide-level 2 --toc --listings --shift-heading-level=0 --columns=50 -t beamer team/talks/100_days.md -o 100_days.pdf + + - uses: actions/upload-artifact@v3 + with: + name: 100_days.pdf + path: 100_days.pdf diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..7139f47 --- /dev/null +++ b/Gemfile @@ -0,0 +1,35 @@ +source "https://rubygems.org" +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +#gem "jekyll", "~> 4.3.3" +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.5" +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +gem "github-pages", "~> 231", group: :jekyll_plugins +gem "webrick" +gem "just-the-docs" +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.12" +end + +# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", ">= 1", "< 3" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] + +# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem +# do not have a Java counterpart. +gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby] \ No newline at end of file diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..66ff2d7 --- /dev/null +++ b/_config.yml @@ -0,0 +1,12 @@ +title: UKCEH Research Software Engineering in Environmental Data Science +email: jowals@ceh.ac.uk +description: >- # this means to ignore newlines until "baseurl:" + This repository contains documentation and links for the Research Software Engineering group in Environmental Data Science at the UK Centre for Ecology and Hydrology +baseurl: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com +github_username: metazool + +# Build settings +remote_theme: riggraz/no-style-please +plugins: + - jekyll-feed diff --git a/img/teamHeadshots.png b/img/teamHeadshots.png new file mode 100644 index 0000000..ba1b7be Binary files /dev/null and b/img/teamHeadshots.png differ diff --git a/img/ukceh_mini_logo.png b/img/ukceh_mini_logo.png new file mode 100644 index 0000000..d541b05 Binary files /dev/null and b/img/ukceh_mini_logo.png differ diff --git a/learning/carpentries.md b/learning/carpentries.md index 277ce97..1d625d6 100644 --- a/learning/carpentries.md +++ b/learning/carpentries.md @@ -1,5 +1,10 @@ +--- +title: Research Software Carpentries +--- + # The Carpentries + Provide open licenced short courses on topics which help researchers and data managers create more reusable code. The courses can be run by anyone, but the Carpentries organisation also supports members to go through intructor training. Silver level membership includes supported instructor training for 5 people) * [Carpentries membership](https://carpentries.org/membership/) diff --git a/learning/clinics.md b/learning/clinics.md index 37cf9b9..c7ee01b 100644 --- a/learning/clinics.md +++ b/learning/clinics.md @@ -1,3 +1,7 @@ +--- +title: Research Software Clinics +--- + # Research Software Clinics "Clinics" are a model used at the British Geological Survey for knowledge sharing and coaching among software engineering, data science and research staff. The sessions last an hour and run once a fortnight in the two largest BGS sites. diff --git a/scripts/render_diagrams.sh b/scripts/render_diagrams.sh new file mode 100644 index 0000000..dbd4e68 --- /dev/null +++ b/scripts/render_diagrams.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Copilot generated script to render diagrams as SVG + +# Set the directory path +DIR="team/governance/diagrams/" +SITE="_site/" + + +# Loop through each dot file in the subdirectory +for dotfile in "$DIR"*.dot; do + # Get the base name without extension + base_name=$(basename "$dotfile" .dot) + dir_path="_site/${DIR}" + mkdir -p $dir_path + output="$dir_path$base_name.svg" + + # Render the dot file to SVG + dot -Tsvg "$dotfile" -o $output + + # Print a success message + echo "Rendered $dotfile to $output" +done + + + diff --git a/team/governance/diagrams/README.md b/team/governance/diagrams/README.md new file mode 100644 index 0000000..8f96de1 --- /dev/null +++ b/team/governance/diagrams/README.md @@ -0,0 +1,23 @@ +# Governance diagrams + +_Note: these are a draft intended to focus discussion about putting in place that "lightweight governance process" for shared workload with correct oversight. + +While this note is present, the diagrams are definitely not to be read as representative of consensus reality._ + +A set of graphviz dotfiles intended to be read end to end. Drawn in [SketchViz](https://sketchviz.com/) where they render nicely. There's a lot of detail missing, but it's a step downwards from the high level principles. + +## Diagrams + +### Concept phase + +Outline of the flow from a group seeking RSE contribution to a proposed project, to deciding whether it's appropriate to take forward or there are preferable routes (e.g. towards Scientific Computing or People Development). + +### Triage phase + +Outline of the flow from receiving a definite expression of interest through EDS Enquiries, to gauging whether a project is suitable to take forward to the committee. It's probably this phase that needs the most consideration from, and adaptation by, members of the RSE group. + +### Proposal phase + +Outline of the flow from receiving a proposal through a formal channel, to the committee including Science Area representatives and budget holders, to a decision about whether the group has the capacity to work on it in the timeline. + + diff --git a/team/governance/diagrams/application.dot b/team/governance/diagrams/application.dot new file mode 100644 index 0000000..4dacb2a --- /dev/null +++ b/team/governance/diagrams/application.dot @@ -0,0 +1,20 @@ +digraph G { + + bgcolor=white; + node [fontname = "Handlee"]; + edge [fontname = "Handlee"]; + + application [ label="Application"]; + is_complete [ label="Is it complete?" shape=diamond] + committee [label="Science Committee"] + timeline_ok [label="Resources fit the timeline?" shape=diamond] + exco_hr [label="ExCo / HR conversation"] + + application -> is_complete; + is_complete -> timeline_ok [label="Yes"]; + is_complete:ne -> application:se [label="No"]; + + timeline_ok -> committee [label="Yes"]; + timeline_ok -> exco_hr [label="No"]; + +} \ No newline at end of file diff --git a/team/governance/diagrams/concept.dot b/team/governance/diagrams/concept.dot new file mode 100644 index 0000000..84c0d93 --- /dev/null +++ b/team/governance/diagrams/concept.dot @@ -0,0 +1,33 @@ +digraph G { + + bgcolor=transparent; + node [fontname = "Handlee"]; + edge [fontname = "Handlee"]; + + + starting [ label = "Concept"]; + pm_support [ label = "PM support"]; + funded [ label = "Is it funded?" shape=diamond ]; + extra_support [label="What are you looking for?" shape=diamond] + help_tech [label="Type?" shape=diamond] + go_to_it [label="Go to IT channels"] + offered [label="Is this within RSE scope?" shape=diamond] + proposal[label="Proposal for future RSE capability"] + + starting -> funded; + + funded -> pm_support[label="Externally?"]; + funded -> pm_support[label="Internally?"]; + funded -> extra_support[label="Not yet?"]; + + extra_support:w -> pm_support[label="Help with grantwriting"]; + extra_support -> help_tech[label="Technical support"]; + extra_support:e -> offered[label="Consultancy"]; + + help_tech -> offered[label="Skills development"]; + help_tech -> go_to_it[label="Debugging and repair"]; + + offered -> pm_support[label="Yes"] + offered -> proposal[label="No"] + +} \ No newline at end of file diff --git a/team/governance/diagrams/triage.dot b/team/governance/diagrams/triage.dot new file mode 100644 index 0000000..8413c7b --- /dev/null +++ b/team/governance/diagrams/triage.dot @@ -0,0 +1,25 @@ + +digraph G { + + bgcolor=transparent; + node [fontname = "Handlee"]; + edge [fontname = "Handlee"]; + + enquiry [ label="Enquiry"]; + logged_once [ label="Logged FAIRly" shape=rectangle]; + make_forum [label="Make a forum" shape=rectangle]; + review_discussion [label="Review discussion" shape=rectangle] + criteria [label="Fits the criteria?" shape=diamond] + + application [ label="Application"] + log_decision [label="Log decision"] + + enquiry -> logged_once; + logged_once -> make_forum; + make_forum -> review_discussion; + review_discussion -> criteria; + criteria -> application[label="Ready?"]; + criteria:ne -> review_discussion[label="Needs work?"]; + criteria -> log_decision [label="Not really"]; + +} \ No newline at end of file diff --git a/team/talks/100_days.md b/team/talks/100_days.md new file mode 100644 index 0000000..96e5a0b --- /dev/null +++ b/team/talks/100_days.md @@ -0,0 +1,141 @@ +--- +title: "A new RSE group, the first 100 days" +author: Jo Walsh (with Alba Gomez Segura, Joe Marsh Rossney, Matt Brown, Matt Coole and Robin Long) +date: September 3rd 2024 +output: beamer_presentation +institute: "UK Centre for Ecology and Hydrology" +topic: "Research Software Engineering Culture in Environmental Science" +theme: "Singapore" +colortheme: "dolphin" +fonttheme: "professionalfonts" +mainfont: "Hack Nerd Font" +fontsize: 13pt +urlcolor: teal +linkstyle: bold +aspectratio: 169 +logo: img/ukceh_mini_logo.png +section-titles: false +toc: true +--- + + +# A new RSE group, the first 100 days + +## Who we are +_the 'who I am when I'm not working' approach_ + +* 6 people, various academic and software engineering backgrounds +* MJB - Weather-gazer, occasional dancer, photographer, reader, human: https://mattjbr123.github.io/ +* JW - Mapper, hacker, choreographer, fitness instructor: https://github.com/metazool/ +* MC - Pool player, movie lover, occasional walker. +* RL - Scout leader, TBD +* AGS - Curious person who enjoys exploring new places, reading novels, photography and painting. +* JMR - "into things that grow, make sound or otherwise spark joy" + +## Where we are + +* The UK Centre for Ecology and Hydrology +* Not-for-profit independent research org (once NERC) +* Atmospheric chemistry, Biodiversity, Hydro-climate risks, Pollution, Soils and land use and Water resources +* Runs the Environmental Information Data Centre for NERC +* Lots of environmental monitoring and modelling! +* Across 4 sites: Wallingford, Lancaster, Bangor, Edinburgh + +[UKCEH Strategy 2025](https://www.ceh.ac.uk/sites/default/files/UKCEH-Strategy2025.pdf) + +## Why we're here + +* Generally: To help/guide/shape good software engineering practice in an academic setting +* Specifically: Provide expertise to specific projects in the most appropriate way +* Modelling, monitoring, data science and underlying Digital Research Infrastructure +* Working on reusable components across different areas of environmental research + +## What we're aiming for + +* Not be seen as a "resource" or "pool", but as humans who can help! +* Make it easier for scientists to make good decisions about computers +* Create blueprints, templates and guides based on our experiences +* Help shape future national-scale Digital Research Infrastructure through UKCEH +* Floods and Droughts Resilience Infrastructure (find and reuse hydrological data) +* National Capability UK (share, link and reuse environmental monitoring data) + +[UKCEH - our national role](https://www.ceh.ac.uk/our-science/our-national-role) +[UKCEH Innovation Portfolio](https://www.ceh.ac.uk/our-science/innovation) + +## Roles and functions + +* Folks already in RSE or RSE-like roles, attached to groups or projects +* First attempt by UKCEH to build a central group - hired six of us at once! +* Our area of the org is "Environmental Data Science" +* social scientists, data scientists, devops specialists... +* ... data stewards, UX researchers, semantics experts +* Flat team structure, trying to be conscious about communications norms + +## Culture building + +* Ourselves - drafting a Team Agreement +* Our collaborators (EDS, Discussions) +* Our communities (researchers already invested in open source) +* Our networks (groups in similar orgs, local RSE communities) +* CERSE in Edinburgh, CEEDS in Lancaster... + +[Community of Edinburgh RSEs](https://cerse.github.io/) +[Centre of Excellence in Environmental Data Science](https://ceeds.ac.uk) + +## Outreach and skills development + +* Mob programming, working with individuals +* Luxury of doing this while governance still being worked out +* SSI training conversations (they need funding allocation too!) +* Clinics (ways to connect when people are heads-down) +* BGS have a great model for clinics, who else does? + +## Moving to the open + +* "How do we communicate" - default to open, and press for that. +* Both open source, and open process! +* A shared repository mainly used for threaded Discussions +* Daily short, informal standups - text first, chat about common ground +* Weekly catchup with management, 5-10 mins devoted to writing +* Started out with "weeknotes" but they're hard to sustain + +[UKCEH RSE group Discussions](https://github.com/NERC-CEH/rse_group/discussions) + +## Learning from other RSE cultures + +* Many groups have "handbooks" of common patterns +* We don't find open licensed or shared ones +* Not looking for one standard, but more examples! +* How many RSE groups' needs are the same? + +["Getting Started with the RSE Movement within your Organization: A Guide for Individuals"](https://zenodo.org/records/10436166) + +## Balance of activity + +* Short-term engagements, transforming projects... +* ... vs long term, large scale, "excellent and impactful" +* (whether that is community or infrastructure building) +* "knowing what is optimistic and still doable" +* Easier to do what's under your nose than dream big! + +## Being welcoming + +* Balance of larger and smaller commitments +* Staying aspirational while not putting people off! +* Finding ways to focus on longer term community plans +* "How do I stay engaged and informed?" - common question + +## Being equitable + +* Centrally managed IT _very_ conservative about Cyber Essentials +* Developers working on core services get two-tier treatment +* Researchers don't have admin access, therefore we shouldn't! +* After 100 days we don't have a common, comfortable dev environment +* How can we work with other groups to help change this? + +## Thoughtful conclusion + +* We have _a lot_ more questions than we have answers :) +* Looking forward to the "Weather and Climate Science" session +* Talk to us! +\includegraphics{img/teamHeadshots.png} diff --git a/team/talks/100_days_longform.md b/team/talks/100_days_longform.md new file mode 100644 index 0000000..48069fd --- /dev/null +++ b/team/talks/100_days_longform.md @@ -0,0 +1,2 @@ + +FDRI aims to ease the process of finding and analysing hydrological data of clear provenance, so closely aligned with us