Skip to content

Latest commit

 

History

History
112 lines (68 loc) · 6.27 KB

README.md

File metadata and controls

112 lines (68 loc) · 6.27 KB

Introduction to the CURIOSS Patterns Practice

A public repository for the CURIOSS Patterns Practice.

For more information about patterns in general, please see the About Patterns section below.

CURIOSS Patterns

We have listed the CURIOSS Patterns by the common challenges or priorities of CURIOSS members. Patterns may be listed more than once if they relate to multiple themes.

Awareness

Diversity, Equity & Inclusion

Education and Skills

Open Source Discovery

Open Source Sustainability

Policy and Governance

Promoting Best Practices

Rewards & Recognition

About Patterns

What Are Patterns?

Patterns are reusable solutions to common problems within a specific context. Originating from architecture and urban design in the work of Christopher Alexander (see section on Origins), they were later adapted for software engineering, organizational design, and beyond. A pattern captures the essence of a proven solution in a way that can be applied flexibly to different scenarios, providing a shared language for understanding and resolving recurring challenges.

Sharing knowledge is a key goal of the CURIOSS Community - we hope to build our CURIOSS Pattern Practice to record how we tackle the common problems facing OSPOs in university and research institutions.

The CURIOSS Patterns Practice is based on the InnerSource Commons Patterns Practice and we would like to thank all those in that community for inspiring us in this effort.

Key Characteristics of Patterns

  • Context: Describes the situation where the pattern is applicable, including preconditions and constraints.
  • Problem: Identifies the core challenge or issue the pattern addresses.
  • Solution: Offers a general, adaptable approach to solving the problem.
  • Consequences: Discusses the trade-offs and implications of using the pattern.

For CURIOSS Patterns we also include:

  • Title: A phrase that helps identify the pattern
  • Theme/Cateogry: To help us categorize our patterns
  • Known Instances: information on known instances of the use of the pattern.
  • Contributors: A list of all those who contributed to the creation of the pattern (inside and outside of GitHub).

In some cases, we have even included some personal inspiration from the pattern authors.

Benefits of Patterns

  • Encourage reuse of proven solutions.
  • Foster shared understanding and communication within teams.
  • Provide guidance without prescribing rigid processes.
  • Enable scalability by breaking complex systems into manageable components.

Using Patterns

Patterns are not standalone solutions but are often organized into pattern languages or collections. Practitioners use them as building blocks to address complex problems by combining and adapting multiple patterns. A common workflow includes:

  1. Identify the Problem: Understand the specific challenge and its context.
  2. Select Relevant Patterns: Look for patterns that address similar problems or contexts.
  3. Adapt the Pattern: Tailor the solution to fit the unique aspects of the current situation.
  4. Implement and Iterate: Apply the solution, observe its impact, and refine as needed.

We hope that those who implement or adapt patterns here will contribute back their learnings to help improve the overall practice.

Creating Patterns

The process of creating patterns involves observation, abstraction, and testing:

  1. Observation: Identify recurring problems and successful solutions in practice.
  2. Abstraction: Extract the underlying principles and structure from specific instances.
  3. Validation: The pattern matures as it is applied the pattern in different contexts. This stage confirms its effectiveness and generalizability.
  4. Documentation: Use a consistent format to record the pattern, often as a template, making it accessible for others to use.

As CURIOSS and the idea of Academic OSPOs is relatively new, we recognize that the CURIOSS patterns may not yet have significant validation (i.e. may only have been used in one university), but we hope to add further known instances over time.

Origins: From Architecture to Software

The concept of design patterns originated in the field of architecture. Christopher Alexander, an architect, introduced the idea in his book “A Pattern Language: Towns, Buildings, Construction” published in 1977. Alexander’s work focused on identifying recurring problems in architectural design and proposing solutions that could be reused in different contexts. His patterns were intended to improve the quality of life by creating environments that are functional, aesthetically pleasing, and harmonious.

Alexander’s approach to patterns was revolutionary because it provided a structured method for solving design problems. His patterns were not rigid blueprints but flexible guidelines that could be adapted to specific situations. This adaptability made them highly valuable in architecture and laid the groundwork for their application in other fields.1

Footnotes

  1. ‘History and Evolution of Design Patterns: From Architecture to Software’, Design Patterns. Accessed: Dec. 12, 2024. [Online]. Available: https://softwarepatternslexicon.com/patterns-lua/1/3/