Skip to content

Commit 23dbbc6

Browse files
author
Kot
authored
fix conflicts
1 parent e648e7f commit 23dbbc6

File tree

1 file changed

+53
-9
lines changed

1 file changed

+53
-9
lines changed

README.md

Lines changed: 53 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,68 @@ Being used in production by FredBoat, Dyno, Rythm, LewdBot, and more.
1616
* REST API for resolving lavaplayer tracks (used for non-JVM clients)
1717
* Statistics (good for load balancing)
1818
* Basic authentication
19+
* Prometheus metrics
20+
* Docker images
21+
22+
## Changelog
23+
24+
Please see [here](CHANGELOG.md)
25+
26+
## Versioning policy
27+
28+
The public api ("api" in a very broad sense) of Lavalink can be categorized into two main domains:
29+
- **Client Domain:** The api exposed to clients, consisting of both the websocket protocol, and any public http endpoints
30+
- **Server Domain:** The server application with its runtime environment, its configuration, etc.
31+
32+
Changes that might be breaking to one domain need not be breaking to the other.
33+
Examples:
34+
- Removing an endpoint. This is a breaking change for the client domain, but is
35+
not a breaking change for running the server itself.
36+
- Upgrading the minimum Java version: This is a breaking change for the server domain,
37+
but client implementations couldn't care less about it.
38+
39+
Given the above, the following versioning pattern lends itself well to the Lavalink project:
40+
41+
_**api.major.minor.patch**_
42+
43+
- **Api**: Bumped when breaking changes are comitted to the client domain of Lavalink
44+
Examples: Removing an endpoint, altering output of an endpoint in a non backwards compatible manner
45+
- **Major**: Bumped when breaking changes are comitted to the Lavalink server domain
46+
Examples: Bumping the required Java version, altering the configuration in a non backwards compatible manner
47+
- **Minor**: New features in any domain
48+
Examples: New optional endpoint or op code, additional configuration options, change of large subsystems or dependencies
49+
- **Patch**: Bug fixes in any domain
50+
Examples: Fixing a race condition, fixing unexpected exceptions, fixing output that is not according to specs, etc.
51+
52+
While major, minor and patch will do a best effort to adhere to [Semantic Versioning](https://semver.org/),
53+
prepending it with an additional api version makes life easier for developers of client implementations
54+
in two ways: It is a clear way for the Lavalink project to communicate the actually relevant breaking changes
55+
to client developers, and in turn, client developers can use the api version to clearly communicate to their
56+
users about the compatibility of their clients to the Lavalink server.
57+
1958

2059
## Client libraries:
21-
### Supports 2.x:
22-
* [JDA client](https://github.com/Frederikam/Lavalink/tree/master/LavalinkClient) ([JDA](https://github.com/DV8FromTheWorld/JDA), Java)
60+
### Supports 3.x and older:
61+
* [Lavalink-Client](https://github.com/FredBoat/Lavalink-Client) (JDA or generic, Java)
2362
* [LavaClient](https://github.com/SamOphis/LavaClient) (Java)
24-
* [Magma](https://github.com/initzx/magma/) ([discord.py](https://github.com/Rapptz/discord.py), Python)
25-
* [Lavalink.py](https://github.com/Devoxin/Lavalink.py) ([discord.py](https://github.com/Rapptz/discord.py), Python)
26-
* [pylava](https://github.com/Pandentia/pylava) ([discord.py](https://github.com/Rapptz/discord.py), Python)
63+
* [Lavalink.py](https://github.com/Devoxin/Lavalink.py) (discord.py, Python)
64+
* [pylava](https://github.com/Pandentia/pylava) (discord.py, Python)
2765
* [SandySounds](https://github.com/MrJohnCoder/SandySounds) (JavaScript)
2866
* [eris-lavalink](https://github.com/briantanner/eris-lavalink) ([eris](https://github.com/abalabahaha/eris), JavaScript)
2967
* [discord.js-lavalink](https://github.com/MrJacz/discord.js-lavalink/) ([discord.js](https://github.com/discordjs/discord.js), JavaScript)
3068
* [SharpLink](https://github.com/Devoxin/SharpLink) ([Discord.Net](https://github.com/RogueException/Discord.Net), .NET)
69+
* [Victoria](https://github.com/Yucked/Bot.NET/tree/master/Victoria) ([Discord.NET](https://github.com/RogueException/Discord.Net), .NET)
70+
* [Lavalink.NET](https://github.com/Dev-Yukine/Lavalink.NET) (.NET)
71+
* [DSharpPlus.Lavalink](https://github.com/DSharpPlus/DSharpPlus/tree/master/DSharpPlus.Lavalink) ([DSharpPlus](https://github.com/DSharpPlus/DSharpPlus/), .NET)
72+
* [Luna](https://github.com/CharlotteDunois/Luna) ([Yasmin](https://github.com/CharlotteDunois/Yasmin) or generic, PHP)
73+
* [gavalink](https://github.com/foxbot/gavalink) (Go)
74+
* [Magma](https://github.com/initzx/magma/) (discord.py, Python)
3175
* Or [create your own](https://github.com/Frederikam/Lavalink/blob/master/IMPLEMENTATION.md)
3276

33-
### Supports 1.x:
34-
* [lavalink.js](https://github.com/briantanner/lavalink.js) ([discord.js](https://github.com/discordjs/discord.js), JavaScript)
35-
36-
Outdated as of January 29 2018.
77+
### Supports 2.x:
78+
* [eris-lavalink](https://github.com/briantanner/eris-lavalink) (Eris, JavaScript)
79+
* [discord.js-lavalink](https://github.com/MrJacz/discord.js-lavalink/) (Discord.js, JavaScript)
80+
* Or [create your own](https://github.com/Frederikam/Lavalink/blob/master/IMPLEMENTATION.md)
3781

3882
## Server configuration
3983
Download from [the CI server](https://ci.fredboat.com/viewLog.html?buildId=lastSuccessful&buildTypeId=Lavalink_Build&tab=artifacts&guest=1)

0 commit comments

Comments
 (0)