mirror of
https://github.com/mumble-voip/mumble.git
synced 2025-10-26 11:19:16 +00:00
The gRPC implementation never left the experimental state and never reached a properly stable state to the point where we would feel good about enabling it by default. In addition to that, there has been no further attempts at finding and fixing the encountered issues in the implementation (except #3947 but that was discontinued). As such we had an essentially unmaintained piece of code in our server implementation that was known to be buggy and that nobody wanted to fix. In addition to that the implementation itself could not be considered very clean or elegant and therefore only represented a few smelly corners in our code base. For this reason, we decided to remove the gRPC support entirely from Mumble (for now). What we hope to gain by that is: - Prevent people from building unstable server versions and then coming to us complaining that it crashed/misbehaved - Removing (essentially) dead code - Reduce the RPC implementation complexity That last piece is crucial: By removing gRPC support we reduce the amount of supported RPC frameworks to only one (ignoring DBus for now). Our future plans include a refactoring of how RPC is being handled and implemented and only having to worry about maintaining compatibility with one RPC system is much easier than having to worry about two (with (slightly) different APIs). Once the RPC implementation has been rewritten, more RPC backends may be reintroduced and in that process we might investigate adding a proper gRPC implementation to the code (that then hopefully is more stable than the current one). Fixes #4567 Fixes #4197 Fixes #3496 Fixes #3429 Fixes #3265
154 lines
5.8 KiB
Markdown
154 lines
5.8 KiB
Markdown
# General philosophy
|
|
|
|
- **Each change goes into its own commit**. If you want to summarize what you did with this commit (in the commit message)
|
|
and you start using the word "and", you probably want to split the commit up into 2 or more individual commits.
|
|
|
|
- **Each commit should compile** (try to make each commit self-contained so that it is possible to compile the code at
|
|
each commit).
|
|
|
|
- **Take your time** when composing the commit message. In order to have a good git-history the commit messages are essential.
|
|
Also if you put effort into the commit-message, you'll save work when creating a PullRequest as the description is already available.
|
|
|
|
|
|
# Commit message
|
|
|
|
Commit messages must follow this scheme:
|
|
|
|
```
|
|
TYPE(Scope): Summary
|
|
|
|
Message Body
|
|
|
|
Footer
|
|
```
|
|
|
|
The blank lines in between are mandatory. A commit **must** include a `TYPE` and a `Summary` and **may**
|
|
additionally contain any of the other components listed here.
|
|
|
|
|
|
## Subject line
|
|
|
|
The first line ("Subject line") should not exceed 50-70 characters. This is what gets displayed on GitHub at first glance, so it
|
|
should contain the most important information. In order for it to be as short and precise as possible, there is the `TYPE` and
|
|
optionally a `Scope`. With these it should already be clear what this commit is about in general. The short `Summary` should
|
|
then include further information that is important to understand the general idea of this commit at a glance.
|
|
|
|
|
|
### TYPE
|
|
|
|
The `TYPE` is one of the following:
|
|
|
|
| **TYPE** | **Description** | **Example** |
|
|
| -------- | --------------- | ----------- |
|
|
| BREAK | A breaking change - not backwards-compatible | A change in protocol (e.g. change UDP message format) |
|
|
| FEAT | Introduction of a new feature (or extension of an existing one) | |
|
|
| FIX | A bug fix | |
|
|
| FORMAT | Change of formatting - does not influence how the code works | Change indentation of a line; Add braces around `if` body |
|
|
| DOCS | Changes to the documentation (either in-source or out-of-source) | Add a Doxygen comment to a function |
|
|
| TEST | Adds, changes or removes a test-case | |
|
|
| MAINT | Maintenance - Change of non-code files | Make changes to `.plist` or `.rc` files |
|
|
| CI | Changed something for the CI (continuous integration) | Update TravisCI to use newer ubuntu version |
|
|
| REFAC | Code refactoring | Rename variable `x` to `y` |
|
|
| BUILD | Changes related to the build process / buildsystem | Fix cmake script |
|
|
| TRANSLATION | Translation updates and changes | Update translation files |
|
|
| CHANGE | Something was changed without falling into existing categories | Changed the default of a setting |
|
|
| REVERT | A previous commit had to be reverted because e.g. it was buggy | - |
|
|
|
|
The `TYPE` has to be in **all-uppercase** in order for it to stand out.
|
|
|
|
If you feel like you need to use 2 or more types for a single commit but *can't split it* into multiple commits, you can
|
|
combine types with `/`: `FEAT/CI: <Summary>`
|
|
|
|
|
|
### Scope
|
|
|
|
What area is the change about. For now we don't have fixed scope keywords. A scope could be something like `ui`, `client`,
|
|
`server`, `ice`, ...
|
|
|
|
|
|
### Summary
|
|
|
|
The `Summary` is the heart of the subject line. It should contain a **very brief** summary of what you did in that commit.
|
|
In order to make this as short as possible, you may use grammatically incorrect sentences
|
|
("Add ability" instead of "add the ability").
|
|
|
|
In general the `Summary` should answer the question "Applying this commit will ..." where "..." is your `Summary`.
|
|
|
|
If your `Summary` contains "and", you should probably split your commit up.
|
|
|
|
Note: Issue references (such as #2305) **must not** be used in the `Summary`!
|
|
|
|
|
|
## Message Body
|
|
|
|
Here you give more details about the commit. Why is it necessary and what are the details of the change. You can use
|
|
multiple paragraphs for this and be as verbose as you want.
|
|
|
|
The `Message Body` should reference issues that are related to this change, but also provide a short summary of what that
|
|
issue is about (so that it can be understood without having to open that issue).
|
|
|
|
The `Message Body` should contain enough information for someone to be able to look at this commit at some point in the
|
|
future and know exactly what it does and why it was needed.
|
|
|
|
|
|
## Footer
|
|
|
|
The `Footer` contains a list of issue references prefixed by a keyword like `Closes`, `Fixes` or `Implements`.
|
|
|
|
Each reference should be on its own line:
|
|
|
|
```
|
|
Implements #1234
|
|
Closes #2215
|
|
```
|
|
|
|
Additionally the `Footer` may contain another paragraph indicating that a given commit was co-authored by other people.
|
|
Each co-author should be listed in a new line like so:
|
|
|
|
```
|
|
Co-Authored-By: Author name <author@example.com>
|
|
Co-Authored-By: Other author <other@example.com>
|
|
```
|
|
|
|
|
|
## References
|
|
|
|
We have used the term "reference" a few times in these guidelines. A *reference* has the form `#<ID>` where `<ID>` is the
|
|
ID GitHub assigns to the respective issue or PullRequest (it's the number that is displayed next to the title). You'll
|
|
notice that these references are actually turned into a link when viewing the commit message on GitHub. This is done
|
|
automatically by GitHub. You don't have to use a link in your commit message. In fact you *should not* use a link for
|
|
this purpose as this is just unnecessarily verbose and makes it hard to read the commit message outside of GitHub.
|
|
|
|
|
|
## Examples
|
|
|
|
```
|
|
FEAT(client): Add possibility to change username
|
|
|
|
Co-Authored-by: Gina Taylor <g.taylor@myspace.com>
|
|
```
|
|
```
|
|
FEAT(client): Add possibility to change username
|
|
|
|
As requested in #1234 this commit implements the ability to change your
|
|
username while being connected to a server.
|
|
|
|
For that X and Y had to be implemented.
|
|
|
|
The change now works by sending a XYZ message to the server with the "foo"
|
|
and "bar" fields set.
|
|
|
|
Implements #1234
|
|
```
|
|
```
|
|
FIX(client): Crash when loading settings
|
|
```
|
|
```
|
|
MAINT: Add XY to README
|
|
```
|
|
|
|
-----
|
|
|
|
This guide was inspired by https://github.com/bluejava/git-commit-guide
|
|
|