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

Add experimental package directory, decision record #26

Merged
merged 3 commits into from
Jul 8, 2024
Merged
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
8 changes: 3 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ that backend,
a concrete implementation
must be written for it.

Here's a list of backends
that are currently supported:
Here's a list of backends that are currently supported:

| Backend | Link |
| :------------- | :------------- |
Expand Down Expand Up @@ -142,7 +141,7 @@ which we believe are useful, including:
* Concrete implementations can be written once
and distributed as libraries.

* [Decorator Patterns][].
* Decorator Patterns

* Built-in concurrency controls into *Server*.

Expand All @@ -151,7 +150,6 @@ which we believe are useful, including:

* Transaction-based *Receivers*.

[Decorator Patterns]: ./doc/decorator_patterns.md
[pub-sub]: https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern
[http_handler]: https://golang.org/pkg/net/http/#HandlerFunc.ServeHTTP
[http_responsewriter]: https://golang.org/pkg/net/http/#ResponseWriter
[http_responsewriter]: https://golang.org/pkg/net/http/#ResponseWriter
33 changes: 33 additions & 0 deletions docs/decisions/2024-07-09-experimental-changes
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
Date: 2024/07/09
Authors: @Xopherus, @shezadkhan137
Status: Accepted
---

# Experimental Libraries

## Context

Go-msg is an open source library, although primarily used internally (at ZeroFox).
There are new features and changes we wish to implement,
although it is sometimes difficult to merge because we have
a higher standard for excellence (given the code is open source).

It would be useful to have a mechanism to indicate that changes we introduce can be experimental (not production ready),
and should be used at your own risk.
This would allow us to innovate with additional backends, decorators, and primitives
without changing the core of the library
until we are confident that such changes should be accepted.

## Decision

We will create an `go-msg/x/` directory which will house experimental features.
We chose this model after [Go's experimental libraries](https://pkg.go.dev/golang.org/x/exp#section-readme).

As a caveat, packages here are **experimental and unreliable**. They may be promoted to the main package,
modified entirely, or removed.

## Consequences

Every experimental package introduced should be accompanied with a Decision Record,
indicating what we're adding and why.
6 changes: 6 additions & 0 deletions x/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Experimental Packages (x)

This directory holds experimental packages ([decision record](../docs/decisions/2024-07-09-experimental-changes)).
The intent is to introduce new features which may or may not become a part of the core library.

Code in this directory may not be backwards compatible.
Loading