Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating and restructuring the promotion guidelines for Core Components #453

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,12 @@
title: Core Samvera Code Repository
permalink: core_components.html
keywords: [ 'Components', 'Labs', 'Community', 'Development', 'Maintenance' ]
last_updated: May 9, 2022
last_updated: June 23, 2022
folder: samvera/developer_community/git_structure/
---
# Samvera Code Repository

The [primary Samvera code repository](https://github.com/samvera) contains the
Samvera community's current consensus
on what we are using, maintaining, and recommending. Ideally, this repository
only contains code modules that are being actively used and maintained. Anything
that falls into disuse should be a candidate for [deprecation](deprecation.html).
The [primary Samvera GitHub Organization](https://github.com/samvera) contains the Samvera community's current consensus on what we are using, maintaining, and recommending. Ideally, this repository only contains code modules that are being actively used and maintained. Anything that falls into disuse should be a candidate for [deprecation](deprecation.html).

## Requirements for a Core Component

Expand Down
61 changes: 23 additions & 38 deletions pages/samvera/developer_community/git_structure/samvera_labs.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,79 +2,64 @@
title: Samvera Labs
permalink: samvera_labs.html
keywords: ["Labs", "Experiments", "Starting a Project", "Development"]
last_updated: February 2, 2022
last_updated: June 23, 2022
folder: samvera/developer_community/git_structure/
sidebar: samvera_sidebar
toc: true
---
# What is Samvera-Labs?

The [`samvera-labs` Github repository](https://github.com/samvera-labs) is for
The [`samvera-labs` Github Organization](https://github.com/samvera-labs) is for
Samvera Experiments, Works-in-progress, and Beta versions of gems and apps.
Projects here may be suitable for production use, but awaiting broader adoption.

## Requirements for creating a project
The samvera-labs repository is meant to be a true lab, and experimentation is to
be encouraged as much as possible. The committers may accept any any contributions
to samvera-labs by any Samvera Licensed Contributors wishing to offer their work.
The samvera-labs repository is meant to be a true lab, and experimentation is to be encouraged as much as possible. The committers may accept any any contributions to samvera-labs by any Samvera Contributors wishing to offer their work.

## Guidelines for Promotion to Samvera from Labs
You may utilize this [template](https://docs.google.com/document/d/1pq80frBACLzA_q9cE1ZnMZh4WTiBv6iMUXELligbcv0/edit?usp=sharing) to display how your repository meets each criteria

To move from `samvera-labs` to the core `samvera` code organization, the following
requirements must be met:
To move from `samvera-labs` to the core `samvera` code organization, the following requirements must be met:

### Code Requirements

1. Code must be released at version >= 1.0
1. Software unit and integration test suites using a framework such as [RSpec](https://rspec.info/) or [Jest for JavaScript](https://jestjs.io/). While there is no minimum threshold for test coverage, usage of tools such as [SimpleCov for Ruby](https://github.com/simplecov-ruby/simplecov) or [Jest test coverage analysis features](https://jestjs.io/docs/configuration#collectcoverage-boolean) are encouraged (but not required)

1. Good unit test coverage measured by community (e.g. 100% or 75% of what’s important)
1. Employs a source code linting tool such as [Bixby](https://github.com/samvera/bixby) or [Prettier](https://github.com/prettier/prettier) in order to enforce style guidelines within the source code base

1. Show compatibility with current Ruby and Rails versions and other dependencies, when was it last tested. Note compatibility with prior versions when available. Compatibility can be specified in the gemspec(s) or verified within the CI configuration

1. uses CI (Preferably CircleCI, unless there is a compelling reason to do something else)
1. Uses continuous integration to automate the execution of test suites (preferably CircleCI, unless there is a compelling reason to do something else). For CircleCI, also strongly encouraged would be the usage of [Samvera CircleCI Orb](https://github.com/samvera/samvera-circleci-orb)

1. uses Coverage tool (coveralls or simplecov)
1. Code must feature releases using [RubyGems](https://rubygems.org/) or the [NPM](https://www.npmjs.com/), and offer a release version >= 1.0.0

1. Show compatibility with current Rails versions and other dependencies, when was it last tested; note compatibility with prior versions when available. Compatibility can be specified in the gemspec(s) or verified via CI matrix.

1. [Hierarchy of promises](https://samvera.atlassian.net/wiki/spaces/samvera/pages/405211336/Hydra+Stack+-+The+Hierarchy+of+Promises) asserted in clearly defined acceptance tests
1. Code releases must follow the [Semantic Versioning specification](https://semver.org/) standards

### Documentation Requirements
These document files are derived from the templates managed within [the Samvera Maintenance repository](https://github.com/samvera/maintenance).

1. LICENSE file, Apache 2 (or compatible)

1. README.md

1. Statement of purpose
1. [`README.md`](https://github.com/samvera/maintenance/blob/main/templates/README.md)

1. Basic install steps
1. [`LICENSE`](https://github.com/samvera/maintenance/blob/main/templates/LICENSE)

1. Identify any volatile/experimental features
1. [`CODE_OF_CONDUCT.md`](https://github.com/samvera/maintenance/blob/main/templates/CODE_OF_CONDUCT.md)

1. How to contribute -> CONTRIBUTING.md
1. [`SUPPORT.md`](https://github.com/samvera/maintenance/blob/main/templates/SUPPORT.md)

1. How/Who to contact for help -> push out to all gems like CONTRIBUTING.md
1. [`CONTRIBUTING.md`](https://github.com/samvera/maintenance/blob/main/templates/CONTRIBUTING.md)

1. Known issues documented in github Issues tickets (not just listed in text)
1. Known issues documented in GitHub Issues

1. Tutorial / Walkthrough / Example usage

1. Resolve TODO items in documents and remove them

1. All Contributors should have signed Hydra Contibutor License Agreement (CLA)
1. Resolve any `TODO` comments within the code base (or, remove the comments and please create these as GitHub Issues)

### Use Requirements

1. Community use by three or more institutions

1. In active use for six months
1. Community use by three or more organizations

1. Has an ongoing maintenance plan.
1. In active use for six months

1. Has an ongoing maintenance plan

## Mechanism for Promotion

As needed or requested, code repositories are reviewed for promotion / deprecation.
To start this process, email the Samvera Tech list with a request. Provide documentation
that all of the above requirements have been met. Ask for a spot on the next developer's
call to discuss the issue. Once the promotion has been decided, another email
should go out to the list with an announcement.
As needed or requested, code repositories are reviewed for promotion and deprecation. To start this process, email the [Samvera Tech Google Group](https://groups.google.com/g/samvera-tech) with a request. Provide documentation that all of the above requirements have been met. Then propose an agenda item on the next [Samvera Tech Call](https://samvera.atlassian.net/wiki/spaces/samvera/pages/405211059/Notes+from+Tech+Meetings+and+Calls) to discuss the issue. Once the promotion has been decided, another email should go out to the group with an announcement.