Way of Working

December 2, 2025 ยท View on GitHub

Way of Working Badge

Gem Version
MegaLinter Inclusive Language

Introduction

This tool underpins the Way of Working framework, used to describe a consistent, high-quality approach to Software Engineering. It is intended as an opinionated approach supporting rapid development, across numerous projects, by a fungible workforce who can swap between assignments with the minimum friction.

It consists command line tool that uses a modular, plugin-based system to gain functionality, allowing for organisations to pick and choose different solutions for the same feature. Organisations can create their own gem which defines the specific plugin dependencies which form their way of working. See the Way of Working for HDI as an example.

There are subcommands that plugins hook into which enable them to add GitHub actions, configuration and other files to a project and GitHub pages outlining the tooling choice and thinking behind it.

Below is a list of plugins that have been implemented so far:

FeaturePluginDescription
Auditaudit-githubA framework for rules to check for incorrect content and configuration of GitHub repos
Changelogchangelog-keepachangelogImplements keepachangelog v1.1
Code Lintingcode_linting-hdiImplements a combination of MegaLinter and RuboCop built on NDRS standards
Code of Conductcode_of_conduct-contributor_covenantImplements Contributor Covenant v2.1
Decision Recordsdecision_record-madrImplements MADR v3
Inclusive Languageinclusive_language-alexImplements alex
Pull Request Templatepull_request_template-hdiImplements a bespoke PR template
Versioningversioning-semverImplements Semantic Versioning v2.0.0

Installation

Install the gem and add to the application's Gemfile by executing:

bundle add way_of_working

If bundler is not being used to manage dependencies, install the gem by executing:

gem install way_of_working

Usage

Initialise All Components

To add all the Way of Working components to your project, run:

way_of_working init all --contact-method [CONTACT METHOD]

You will need to provide the Code of Conduct [CONTACT METHOD], usually an email address, for community leaders to receive reports of unacceptable behavior.

Help

More help on using the command line tool is found by using:

way_of_working help

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment. This RubyGem was created using bundle gem --exe way_of_working.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

When creating plugins, the convention is to create them within the WayOfWorking and feature namespaces. E.g.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/HealthDataInsight/way_of_working. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the WayOfWorking project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.