@@ -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
3983Download from [ the CI server] ( https://ci.fredboat.com/viewLog.html?buildId=lastSuccessful&buildTypeId=Lavalink_Build&tab=artifacts&guest=1 )
0 commit comments