Compare commits

...

No commits in common. "master" and "public" have entirely different histories.

40 changed files with 1377 additions and 5410 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
/public/

87
2021-08-07/index.html Normal file
View File

@ -0,0 +1,87 @@
<!DOCTYPE html>
<!-- SPDX-License-Identifier: CC0-1.0 -->
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>LibreGaming</title>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<main class="container">
<!-- SPDX-License-Identifier: CC0-1.0 -->
<h1 id="libre-gaming-meeting-minutes-1">Libre Gaming meeting minutes #1</h1>
<h2 id="attending">Attending</h2>
<p>hribhrib, TtotheORY, emorrp1, Rampoina, infrared, seabass, f-a, poVoq, freem, Felix, Myrrdin, pkill9, franzo2, ericxdu, tofu</p>
<h2 id="agenda">Agenda</h2>
<p>Get to know people and their background
This meetings should be for: Setting a deadline for decisions; talking about the topics that came up; setting future goals.
I think for opensource-focused communities like this it would be great to have like a &quot;council&quot; of people who WANT to take responsablities and make decisions BASED on the discussion of the community.
What are the goals? What problems are we solving? What is Libre Gaming not about? What do we want to do differently this time around?
Mechanism to send money around to share small one-off or ongoing costs. Currency?
Writing content
Improving the matchmaking bot - iterate on the current one, or write into a bot framework?
LibreGames launcher?</p>
<h3 id="what-is-libre-gaming-about">What is Libre Gaming about</h3>
<p>Development
Multiplayer games?
Discussing singleplayer games?
Bringing together developers and play-testers
Highlighting Libre games to play with
Making it easier to people to play the games (Launcher / auto-updater)?
GameDev/GameTest, PlayTogether, Communities, Games, Projects</p>
<h3 id="matrix-xmpp">Matrix, XMPP</h3>
<p>New user familiarity (emorrp1: IRC and XMPP hard for new users, povoq; disagreed)
Large public rooms
Guest access
Matrix has benefit of nested spaces, bridging and rich content
recommend tchncs.de if you have no account yet
hribhrib would delete, poVoq noticed people use IRC
TBD
TBD Get rid of this horrible Matrix stuff :p</p>
<h3 id="working-groups-projects">Working Groups / Projects</h3>
<ul>
<li>not so much setting up and organizing projects, but providing infra as needed and raising awareness</li>
<li>things like libre overlays, launcher, lobby, libraries/general code sharing, achievements etc</li>
<li>drive adoption of projects across games</li>
</ul>
<h3 id="domain-name">Domain Name</h3>
<ul>
<li>libregaming.org - emorrp1</li>
<li>post list of people and email addresses to create git accounts for</li>
<li>domain points to various services hosted by various people</li>
</ul>
<h2 id="any-other-business">Any Other Business</h2>
<p>Game server hosting?
Tutorials for easy game server hosting from home or a VPS?
Matchmaking, organized tournaments?
Host a reddit alternative? https://join-lemmy.org ? teddit.net (only a frotend for reddit)
Project room to highlight gaming projects by members inside libregaming. Project owners could benefit from call-for-help announcements, where advertising for volunteers/job positions is possible. For example, Derby Game by Open source_gaming is looking for an environment designer.</p>
<h2 id="actions">Actions</h2>
<ul>
<li>Snatch «libregaming.org»</li>
<li>Buyer shares IBAN/paypal to get some of it back (accounting?)</li>
<li>Website repo at https://git.hribhrib.at/LibreGaming/libregaming-website</li>
</ul>
<h2 id="comments">Comments</h2>
<ul>
<li>naming: libregaming.org will do</li>
<li>emorrp1: we need to decide what we want to be. There are some internet spots for linux gaming, but <em>not</em> for libregaming (making people aware of librgamenight etc.).</li>
<li>poVoq: libregamenight and friends seems multiplayer focused. freegamedev idea was: bring devs and tester together, <em>but</em> mostly <em>single player</em> oriented in praxis. Another org could focus on multi.</li>
<li>infrared: LGN is not just multiplayer, there was SP discussion too (strategies, etc. see Mindustry). What has a legacy of LGN: some doocracy. the line between dev and player nowadays is blurred a lot. Disctinctions less important at the end.</li>
<li>rampoina: basic idea. We like libregames and we would like more people to play it. PEople to find it and play it in a neat way. evangelizing is not great - inform people of advantages of libre and let them decide for themselves (infrred: laid-back advocacy)</li>
<li>emorrp1: a curated list (good games! not just every game under the sun) is paramount, game ratings, reviews</li>
<li>Chris L: resources for hosting/setting up (libregamenight once had pages that detailed version to be played, how to compile, how much tutorial is needed to play etc)</li>
<li>infrred: not auto-update but version matching between people wanting to play together</li>
<li>Libre tabletop/card/board games very welcome!</li>
<li>Clear licensing upfront for web-content (CC-0, CC-by, CC-by-SA)</li>
<li>southerntofu: noting strong dislike for domain name registrars</li>
</ul>
</main>
</body>
</html>

98
2022-01-30/index.html Normal file
View File

@ -0,0 +1,98 @@
<!DOCTYPE html>
<!-- SPDX-License-Identifier: CC0-1.0 -->
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>LibreGaming</title>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<main class="container">
<!-- SPDX-License-Identifier: CC0-1.0 -->
<h1 id="libre-gaming-meeting-minutes-2">Libre Gaming meeting minutes #2</h1>
<h2 id="attending">Attending</h2>
<p>artchad, Cesar, DeathByDenim, emorrp1, Felix, Livio, poVoq, SeanCJ, sm2n, ThinkSome, vvbudh, franzo, OptimusDU, spongy, Rampoina, freem, infrared</p>
<h2 id="agenda">Agenda</h2>
<ul>
<li>about libre games and libregaming.org
<ul>
<li>organisation formation</li>
<li>assets, CC, engine, NC, opengameart.org</li>
</ul>
</li>
<li>round of introductions</li>
<li>General review of last 6 months, what is/isnt working for libregaming.org?
<ul>
<li>subdomains (manual dynamic dns)</li>
<li>website - have content, server, need CMS / SSG
<ul>
<li>spongy working on &quot;design language&quot; documentation</li>
<li>sm2n interested in doing the SSG</li>
<li>co-ordination channel? - #libregaming-workshop</li>
</ul>
</li>
<li>port forwarding/relay solution?
<ul>
<li>TCP solved - send emorrp1 your ssh-ed25519 key</li>
<li>UDP difficult, yggdrasil, miredo, <a href="https://leagueh.xyz/en/cafe-babe.html">ipv6 vlan</a>, <a href="https://github.com/spring/relayhost">spring relayhost</a></li>
<li>Not aware of any UDP solution that only needs the host to manage the setup</li>
</ul>
</li>
</ul>
</li>
<li>Chat channels: privacy, moderation, working groups, on-topic
<ul>
<li>Organisational space?</li>
<li>Bridging #chamber to IRC? Or another channel for high volume website chat?</li>
<li>Official Mumble server with <a href="https://github.com/Johni0702/mumble-web">mumble-web</a> interface (and maybe <a href="https://github.com/Stieneee/mumble-discord-bridge">Discord voice bridge</a>)?</li>
<li>idea to have game-specific contacts to cross communities</li>
</ul>
</li>
<li>Service (de)centralisation
<ul>
<li>FreeGamedev.net can host stuff, but the bus factor is currently more or less 1</li>
</ul>
</li>
<li>provide a place and encouragement for devs to interact (freegamedev.net?)
<ul>
<li>A more open social media forum (Lemmy?) could be good for devs to create communities easily?</li>
</ul>
</li>
<li>general goals and level of ambition, as well as how “growth” oriented/cohesive
<ul>
<li>Keep it small intentionally?</li>
<li>Community building! Promoting niche games?</li>
<li>Organized &quot;mobs&quot; to promote libregaming (with devs?), similar to Gaming on Linux?</li>
<li>Long term goal: some sort of Steam like launcher &amp; integrated game ratings + community?</li>
</ul>
</li>
<li>collaborative focus day with a shared todo list
<ul>
<li>Writing on tutorials? Outreach to specific communties to &quot;commission&quot; contributions?</li>
<li>hackathon kind of thing? What kind of topics?</li>
</ul>
</li>
<li>cross-cutting concerns: matchmaking, netdev, community management, servers, ratings</li>
</ul>
<h2 id="any-other-business">Any Other Business</h2>
<ul>
<li>play 0ad, themanaworld, mindustry</li>
<li>try to organize the next meeting before end of March. Maybe make this a monthly or at least quarterly thing?</li>
<li>we did <em>not</em> discuss moderation in the end</li>
</ul>
<h2 id="actions">Actions</h2>
<ul>
<li>emorrp1 to fix dangling rooms and bridge discussion for website</li>
<li>hribhrib to grant some git access</li>
<li>poVoq to arrange next meeting unless someone else does it first</li>
<li>sm2n to work on website</li>
</ul>
</main>
</body>
</html>

3
404.html Normal file
View File

@ -0,0 +1,3 @@
<!doctype html>
<title>404 Not Found</title>
<h1>404 Not Found</h1>

View File

@ -1,19 +0,0 @@
<!-- SPDX-License-Identifier: CC0-1.0 -->
# LibreGaming website
Welcome to the LibreGaming website repository!
## How to contribute
*libregaming.org* is built with [zola][1]. Please remember to include
a licence header (e.g. CC0-1.0). Happy writing!
You can build the site with `zola build`, which puts the output in
`public/`, or run `zola serve` for previewing.
[1]: https://www.getzola.org/
## Deployment
The `master-branch` will get deployed every full hour.

105
chat-with-us/index.html Normal file
View File

@ -0,0 +1,105 @@
<!DOCTYPE html>
<!-- SPDX-License-Identifier: CC0-1.0 -->
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>LibreGaming</title>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<main class="container">
<!-- SPDX-License-Identifier: CC0-1.0 -->
<p><a href="https://libregaming.org/">About us</a>. (<abbr title="Work in Progress">WiP</abbr>)</p>
<h1 id="chat-with-us">Chat with us!</h1>
<p>We try our best to let people use their favorite chat client to join us.
Currently, we use native <a href="https://matrix.org/">Matrix</a> rooms which are also accessible via <a href="https://joinjabber.org/">Jabber/XMPP</a> and <a href="https://en.wikipedia.org/wiki/Internet_Relay_Chat">IRC</a>.
For pre-existing projects, their official chatrooms are bridged where possible, even if they're on the non-libre <a href="https://drewdevault.com/2021/12/28/Dont-use-Discord-for-FOSS.html">Discord</a> platform.
New projects should take advantage of <a href="https://freegamedev.net/d/153-what-can-the-freegamedev-chat-do-for-me">FreeGameDev</a>'s cross-platform integration.</p>
<h2 id="official-chatrooms">Official chatrooms</h2>
<ul>
<li><em>matchmaking</em>: matchmaking service/bot to find people to play with
<a href="https://matrix.to/#/#libregaming-matchmaking:freedombox.emorrp1.name">matrix</a>
<a href="xmpp:%23libregaming-matchmaking%23freedombox.emorrp1.name@matrix.org?join">xmpp</a>
<a href="ircs://irc.libera.chat/#libregaming-matchmaking">irc</a>
<a href="https://view.matrix.org/room/!CUNOtCEVFEdXaOUjXL:matrix.org/">archive</a></li>
<li><em>organization</em>: meta channel for discussing the LibreGaming.org project itself
<a href="https://matrix.to/#/#libregaming-organization:freedombox.emorrp1.name">matrix</a>
<a href="xmpp:%23libregaming-organization%23freedombox.emorrp1.name@matrix.org?join">xmpp</a>
<a href="ircs://irc.libera.chat/#libregaming-organization">irc</a>
<a href="https://view.matrix.org/room/!qLhNfILESSCaasbRWB:freedombox.emorrp1.name/">archive</a></li>
<li><em>offtopic</em>: for discussions with libregaming folks about everything except libregaming
<a href="https://matrix.to/#/#libregaming-offtopic:freedombox.emorrp1.name">matrix</a>
<a href="xmpp:%23libregaming-offtopic%23freedombox.emorrp1.name@matrix.org?join">xmpp</a>
<a href="ircs://irc.libera.chat/#libregaming-offtopic">irc</a>
<a href="https://view.matrix.org/room/!csFYqQwEzkhBXOMzLF:matrix.org/">archive</a></li>
<li><em>workshop</em>: for bursts of high-volume organisational activity, when a topic gets too long for the main channel
<a href="https://matrix.to/#/#libregaming-workshop:freedombox.emorrp1.name">matrix</a>
<a href="xmpp:%23libregaming-workshop%23freedombox.emorrp1.name@matrix.org?join">xmpp</a>
<a href="ircs://irc.libera.chat/#libregaming-workshop">irc</a>
<a href="https://view.matrix.org/room/!uagwTOyQbbWrZgwyPO:freedombox.emorrp1.name/">archive</a></li>
</ul>
<p>To join one such room called <code>ROOM</code>, configure your client according to the instructions below.</p>
<h2 id="communities">Communities</h2>
<p>For on-topic chat about Libre Gaming, these are the active communities we are aware of.</p>
<ul>
<li><a href="https://freegamedev.net">FreeGameDev.net</a>: bring players and developers together like the old #freegamer on Freenode
<a href="https://matrix.to/#/#general:irc.freegamedev.net">matrix</a>
<a href="xmpp:%23general@irc.freegamedev.net?join">xmpp</a>
<a href="ircs://irc.freegamedev.net/#general">irc</a>
<a href="https://view.matrix.org/room/!xo5JxKMrkIWOPclbmH:irc.freegamedev.net/">archive</a></li>
<li><a href="https://lgn.xwx.moe/">Libre Game Night</a>: play and discuss libre games such as Hedgewars, Mindustry, Freedoom
<a href="https://matrix.to/#/#libregamenight:libera.chat">matrix</a>
<a href="xmpp:%23libregamenight%23libera.chat@matrix.org?join">xmpp</a>
<a href="ircs://irc.libera.chat/#libregamenight">irc</a></li>
<li><a href="https://onfoss.hribhrib.at/">onFOSS-LAN</a>: online LAN-Party event day
<a href="https://matrix.to/#/#xmpp_onfoss_conference.hribhrib.at:matrix.org">matrix</a>
<a href="xmpp:onfoss@conference.hribhrib.at?join">xmpp</a></li>
<li><a href="https://twitch.tv/opensource_gaming">opensource_gaming</a>: twitch channel to bring attention to a lot of great Open Source projects
<a href="https://matrix.to/#/#generalosg:matrix.org">matrix</a>
<a href="xmpp:%23generalosg%23matrix.org@matrix.org?join">xmpp</a></li>
<li><em>SMAC</em>: чат без смысла и цели
<a href="https://matrix.to/#/#xmpp_smac_conference.bitcheese.net:matrix.org">matrix</a>
<a href="xmpp:smac@conference.bitcheese.net?join">xmpp</a></li>
<li><em>Free, Libre, and Open Source Gaming</em>
<a href="https://matrix.to/#/#libregaming:matrix.org">matrix</a>
<a href="xmpp:%23libregaming%23matrix.org@matrix.org?join">xmpp</a></li>
</ul>
<h2 id="matrix">Matrix</h2>
<p>Room name: <code>#libregaming-ROOM:freedombox.emorrp1.name</code></p>
<ul>
<li><a href="https://tchncs.de/matrix">Create an account</a>, or use any other Matrix server</li>
<li><a href="https://matrix.org/docs/projects/try-matrix-now/">Choose a client</a></li>
<li><a href="https://matrix.to/#/#libregaming-space:matrix.org">Libre Gaming space</a></li>
<li>Subspaces: <a href="https://matrix.to/#/#libregaming-communities:freedombox.emorrp1.name">Communities</a>, <a href="https://matrix.to/#/#libregaming-games:freedombox.emorrp1.name">Games</a>, <a href="https://matrix.to/#/#libregaming-engines:freedombox.emorrp1.name">Engines</a>, <a href="https://matrix.to/#/#libregaming-tools:freedombox.emorrp1.name">Tools</a>, <a href="https://matrix.to/#/#libregaming-historical:freedombox.emorrp1.name">Historical</a></li>
</ul>
<h2 id="jabber-xmpp">Jabber/XMPP</h2>
<p>Room name: <code>#libregaming-ROOM#freedombox.emorrp1.name@matrix.org</code></p>
<ul>
<li><a href="https://tchncs.de/xmpp">Create an account</a>, or use any other Jabber/XMPP server</li>
<li><a href="https://joinjabber.org/">Choose a client</a></li>
<li>Bridged with <a href="https://github.com/matrix-org/matrix-bifrost">matrix-bifrost</a>
(<a href="https://github.com/matrix-org/matrix-bifrost/wiki/Address-syntax">Usage details</a>)</li>
</ul>
<h2 id="irc">IRC</h2>
<p>Room name: <code>#libregaming-ROOM</code> on <code>irc.libera.chat</code></p>
<ul>
<li><a href="https://libera.chat/guides/registration">Create an account</a>, or connect as a guest user</li>
<li><a href="https://libera.chat/guides/clients">Choose a client</a></li>
<li>Various features are not supported by the IRC protocol: for a better user experience, consider using a Matrix or Jabber/XMPP client instead</li>
<li>Bridged with <a href="https://github.com/matrix-org/matrix-appservice-irc">matrix-appservice-irc</a>
(<a href="https://matrix-org.github.io/matrix-appservice-irc/latest/usage.html">Usage details</a>)<details><summary>Settings</summary>
Room -> Settings -> Advanced -> Open Devtools -> Send Custom Event -> Event ->
Event Type: `org.matrix.appservice-irc.config`; State Key: ``;
Content: `{ "lineLimit": 9, "allowUnconnectedMatrixUsers": true }`
</details>
</li>
</ul>
</main>
</body>
</html>

View File

@ -1,19 +0,0 @@
# SPDX-License-Identifier: CC0-1.0
# The URL the site will be built for
base_url = "https://libregaming.org"
title = "LibreGaming"
# Whether to automatically compile all Sass files in the sass directory
compile_sass = true
# Whether to build a search index to be used later on by a JavaScript library
build_search_index = false
[markdown]
# Whether to do syntax highlighting
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
highlight_code = false
[extra]
# Put all your custom variables here

View File

@ -1,82 +0,0 @@
+++
title = "Meeting Minutes #1"
+++
<!-- SPDX-License-Identifier: CC0-1.0 -->
# Libre Gaming meeting minutes #1
## Attending
hribhrib, TtotheORY, emorrp1, Rampoina, infrared, seabass, f-a, poVoq, freem, Felix, Myrrdin, pkill9, franzo2, ericxdu, tofu
## Agenda
Get to know people and their background
This meetings should be for: Setting a deadline for decisions; talking about the topics that came up; setting future goals.
I think for opensource-focused communities like this it would be great to have like a "council" of people who WANT to take responsablities and make decisions BASED on the discussion of the community.
What are the goals? What problems are we solving? What is Libre Gaming not about? What do we want to do differently this time around?
Mechanism to send money around to share small one-off or ongoing costs. Currency?
Writing content
Improving the matchmaking bot - iterate on the current one, or write into a bot framework?
LibreGames launcher?
### What is Libre Gaming about
Development
Multiplayer games?
Discussing singleplayer games?
Bringing together developers and play-testers
Highlighting Libre games to play with
Making it easier to people to play the games (Launcher / auto-updater)?
GameDev/GameTest, PlayTogether, Communities, Games, Projects
### Matrix, XMPP
New user familiarity (emorrp1: IRC and XMPP hard for new users, povoq; disagreed)
Large public rooms
Guest access
Matrix has benefit of nested spaces, bridging and rich content
recommend tchncs.de if you have no account yet
hribhrib would delete, poVoq noticed people use IRC
TBD
TBD Get rid of this horrible Matrix stuff :p
### Working Groups / Projects
* not so much setting up and organizing projects, but providing infra as needed and raising awareness
* things like libre overlays, launcher, lobby, libraries/general code sharing, achievements etc
* drive adoption of projects across games
### Domain Name
* libregaming.org - emorrp1
* post list of people and email addresses to create git accounts for
* domain points to various services hosted by various people
## Any Other Business
Game server hosting?
Tutorials for easy game server hosting from home or a VPS?
Matchmaking, organized tournaments?
Host a reddit alternative? https://join-lemmy.org ? teddit.net (only a frotend for reddit)
Project room to highlight gaming projects by members inside libregaming. Project owners could benefit from call-for-help announcements, where advertising for volunteers/job positions is possible. For example, Derby Game by Open source_gaming is looking for an environment designer.
## Actions
- Snatch «libregaming.org»
- Buyer shares IBAN/paypal to get some of it back (accounting?)
- Website repo at https://git.hribhrib.at/LibreGaming/libregaming-website
## Comments
- naming: libregaming.org will do
- emorrp1: we need to decide what we want to be. There are some internet spots for linux gaming, but *not* for libregaming (making people aware of librgamenight etc.).
- poVoq: libregamenight and friends seems multiplayer focused. freegamedev idea was: bring devs and tester together, *but* mostly *single player* oriented in praxis. Another org could focus on multi.
- infrared: LGN is not just multiplayer, there was SP discussion too (strategies, etc. see Mindustry). What has a legacy of LGN: some doocracy. the line between dev and player nowadays is blurred a lot. Disctinctions less important at the end.
- rampoina: basic idea. We like libregames and we would like more people to play it. PEople to find it and play it in a neat way. evangelizing is not great - inform people of advantages of libre and let them decide for themselves (infrred: laid-back advocacy)
- emorrp1: a curated list (good games! not just every game under the sun) is paramount, game ratings, reviews
- Chris L: resources for hosting/setting up (libregamenight once had pages that detailed version to be played, how to compile, how much tutorial is needed to play etc)
- infrred: not auto-update but version matching between people wanting to play together
- Libre tabletop/card/board games very welcome!
- Clear licensing upfront for web-content (CC-0, CC-by, CC-by-SA)
- southerntofu: noting strong dislike for domain name registrars

View File

@ -1,63 +0,0 @@
+++
title = "Meeting Minutes #2"
+++
<!-- SPDX-License-Identifier: CC0-1.0 -->
# Libre Gaming meeting minutes #2
## Attending
artchad, Cesar, DeathByDenim, emorrp1, Felix, Livio, poVoq, SeanCJ, sm2n, ThinkSome, vvbudh, franzo, OptimusDU, spongy, Rampoina, freem, infrared
## Agenda
* about libre games and libregaming.org
* organisation formation
* assets, CC, engine, NC, opengameart.org
* round of introductions
* General review of last 6 months, what is/isnt working for libregaming.org?
* subdomains (manual dynamic dns)
* website - have content, server, need CMS / SSG
* spongy working on "design language" documentation
* sm2n interested in doing the SSG
* co-ordination channel? - #libregaming-workshop
* port forwarding/relay solution?
* TCP solved - send emorrp1 your ssh-ed25519 key
* UDP difficult, yggdrasil, miredo, [ipv6 vlan], [spring relayhost]
* Not aware of any UDP solution that only needs the host to manage the setup
* Chat channels: privacy, moderation, working groups, on-topic
* Organisational space?
* Bridging #chamber to IRC? Or another channel for high volume website chat?
* Official Mumble server with [mumble-web] interface (and maybe [Discord voice bridge])?
* idea to have game-specific contacts to cross communities
* Service (de)centralisation
* FreeGamedev.net can host stuff, but the bus factor is currently more or less 1
* provide a place and encouragement for devs to interact (freegamedev.net?)
* A more open social media forum (Lemmy?) could be good for devs to create communities easily?
* general goals and level of ambition, as well as how “growth” oriented/cohesive
* Keep it small intentionally?
* Community building! Promoting niche games?
* Organized "mobs" to promote libregaming (with devs?), similar to Gaming on Linux?
* Long term goal: some sort of Steam like launcher & integrated game ratings + community?
* collaborative focus day with a shared todo list
* Writing on tutorials? Outreach to specific communties to "commission" contributions?
* hackathon kind of thing? What kind of topics?
* cross-cutting concerns: matchmaking, netdev, community management, servers, ratings
[ipv6 vlan]: https://leagueh.xyz/en/cafe-babe.html
[spring relayhost]: https://github.com/spring/relayhost
[mumble-web]: https://github.com/Johni0702/mumble-web
[Discord voice bridge]: https://github.com/Stieneee/mumble-discord-bridge
## Any Other Business
* play 0ad, themanaworld, mindustry
* try to organize the next meeting before end of March. Maybe make this a monthly or at least quarterly thing?
* we did *not* discuss moderation in the end
## Actions
* emorrp1 to fix dangling rooms and bridge discussion for website
* hribhrib to grant some git access
* poVoq to arrange next meeting unless someone else does it first
* sm2n to work on website

View File

@ -1,95 +0,0 @@
+++
title = "Meeting Minutes #3"
+++
<!-- SPDX-License-Identifier: CC0-1.0 -->
# Libre Gaming meeting minutes #3
## Attending
Attending: emorrp1, hribhrib, seabass, ThinkSome, librebob, poVoq, Xilef
## Agenda
* Matchbot, which version?
* Andrews new version? Was just a quick fix?
* Hribhrib will try to host the Clojure version? Maybe convert into Matrix bot?
* Take up offer for free Lemmy hosting (one year limited)?
* communities.libregaming.org? Lemmy.libregaming.org discuss.libregaming.org? forum.libregaming.org?
* CNAME offer to trial before self-hosting, no .well-known (yet)
* do we even need our own instance? - could just have a community, or offer as a service for games
* does this federate with e.g. [https://lemmy.ml/c/opensourcegames](https://lemmy.ml/c/opensourcegames)
* if someone has an account on libregaming.org, they can subscribe to the lemmy.ml/c/opensourcegames
* crossposting to promote the existing community
* see also overlap with Okapi - fracturing?
* FGD currently has flarum
* Website status update (postponed, no-one working on it present)
* Affiliated communities update:
* onFOSS has had some independent work - will probably merge with LibreGaming, but TBD
* freegamedev - still separate, but happy to have lots of overlap, closer to opengameart.org
* libregamenight - is there actually any difference in membership? (seems to be the on-topic chat)
* LibreSpades and other asset liberation activities, status update - any role for libregaming.org?
* status: maintainer needed
* status: works without non-free assets
* needs: new models for player characters. Currently these are small red boxes floating about. This makes it hard to tell enemies/friendlies apart.
* needs: new models for weapons. Is playable without
* needs: new sounds/music
* look into this?: [https://github.com/xtreme8000/BetterSpades](https://github.com/xtreme8000/BetterSpades)
* has GPL3? assets, but needs licensing checking
* needs a flatpak submitted to flathub! ([https://github.com/xtreme8000/BetterSpades/pull/115)](https://github.com/xtreme8000/BetterSpades/pull/115))
* Top-N Most Important Projects
* we could list this to point people at high-value quick-wins for e.g. asset creation
* For assets, can make a Collection on opengameart, for needs-replacement stuff (think weblate but for game assets not translations)
* Status of non-free games in matchbot and #libregaming-matchmaking
* Remove them altogether?
* No thanks
* Anti-feature tagging and warnings? (specing bot)
* HIGHLY AGREEABLE, but needs work
* I'd just like to interject for a moment...
* Remove them if no action is being done on replacing non-free bits?
* maybe a bit more reasonable
* perhaps have a #libregaming-nonlibre?
* TBD: see action
* Re-hash what exactly is LibreGaming policy on levels of libre-ness of projects (i.e. antifeature labelling vs. discounting the project)
* Status update Okapi (ContentDB fork) (postponed - no Armen)
* Client integration with Arcadia etc? [https://tauri.studio/](https://tauri.studio/) (electron like) Client?
* would like this running, hosting needs python flask, is it good enough we can start having accounts?
* [https://games.armen138.com/](https://games.armen138.com/) (test instastance)
* Arcadia status update
* rewriting because python c/c++ bindings are hard, uses qml
* possible windows package repository?: [https://community.chocolatey.org/packages?q=SuperTuxKart](https://community.chocolatey.org/packages?q=SuperTuxKart)
* any Windows players anyway? onFOSS, Xonotic, Mindustry, Veloren, but they don't tend to be active in our dev sides - outreach to find someone willing
* 0install is kinda like AppImage
* some related projects to steal ideas from: [https://playnite.link/](https://playnite.link/) [https://luxtorpeda.gitlab.io/](https://luxtorpeda.gitlab.io/)
* don't want to host files, need to get them from somewhere - Okapi? (itch.io is non-free)
* productivity comes in cycles and arcadia development prone to long periods of inactivity
* Chat bridging status update (Veloren bridge by Timo currently down)
* Maybe try bridging through IRC? Freegamedev brdges.
* Matrix: Synapse vs Conduit, but if conduit bridging worked fine then Timo would probably do it
* SteamDeck and libregaming?
* find someone who actually has one
* "SteamDeck compatible" feature labelling on libre games (a la protondb)
* uses flatpak to distribute non-Steam software
* Discussion about a Code of Conduct (that was on the agenda for the last one but didn't happen, correct me if I'm wrong)
* not really discussed, don't really need one for now,
* Outreach/publicity
* fun memes like "don't use X, check out Y"
* "mum, I want minetest. We have minetest at home ... <shows minecraft> :("
* lean into the fact they're not going to be exact matches
* Why doesn't MarioKart let you play as Tux?
* /r/linuxmasterrace - /c/linuxmasterrace ?
* Next meeting could be in 1 month if someone steps forward - try and have it by July at the latest (no longer than 3 months away)
## Actions
* hribhrib to host clojure matchbot
* seabass to send hribhrib details of new matchmaking bot (Clojure version) for hosting
* poVoq to ask Lemmy devs for an instance on behalf of lemmy.libregaming.org
* emorrp1 to write out best understanding of ThinkSome's PoV, and consensus
* emorrp1 to raise issue and chase seabass for non-free tagging on matchbot
* poVoq+emorrp1 to fix #LibreGameNight to FGD bridging by going via Matrix rather than matterbridge
* librebob look into packagekit
* ThinkSome to document needed assets for LibreSpades for someone else to check if they're in BetterSpades
* emorrp1 to export minutes onto website

View File

@ -1,36 +0,0 @@
+++
title = "Libre Gaming - Main"
+++
<!-- SPDX-License-Identifier: CC0-1.0 -->
LibreGaming
===========
Who We Are
----------
LibreGaming is an organization of software freedom and gaming
enthusiasts who meet on the web to discuss and play computer games that
are **free/libre** and **open source software**. We focus on multiplayer games
that can be played over the Internet like
[*Xonotic*](https://xonotic.org/), [*The Battle for
Wesnoth*](http://www.wesnoth.org/),
[*Hedgewars*](https://www.hedgewars.org/),
[*OpenTTD*](https://www.openttd.org/), and more.
What To Do
----------
To join us for conversation and matchmaking, see our [contact
information](@/chat-with-us.md).
If you are new to libre gaming or are looking for game to play, visit
[LibreGameWiki](https://libregamewiki.org/). If you find something you
like, tell us about it!
We have written a small primer on [why you should be a libre
gamer](libre-games-primer.html) and a page on how to
[play libre games](play-libre-games).
We also have a detailed page [introducing our organization](intro).

View File

@ -1,131 +0,0 @@
+++
title = "Chat with us!"
+++
<!-- SPDX-License-Identifier: CC0-1.0 -->
[About us](@/_index.md). (<abbr title="Work in Progress">WiP</abbr>)
# Chat with us!
You can access LibreGaming chatrooms/server(s) from any of Matrix, XMPP, Libera.chat or FreeGameDev irc<br>
Official chatrooms summary *(Also available in the [LibreGaming Matrix Space](https://matrix.to/#/#libregaming-community:tchncs.de)):*
- **general:** chat about libre games, their development and philosophy
<nobr>
[matrix](https://matrix.to/#/#libregaming-general:tchncs.de)
[xmpp](https://xmpp.f-hub.org/#%23libregaming@irc.f-hub.org?join)
[libera-chat](ircs://irc.libera.chat/#libregamenight)
[fgd](ircs://irc.freegamedev.net/#libregaming)
[archive](https://view.matrix.org/room/!YBYGuZnidXkfegAxjg:freedombox.emorrp1.name/)
</nobr>
- **matchmaking:** matchmaking service/bot to find people to play with
<nobr>
[matrix](https://matrix.to/#/#libregaming-matchmaking:tchncs.de)
[xmpp](https://xmpp.f-hub.org/#%23matchmaking@irc.f-hub.org?join)
[libera-chat](ircs://irc.libera.chat/#libregaming-matchmaking)
[fgd](ircs://irc.freegamedev.net/#matchmaking)
[archive](https://view.matrix.org/room/!CUNOtCEVFEdXaOUjXL:matrix.org/)
</nobr>
- **offtopic:** for discussions with LibreGaming folks about everything except libregaming
<nobr>
[matrix](https://matrix.to/#/#libregaming-offtopic:tchncs.de)
[xmpp](https://xmpp.f-hub.org/#%23offtopic@irc.f-hub.org?join)
[libera-chat](ircs://irc.libera.chat/#libregaming-offtopic)
[fgd](ircs://irc.freegamedev.net/#offtopic)
[archive](https://view.matrix.org/room/!csFYqQwEzkhBXOMzLF:matrix.org/)
</nobr>
- **organization:** meta channel for discussing the LibreGaming.org project itself
<nobr>
[matrix](https://matrix.to/#/#libregaming-organization:tchncs.de)
[xmpp](https://xmpp.f-hub.org/#%23libregaming-org@irc.f-hub.org?join)
[libera-chat](ircs://irc.libera.chat/#libregaming-organization)
[fgd](ircs://irc.freegamedev.net/#libregaming-org)
[archive](https://view.matrix.org/room/!qLhNfILESSCaasbRWB:freedombox.emorrp1.name/)
</nobr>
<sup>*You may want to check the bottom of the page for more related communities such as [FreeGameDev] for FLOSS game development.*</sup>
---
## Matrix Space and Rooms
*For new Matrix users, you can [create an account here](https://tchncs.de/matrix) or on any [other Matrix server](https://servers.joinmatrix.org/) (then optionally [Install an App](https://matrix.org/ecosystem/clients/) to use instead of the website).*
- [LibreGaming Space](https://matrix.to/#/#libregaming-community:tchncs.de) *Note: you can also join the rooms individually and ignore the Space*
- [General](https://matrix.to/#/#libregaming-general:tchncs.de) (`#libregaming-general:tchncs.de`)
- [Matchmaking](https://matrix.to/#/#libregaming-matchmaking:tchncs.de) (`#libregaming-matchmaking:tchncs.de`)
- [Offtopic](https://matrix.to/#/#libregaming-offtopic:tchncs.de) (`#libregaming-offtopic:tchncs.de`)
- [Organization](https://matrix.to/#/#libregaming-organization:tchncs.de) (`#libregaming-organization:tchncs.de`)
- *You can also check the [Libre Gaming Universe](/space.html) Space for other related Matrix spaces and rooms*
---
## Jabber/XMPP Channels
*For new XMPP users, you can follow this link to [get started with XMPP](https://joinjabber.org/docs/)*
- [General](https://xmpp.f-hub.org/#%23libregaming@irc.f-hub.org?join) (`#libregaming@irc.f-hub.org`)
- [Matchmaking](https://xmpp.f-hub.org/#%23matchmaking@irc.f-hub.org?join) (`#matchmaking@irc.f-hub.org`)
- [Offtopic](https://xmpp.f-hub.org/#%23offtopic@irc.f-hub.org?join) (`#offtopic@irc.f-hub.org`)
- [Organization](https://xmpp.f-hub.org/#%23libregaming-org@irc.f-hub.org?join) (`#libregaming-org@irc.f-hub.org`)
---
## libera.chat IRC Channels
*For new users, you can [use libera.chat's webclient](https://web.libera.chat/?channel=#libregamenight) or pick and configure another [IRC client](https://libera.chat/guides/clients) then optionally [register on libera.chat](https://libera.chat/guides/registration)*
- [General](ircs://irc.libera.chat/#libregamenight) (`#libregamenight`)
- [Matchmaking](ircs://irc.libera.chat/#libregaming-matchmaking) (`#libregaming-matchmaking`)
- [Offtopic](ircs://irc.libera.chat/#libregaming-offtopic) (`#libregaming-offtopic`)
- [Organization](ircs://irc.libera.chat/#libregaming-organization) (`#libregaming-organization`)
---
## FreeGameDev (FGD) IRCv3 Channels
*For new users, you can [use FGD's webclient](https://irc.freegamedev.net/kiwiirc/#libregaming) or use your favorite IRC client and configure it to (address: irc.freegamedev.net, port: 6697 ,TLS only) and optionally [register on fgd](https://wiki.f-hub.org/books/accounts/page/irc-network-accounts)*
- [General](ircs://irc.freegamedev.net/#libregaming) (`#libregaming`)
- [Matchmaking](ircs://irc.freegamedev.net/#matchmaking) (`#matchmaking`)
- [Offtopic](ircs://irc.freegamedev.net/#offtopic) (`#offtopic`)
- [Organization](ircs://irc.freegamedev.net/#libregaming-org) (`#libregaming-org`)
<sub>*Fun fact: All rooms are bridged via [FreeGameDev IRC] using its [Matrix Gateway], [XMPP Gateway] and IRC bridge [(matterbridge)] for libera-chat.<br>
Official LibreGaming rooms will not be connected to discord for [numerous reasons].*</sub>
[Matrix Gateway]:https://wiki.f-hub.org/books/chat-network/page/gateways-for-xmpp-and-matrix#bkmrk-how-to-connect-from--1
[XMPP Gateway]: https://wiki.f-hub.org/books/chat-network/page/gateways-for-xmpp-and-matrix#bkmrk-how-to-connect-from-
[(matterbridge)]: https://wiki.f-hub.org/books/chat-network/page/bridges-to-other-chat-systems#bkmrk-matterbridge-bot-bri
[FreeGameDev IRC]: https://irc.freegamedev.net/
[numerous reasons]: https://drewdevault.com/2021/12/28/Dont-use-Discord-for-FOSS.html
[FreeGameDev]: https://freegamedev.net/
---
## Other communities and chatrooms
For on-topic chat about Libre Gaming, these are the active communities we are aware of.
- [FreeGameDev.net](https://freegamedev.net): bring players and developers together like the old #freegamer on Freenode
<nobr>
[matrix](https://matrix.f-hub.org/#/%23irc_%23general:matrix.f-hub.org)
[xmpp](https://xmpp.f-hub.org/#%23general@irc.f-hub.org?join)
[fgd](ircs://irc.freegamedev.net/#general)
[archive](https://matrix.f-hub.org/#/%23irc_%23general:matrix.f-hub.org)
</nobr>
- [onFOSS](https://onfoss.org/): an online LAN-Party-like event
<nobr>
[matrix](https://matrix.f-hub.org/#/%23irc_%23onfoss:matrix.f-hub.org)
[xmpp](https://xmpp.f-hub.org/#%23onfoss@irc.f-hub.org?join)
[fgd](ircs://irc.freegamedev.net/#onfoss)
</nobr>
- [opensource_gaming](https://video.hardlimit.com/c/opensource_gaming/videos): peertube livestreaming channel to bring attention to a lot of great Open Source projects
<nobr>
[matrix](https://matrix.to/#/#generalosg:matrix.org)
[xmpp](xmpp:%23generalosg%23matrix.org@aria-net.org?join)
</nobr>
- *SMAC*: чат без смысла и цели
<nobr>
[matrix](https://matrix.to/#/#xmpp_smac_conference.bitcheese.net:matrix.org)
[xmpp](xmpp:smac@conference.bitcheese.net?join)
</nobr>
- *Free, Libre, and Open Source Gaming*
<nobr>
[matrix](https://matrix.to/#/#libregaming:matrix.org)
[xmpp](xmpp:%23libregaming%23matrix.org@aria-net.org?join)
</nobr>
#
- We also maintain [Libre Gaming Universe](/space.html) Matrix Space which is a collection all other Libre Gaming related communities on Matrix that we are aware of

View File

@ -1,353 +0,0 @@
+++
title = "Libre Launchers"
+++
<!-- SPDX-License-Identifier: CC0-1.0 -->
# Libre launchers
This document is a brainstorming around FLOSS games launchers. The rationale is:
- The gaming world has switched to centralized, non-free gaming platforms with auto-updates and social features
- FLOSS games usually lack discoverability, updates, and social features
- Existing launchers are very resource-heavy
# Table of Contents
[ToC]
# Ecosystem review
## Existing projects
There's already quite a few projects in this field, so let's try to make a comparison table:
| Client | Multi-platform | Social | Multirepo ⁽⁰⁾ | Native UI | Compiled | Overlay | Translations | Runners ⁽¹⁾ |
--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---:
| [Athenaeum](https://gitlab.com/librebob/athenaeum) | ✅ <br>MacOS, GNU | ⚙️ | ❌ ⁽²⁾ <br>Flathub | ✅ <br>Qt | ❌ | ❌ | ✅ | ❌ ⁽²⁾ |
| [Lutris](https://github.com/lutris/lutris) | ❌ | ⚙️ | ✅ <br>GoG, Steam, Humble Bundle | ✅ <br>Qt | ❌ | ❌ | ✅ | ✅ |
| [GNOME Games](https://wiki.gnome.org/Apps/Games) | ❌ | ❌ | ✅ <br>Flatpak | ✅ <br>GTK | ✅ | ❌ | ✅ | ❌
| [Gameshub](https://github.com/tkashkin/GameHub) | ❌ | ❌ | ✅ <br>Steam, GoG, Itch Humble Bundle | ✅<br>GTK | ✅ | ❌ | ✅ | ✅ |
| [AppImagePool](https://github.com/prateekmedia/appimagepool) | ❌ | ❌ | ✅ AppImages | ~<br>Flutter | ❌ | ❌ | ❌ | ❌ |
| [Plei](https://github.com/sakshatshinde/Plei) | ? ⁽³⁾ | ❌ | ❌ ⁽⁴⁾ <br>Steam, uPlay, Origin, Epic | ✅ <br>Tkinter | ❌ | ❌ | ❌ | ✅ |
| [itch](https://github.com/itchio/itch) | ✅ <br>MacOS, GNU, Windows | ❌ | ❌ <br>Itch | ❌ <br>ElectronJS | ❌ | ❌ | ✅ | ❌ |
| [retroarch](https://www.retroarch.com/) | ✅ <br>MacOS, GNU, Windows | ❌ | ❌ | ✅ <br>Custom | ✅ | ✅ | ✅ | ❌ ⁽⁵⁾ |
| [Spring](https://github.com/springlobby/springlobby) | ✅ <br>MacOS, GNU, Windows | ✅ | ❌ ⁽⁶⁾ <br>SpringRTS | ✅ <br>wxwidgets | ✅ | ? | ✅ | ❌ ⁽⁶⁾ |
| [KODI](https://kodi.tv/) | ✅ <br>MacOS, GNU, Windows | ❌ | ? | ✅ <br>Custom⁽⁷⁾ | ✅ | ? | ✅ | ? |
⚙️ means the feature is planned but has not been implemented. Ideally, we'd have links to issues describing plans/ideas about said feature.
**⁽⁰⁾** **Multirepo** means the launcher can download games from multiple sources, potentially with different protocols.
**⁽¹⁾** **Runners** are different programs to run the games (eg. emulators) on the same platform. Games obtained on the same repository can leverage different runners.
**⁽²⁾** Athenaeum technically has different repositories and runners, but only one per platform (flathub.org on free systems, homebrew on MacOS)
**⁽³⁾** Plei runs on Windows, not sure about other platforms
**⁽⁴⁾** Plei supports multiple repositories, but only non-free centralized stores (Origin/UPlay/Steam..)
**⁽⁵⁾** Retroarch supports multiple runners, but there is currently no runner for native games
**⁽⁶⁾** SpringLobby only supports games from the SpringRTS engine.
**⁽⁷⁾** OpenGL based fullscreen app (windowed mode possible)
The following clients were not included in the comparison because there's a simple frontend for a single store (eg. Epic Store), but could be forked:
- [Heroic launcher](https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher) Epic Store client (ElectronJS)
- [RARE launcher](https://github.com/Dummerle/Rare) Epic store client (Qt5)
- [Desura](https://github.com/desura/desura-app) Friv store client (GTK2)
The following clients were not included because they're a simple frontend for a single game, but show that there is a demand for such an updater/launcher even in FOSS games:
- [AirShipper](https://book.veloren.net/players/airshipper.html) updater for [Veloren](https://veloren.net/) FLOSS game
- Unvanquish updater (**TODO:** find a screenshot)
# Feature wishlist
In this section, we make a detailed wishlist for features an ideal libre games launcher should have.
## Games setup
- Managing game repositories
- Listing available/installed games, with a filtering system for repos/runners
- Installing & updating the games
- Launching the games, tweaking CLI options
## Social features (optional)
- Accounts
- Offer hosted accounts?
- Make it possible to bring-your-own account
- Pseudo-nymous access without account if possible?
- Offline accounts for LAN etc.
- Contacts
- Adding/removing friends
- Adding/removing friends to specific groups
- Joining games/servers
- Seeing/joining games friends are advertising
- Advertising the games you join, unless you're in private mode; optionally, allow to advertise games only to certain groups of contacts
- Invitations to join a game
- Chatting
- Private chatting with friends
- Public, pseudonymous chatting per game or server (eg. SuperTuxKart chatroom, and/or a STK server chatroom)
- Groupchats for teams?
- Audio-chat
- P2P for small groups (WebRTC? Jingle? Jami?), server-backed for larger groups (Mumble? WebRTC with SFU?)
- Can be for contact groups, 1-on-1 chats, or per-game/server chats
- Different server backends should be easy to configure (Mumble/Jingle) and/or there should be an easy-to-setup bridge server-side so people who don't use a compatible launcher can join using a standard 3rd-party client
## Game library
- Personal game library
- Advertising which games you play ("own")
- Opt-in achievements system (like [Gamerzilla](http://identicalsoftware.com/gamerzilla/)) ; see anti-features section about the attention economy and addiction
- Developer feedback and bug tracking link
- Donation link?
- Matchmaking
- Mods setup ; for games who already have an addon server, we could extract metadata from there and distribute proper packages Mumble (eg. flatpak/0install)
- Per server/team text and/or audio chatting
- Public game library
- Game highlights/curation
- Game news: RSS from game homepage, proxied via repositories?
- Popularity tracking (opt-in)
- Searchable index with (user provided?) tags
- User provided game reviews
- More relevant for an app-store (i.e. risk of feature creep)
- Spam, offensive content, review bombing, moderation workload
- Negative reviews very demotivating for volunteer developers
## Video streaming support
- Cross-platform instant replay integration? see [ReplaySorcery](https://github.com/matanui159/ReplaySorcery) for free systems
- UI to publish those instant replays after reviewing (once the game has ended)
- Integration with OBS to automatically start certain scenes and/or trigger transitions?
- P2P screen-sharing to friends (popular on Discord also helpful for setup etc.)
- In-home streaming between devices? Something like [Moonlight](https://moonlight-stream.org/) integration
## Alternative user interface
It would make sense to develop a backend-first games launcher, on top of which different UI frontends can be prototyped. Some features could be:
- a "media player" UI (like Steam Big Picture mode)
- an ingame opt-in overlay, triggered with a common keybinding, for social interactions, like [MangoHud](https://github.com/flightlessmango/MangoHud) or Mumble but for social networking (like Steam social overlay triggered with Ctrl+Tab)
- Remote control via a web-interface or mobile app for updates and launching games?
## Games integration
In addition to providing features for games from the outside, some games could integrate with free launchers using a specified free protocol:
- each game may have its own URI format for designating servers, but maybe the protocol is common (eg `game:`)
- bi-directional communication between the game and the launcher take place on a local socket or equivalent depnding on the platform; this socket may be advertised via an environment variable, and both programs must have permissions to read/write
- all interactions need to be further defined using ActivityStreams 2.0 JSON, XMPP XML stanzas, or Matrix JSON stanzas
- from the launcher to the game:
- a private chat message has been received
- user has been connected to a game/server groupchat
- someone is talking with voice in groupchat
- an invitation to join a game/server has been received
- user is requesting to join a specific game/server
- a friend invitation has been received
- from the game to the launcher:
- user invited someone to friend list
- user invited someone to join their game/server
- user sent a message
- user has joined a game/server
- user made an achievement
- user achieved a certain score (usually at the end of game, to opt-in collect stats about played games)
With a such protocol, it becomes possible (in addition to switching windows and/or an overlay UI) to have games integrate social interactions directly within their UI. This means that:
- they don't have to if they don't want to work on that
- if they have sufficient resources to study their UX, they may provide well-integrated notifications and/or social interaction GUI
- games with existing social channels using the same underlying protocol (eg. XMPP/Matrix) would be easily integrated into the launcher (other protocols may be bridged/gatewayed)
# Libre games repository
Should we provide a new repository for games, or reuse an existing one? There is already a number of games on Flathub/Snapstore, however:
- we're not sure these packages are maintained by upstream or by a benevolent team of volunteers (risk of malware)
- we're not sure these packages will receive updates (see above)
- there are no packages for nightly updates or beta/RC releases
So we consider whether to serve a repository of our own.
Upsides:
- Own repository would allow better curation and trust chain
- we can add games that are not packaged elsewhere, and ensure all games we want to support are available through the same channel (not Flathub for one game, snap for another, etc)
- More complete "service", not "just" another frontend
- By making our own repository infrastructure fully FLOSS, we can make it easier for others to make new repositories (for example for abandonware)
Downsides:
- can become a lot of work to fix builds, when there are a lot of packages
- cross compilation is hazardous
- server costs
- server doesn't need to be too beefy, as long as we don't try to build several packages in parallel (2 threads and 4GB RAM should be enough for the build server)
- need a lot of storage space so we can serve the last N releases
- people/organizations could volunteer HTTP mirrors
- we could also use a P2P content-addressed network like IPFS/IPNS to reduce network costs
- budget could be [15-25€/month](https://www.kimsufi.com/fr/serveurs.xml) for a build server with 8 threads and 2-4TB storage; could it be the same machine that provides the repo, too?
## PROPOSAL 1: 0install repository
**Note:** Maybe distributing AppImages on GNU/Linux and *BSD via 0install would be interesting, so that the games can be copied around when there is no network. On Windows and Mac, .exe and .app should do that already.
Since we aim to support multiple platforms, we need a cross-platform packaging format. The only candidate so far is https://0install.net/:
- releases for multiple architecture
- source release with automated compilation instructions
- PGP signatures for all package "feeds"
- there's already a GUI for everything
- non-stable releases (nightly, beta..)
- multiple package sources
In order to reduce server storage/network costs, we should serve files over IPFS or Bittorrent. IPFS has a clear advantage, in that IPNS enables us to have a stable "feed" address with a corresponding PGP key.
On a high-level, the build system could operate like this:
- Keep a local cache of upstream versions to package, so that we know when an upstream release is new
- Check for upstream updates (eg. via RSS), extract corresponding git tags
- If upstream repository is signed, verify PGP signatures on commits (eg. `guix git authenticate`)
- If an update was found, try to build for all platforms
- If a platform does not build or run tests successfully
- Publish the build log on the website
- Inform admins via email, XMPP...
- If a build was successful
- Create the 0install manifest containing checksums for this new build
- Add the new manifest to the application's feed
- If one or more builds were successful
- Sign the application's feed with the repository's PGP key
- Publish the new feed and corresponding builds on HTTP and IPFS/IPNS
In case a release build has failed, it is expected that either our repository's build steps will be updated. In that case, all manifests for the current release should be unpublished, and the release process for that version starts anew. If the problem was upstream and they have to publish a new tag, a normal release process ensues and the previous version will only have the previously-successful builds published.
**TODO:** When updating our repository's build steps, should it rebuild all packages? Should we run a git diff to see which application's build steps have been altered, and trigger a rebuild for the last release for those? (probably the second option)
In addition, a nightly cron job should run to publish nightly releases:
- Check for upstream updates on main branch
- If upstream repository is signed, verify PGP signatures on commits
- If new commits have been published, publish a new "nightly" release following the algorithm explained above
## PROPOSAL 2: AppImageUpdate repository
**TODO:** Does someone want to make a detailed proposal based on that?
**NOTE:** This package format is not cross-platform, so the proposal needs to account for that.
- https://github.com/AppImage/AppImageUpdate
- Decentralized and with delta-updates
- Hosting own repo is basically just putting appimage files on a server
- CDNs supported to lower traffic load on server (IPFS support feasible?)
- Already supported by Suse open-build service
- People can easily add their own 3rd party appimages (if those include the needed metadata)
## PROPOSAL 3: Flatpak repository
**TODO:** Does someone want to make a detailed proposal based on that?
**NOTE:** This package format is not cross-platform, so the proposal needs to account for that.
## PROPOSAL 4: GNU/guix repository
**TODO:** Does someone want to make a detailed proposal based on that?
**NOTE:** This package format is not cross-platform, so the proposal needs to account for that.
# Additional considerations
## GUI toolkit
What GUI toolkit to use determines how easy it will be to implement further features. Here's a comparison table:
| Framework | Cross-plat.| Lightweight | Social | UI Overlay | Implementations
--- | :---: | :---: | :---: | :---: | :---:
|Qt| ✅ | ✅ | ❌ ⁽¹⁾ | ✅ | [athenaeum](https://gitlab.com/librebob/athenaeum)
|GTK| ~ | ✅ | ❌ ⁽¹⁾ | ✅ | [gamehub](https://github.com/tkashkin/GameHub)
|ElectronJS| ✅ | ❌ | ✅ ⁽²⁾ | ❌ ⁽³⁾ | [heroic](https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher), [itch](https://github.com/itchio/itch)
|Flutter| ✅ | ~ | ~ ⁽⁴⁾ | ? | [AppImagePool](https://github.com/prateekmedia/appimagepool)
**⁽¹⁾** Not impossible to implement, but harder than just embedded a 3rd party client
**⁽²⁾** Via a web-based XMPP/matrix client + build in WebRTC for audio/video.
**⁽³⁾** Until proven otherwise, it's assumed an electronJS application can't hijack focus from a running full-screen application
**⁽⁴⁾** Flutter/Dart libraries for exist for XMPP and Matrix. Also see FluffyChat for Matrix.
Also worth mentioning, Electron functionality of desktop web applications could in fact be replaced by:
- [Tauri](https://tauri.studio/), a Rust toolkit which leverages system's web rendering engine
- [SciterJS](https://github.com/c-smile/sciter-js-sdk), a C++ toolkit
## Social protocol
In order to provide excellent social features, we need to ues a social networking protocol. Here's a comparison chart:
| Protocol | Federation | Easy selfhosting | Text | Voice | Video | Friendslist | Extensible ⁽⁰⁾ | Guest accounts ⁽⁵⁾ | Spaces ⁽⁸⁾ |
--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---:
|IRC| ❌ ⁽¹⁾ | ✅ | ✅ | ❌ | ❌ | ❌ | ~ | ✅ | ❌
| XMPP | ✅ | ✅ | ✅ | ✅ ⁽²⁾ | ✅ ⁽²⁾ | ✅ | ✅ ⁽⁷⁾ | ✅ ⁽⁴⁾ | ❌
| Matrix | ✅ | ❌ | ✅ | ❌ ⁽³⁾ | ❌ ⁽³⁾ | ✅ | ✅ | ❌ | ✅
| Mumble | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ~ | ✅ | ❌
| [Spring](https://springrts.com/dl/LobbyProtocol/ProtocolDescription.html) | ❌ | ❌ | ✅ ⁽⁶⁾ | ❌ | ❌ | ❌ | ✅ ⁽⁶⁾ | ❌ | ❌
**⁽⁰⁾** Extensibility is needed to develop new features, such as matchmaking
**⁽¹⁾** Federation in the context of IRC means something else, it's a closed federation to provide redundancy across servers, but does not enable users to communicate across networks
**⁽²⁾** Audio/Video in XMPP ecosystem is provided by Jingle and/or multimedia bridges; Jitsi implementation is not standard, but some clients are working on interop (Conversations/JSXC/Gajim)
**⁽³⁾** Audio/Video in Matrix is provided by third-party clients/protocols such as Jitsi
**⁽⁴⁾** Guest accounts are provided via "anonymous login"
**⁽⁵⁾** Guest accounts with limited privileges (can't send friend invites) could be useful to start a multiplayer game on a specific game without having to create an account first
**⁽⁶⁾** Spring uses a customized IRC protocol with support for sharing current "matches" (servers)
**⁽⁷⁾** XMPP supports basic presence information, but it's trivial to build advanced presence via the PubSub extension; see [User tune](https://xmpp.org/extensions/xep-0118.html) for an example extension
**⁽⁸⁾** **Spaces** are a sort of collective namespace, where permissions can be defined for the entire group/team, and some chatrooms can be affiliated to the space
## Package/Repository standards
Maybe it would be useful to support several types of repositories? Or a single cross-platform format? Here's a comparison chart:
| Format | Cross-platform | Reproducible | Bootstrappable | Signatures | Repositories | Delta upgrades | Implementations
--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| [AppImage](https://appimage.org/) | ❌ | ❌ | ❌ | ✅ | ❌ ⁽¹⁾ | ✅ | AppImagePool
| [Flatpak](https://flatpak.org/) | ❌ | ❌ | ❌ | ✅ ⁽³⁾ | ✅ | ✅ | athenaeum, GNOME Games
| [0install](https://0install.net/) | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ |
| [nix](https://nixos.org/)/[guix](https://guix.gnu.org/) | ❌ ⁽²⁾ | ✅ | guix | ✅ | ✅ | ❌ |
**⁽¹⁾** AppImagePool uses a custom [upstream feed](https://appimage.github.io/feed.json), as well as a custom [featured applications feed](https://gist.githubusercontent.com/prateekmedia/44c1ea7f7a627d284b9e50d47aa7200f/raw/gistfile1.txt)
**⁽²⁾** Technically, guix and nix can build Windows application, however there is currently no support for Windows as foreign distro
**⁽³⁾** Flatpak repositories are signed
The following packaging systems were considered, but not added to the comparison table:
- Packages for every different distro and system: hard to implement because every distro uses different build systems/conventions
- tarball with statically linked binaries: need to define well-known paths for package metadata, therefore reinventing AppImage/0install
- [Snap](https://snapcraft.io/) not seriously considered because it is centralized
## Platforms/architectures to support
Below, we consider a list of platforms to support:
- GNU/Linux and *BSD: obvious choice
- More various POSIX (haiku/redox): could be nice, but that's a small userbase
- Windows: most gamers are on it, most FLOSS developers probably aren't though (cross-compilation and testing can be tough)
- Chromebook: already supported by ChromeOS Linux support
- Android: building a game/repository for Android is wildly different and more complex than for desktop; maybe advertising FLOSS games from F-Droid makes sense?
Below, we consider a list of architectures to support:
- x86_64: obviously
- i686: for older PCs?
- ARM architecture (eg RaspberryPi): as long as it builds and tests pass, all platforms should support ARM architectures (cross-compilation)
## Anti-features (to avoid)
- Monetization of software itself (we can recommend indie stores and or donation platforms to support creators)
- Direct upload of binaries by 3rd party (malware risk)
- Gamification of UX and other attention-grabbing (addictive) patterns
- User-tracking and other privacy issues (opt-in ok)
- Online account requirement: social interactions should be optional, and/or it should be very straightforward to setup local accounts for LANs or have an account-less fallback mode.
## Priorities
This document is not exatly a specification for a future client project. However, if it must be interpreted like that, some features should probably be prioritized over others:
- GNU/Linux, *BSD and Windows support (x86 & ARM)
- Focus on multiplayer games that need version syncronisation (auto-update)
- Social features incl. voice-chat (true libre alternative to Discord)
- Trustworthy repository with fast updates for games
- Some limited content curation (highlight of new games, popularity sorting etc.)
Some features described in the wishlist may appear to be less important to some people:
- User-reviews of games: could cause moderation issues, and/or negatively affect volunteers when harsh reviews are published

View File

@ -1,129 +0,0 @@
+++
title = "Libre Gaming Community"
+++
<!-- SPDX-License-Identifier: CC0-1.0 -->
# LibreGaming community - Introduction
We are a community dedicated to playing and developing [libre games], that is videogames and board games with free/libre software and algorithms, and free/libre artistic assets (models, musics). We believe [software] and [culture] should be free as part of a global struggle for freedom and equality online and offline. We aim to become a meta-community that can bring closer smaller communities. We don't want to become a big central organization, but rather a network of organic initiatives scattered throughout cyberspace.
For example, we'd like to bring players alongside game developers and designers, as well as contributors to [libre games launchers] like [Athenaeum] and [GameHub]. We believe this approach can enrich and empower the entire libre gaming ecosystem.
We are just getting started. Feel free to contribute new ideas and feedback by [contacting us]. Check out [the preliminary notes] to our first meeting, as well as the [first], [second] and [third] meeting's minutes.
[libre games]: @/play-libre-games.md
[software]: https://www.gnu.org/philosophy/shouldbefree.html
[culture]: https://artlibre.org/faq_eng/
[libre games launchers]: @/game-launcher-concept.md
[Athenaeum]: https://gitlab.com/librebob/athenaeum
[GameHub]: https://github.com/tkashkin/GameHub
[contacting us]: @/chat-with-us.md
[the preliminary notes]: https://hribhrib.at:5443/upload/5035aee454f8553c88bd1f7623218485341099ed/dZSQFC3lP1lMmTQFyfLKQFBBDIC4tOrQ41Js4nzn/firstthoughts.txt
[first]: @/2021-08-07.md
[second]: @/2022-01-30.md
[third]: @/2022-04-24.md
## We are
- a loose collective rather than a formal organization
- feel free to invite new people and share permissions with people you know
- dont ask permission to improve things, just go ahead and see where it goes, then let it be known so that others can review what you did
- supportive of [accessibility]: everyone should be able to play games, no matter their physical or hardware/network capabilities
- encouraging existing libre games communities to join us and help improve the overall ecosystem
## We are not
- morally-superior purists: we want to develop a libre ecosystem, but will not judge or insult people who take part in other ecosystems
- a community where nazis and harassers are welcome
- a space to discuss non-free games and ecosystem, see Gaming Space or Linux Gaming (**TODO:** links) instead
[accessibility]: https://en.wikipedia.org/wiki/Accessibility
# Communication
- **Domain name:** following a [public poll], we went with `libregaming.org`, see also [previous name poll]
- **Privacy:** While we defend privacy online, our chatrooms are public spaces and may be logged accordingly
- **Moderation:** We defend free speech, which means we believe no government can tell you how to think/feel, but [doesn't mean you can engage in abusive behavior]; nazis, harassers, and other abusers are not welcome in our community
- **Color scheme:** We use <span style="color: #FF8F23;">**Orange**</span> (#FF8F23) and <span style="color: #4FBAD5">**Blue**</span> (#4FBAD5)
If you would like to take part in the community, please see [contacting us].
[public poll]: https://webapp.oulu.fi/framadate/adminstuds.php?poll=Vmv6hF1oJ9ain1SIusvq7qk8
[previous name poll]: https://poll.disroot.org/LZwvudXCHyBvDY2d
[doesn't mean you can engage in abusive behavior]: https://xkcd.com/1357/
# Services
For now, we do not provide any services as LibreGaming collectives. Below you will find a list of services we would be interested to maintain.
## Internal use
- A URL shortener
- an audio/video conferencing server? (video requires a lot of resources)
## Public use
- A website with information about libre games (maybe cooperate with [LibreGameWiki]), and links to various related communities, as well as tutorials to selfhost your own libre game servers
- A matchmaking service/bot to find people to play with
- A chat bridging service (eg. [matterbridge]) for existing communities, to open oneself to new protocols/ecosystems
- Tooling/scripts to make it easier to selfhost libre game servers
- Subdomains on libregaming.org for new projects to get started; only for libregaming projects, because we don't want external projects to technically depend on libregaming.org?
[LibreGameWiki]: https://libregamewiki.org/Main_Page
[matterbridge]: https://github.com/42wim/matterbridge
# Resources
- [Our logos] (SVG)
- [Our first attempt at a website] (ZIP), based on [play-libre-games.md]
- [LibreGaming space screenshot on matrix] (PNG)
[Our logos]: https://freedombox.emorrp1.name/_matrix/media/r0/download/freedombox.emorrp1.name/IwuxGwOfjbdjcaSLFgjqXGqa
[Our first attempt at a website]: https://matrix-client.matrix.org/_matrix/media/r0/download/matrix.org/hmdmKGDlmwrCKuWnJLxGPRgJ
[play-libre-games.md]: @/play-libre-games.md
[LibreGaming space screenshot on matrix]: https://freedombox.emorrp1.name/_matrix/media/r0/download/matrix.org/TqNyUvWqIgJqxIfCzaYbQGyq
# External resources
- Organizing a meeting
- [planning a timezone-aware event] (alternative to framadate, **TODO:** can we selfhost it?)
- [sharing a specific time across timezones] (**TODO:** can we selfhost it?)
- [taking notes together] (use "Freely" permissions to avoid everyone having to register)
- [People involved with LibreGaming.Org](https://md.roflcopter.fr/oFeu6XXoRNqGeEZvYhhjOQ?both)
- [Overview of topics/“directions” being worked on](https://md.roflcopter.fr/O1KGHXZ3SPC20fMqzBT3XQ?both)
- audio conferencing: [Mumble] server on hribhrib.at (**TODO:** can we setup [mumble-web] client and [mumble-web-proxy] WebRTC server?)
- Other related collectives
- [FreeGameDev.net] has a modern IRC server (with a public Jabber/XMPP gateway and a matchmaking bot) and a forum for libre gamedev
- [LibreGameWiki] a wiki with detailed information about libre games
[planning a timezone-aware event]: https://www.when2meet.com/
[sharing a specific time across timezones]: https://time.is/compare
[taking notes together]: https://md.roflcopter.fr/
[Mumble]: https://mumble.org/
[mumble-web]: https://github.com/Johni0702/mumble-web
[mumble-web-proxy]: https://github.com/johni0702/mumble-web-proxy
[FreeGameDev.net]: https://freegamedev.net
**TODO:** below are leftovers from the previous pad, what are they for? do they work?
- https://remixicon.com/ finding Apache-2.0 svg avatars (94% scale for rooms)
- https://storm.debian.net/ Sandstorm ad-hoc hosting
-----
# Below hasn't been updated yet
**TODO:** maybe move to the meeting minutes this last part?
* Bridging: XMPP, irc (limited rooms?), discord?
* pro-actively bridge to IRC but be clear that it's a degraded user experience and try to limit the sheer number of rooms to match user expectations
* The bifrost matrix bridge to XMPP is not great, perhaps can host a public XMPP gateway to matrix instead?
* matrix-bifrost is the only xmpp-matrix bridge in both ways
* it's also not good on xmpp->matrix side, at least when using the official matrix.org gateway
* [Discussion (long) about Discord]
* object to Discord on principle of non-libre, centralised, compromising ideals, so shouldn't pro-actively bridge channels from here to there
* aware that some libre games have their official communities on Discord, and sadly they may not see anything wrong with that, e.g. strong network effects
* popularity isn't everything, it's ok to be a small cohesive community, but advertising libre stuff on non-libre platforms is ok for outreach
* not everyone agrees with the statements above :p
[Discussion (long) about Discord]: https://matrix.to/#/!qLhNfILESSCaasbRWB:freedombox.emorrp1.name/$pES_yrnhm4kjonxfnrPmqV2dv3CmAyWBH2eadKgZ4wM?via=freedombox.emorrp1.name&via=matrix.org&via=nordgedanken.dev

View File

@ -1,190 +0,0 @@
+++
title = "Play libre games!"
+++
<!-- SPDX-License-Identifier: CC0-1.0 -->
# Play libre games!
# What are they?
Libre games are fun games owned by the community, including everyone who plays the game, develops it, and shares it.
## What does it mean for a game to be owned by the community?
It means everyone should be able to do anything they want with it, like:
- Create and share a modified project (new artwork, remixes etc. from simple modifications to full conversions).
- Freely use the game's content on any platform (like a gameplay video/stream).
- Participate in the game's development by improving it and/or giving feedback.
- Learn how the game is built by looking under the hood.
- Create or improve translations.
- Host their own server to play with their friends or in a LAN.
- Share copies of the game.
- Help port the game to new platforms and ensure it lives forever.
# How is this achieved?
By sharing everything needed to make the game with its players. This includes code, music, art, 3d models, documentation - with full permission to share and remix (and even make a new game from it).
Authors can still get credit for the achievement, get paid by users installing the game via stores like itch.io, Steam or Google Play and require that any changes are made available under the same terms.
# Examples
The games below are libre games meant to exemplify their advantages. For a large list of libre games to play, check out [libregamewiki](https://libregamewiki.org/List_of_games).
## [Battle for Wesnoth](https://wesnoth.org/)
Battle for Wesnoth is a turn based strategy libre game.
![Wesnoth gameplay image](https://wesnoth.org/images/sshots/wesnoth-1.14.0-2.jpg)
### Mods:
Battle for Wesnoth has a wealth of [mods](https://www.wesnoth.org/addons/1.14/). Some of them drastically change the gameplay like:
- Elvish dynasty (Story based resource management game)
- Conquest (Risk like game)
- Bob's RPG (RPG game)
- Legend of the Invincibles
- Cities of the Frontier
- Den of Thieves (stealth based game)
Given that the art assets are widely available, shareable and modifiable they can be reused in completely different projects such as:
- [Arcmage](https://arcmage.org/#) (A card game)
- [Hale](https://sourceforge.net/projects/hale/) (A turn based RPG)
### Community translations
Battle for Wesnoth is translated to multiple [languages](https://wiki.wesnoth.org/WesnothTranslations) including minority languages like Basque that wouldn't get translated in non-libre games.
### Community development
The development of Battle for Wesnoth has been highly influenced by the community, especially in the early stages. There were many artists who contributed to the game, people that contributed new campaigns to it, etc. Much of that development happened on the main forums where people would propose and discuss the additions.
The game has been refined over the years thanks to the countless [contributors](https://wiki.wesnoth.org/Credits) and people who reported issues and gave feedback on the game.
### Platform support
Battle for Wesnoth is available on every main platform (Linux, MacOS, Windows, Android, iOS).
Not only that but it runs on homebrew consoles like the Pyra and Pandora.
### Forever alive
The first development release of Wesnoth 0.1 happened on June 18, 2003. It has been fully playable for a number of years, and runs today on all the platforms above. Like many libre games, it is constantly being updated, with more features, fixes and content being produced.
## [Mindustry](https://mindustrygame.github.io/)
Mindustry is an original game bringing together elements of tower defense and factory building. It can be bought on Steam, or downloaded from GitHub and Itch.io.
![Mndustry gameplay image](https://libregamewiki.org/images/4/49/Mindustry.png)
### Community development
Although the game is libre and the community makes many contributions, its author has a clear and strong vision and keeps control of how the game is developed. At the same time, you can edit the copy of the game code on your computer to make it work however you want, and share those modifications freely.
### Modding
Mindustry supports modding and has a built-in map editor. Because of that many mods and in total 2,402 maps, made by community members exist.
### Community translations
Also Mindustry got translated to over 30 languages by community members.
## [0ad](https://play0ad.com/)
0 A.D. is a real time strategy game about ancient warfare, where players take charge of different civilizations and lead them into battle.
![0 A.D. gameplay image](https://play0ad.com/wp-content/gallery/screenshots/Kushcitycenter.jpg)
### Community development
The list of contributors to 0 A.D. includes dozens of names, spanning everything from art through audio through community management and balancing.
### Modding
Like the other game examples here many mods and maps (made with the ingame editor) exist for 0 A.D. F.e. ![moddb lists 27 mods for 0 A.D](https://www.moddb.com/mods?filter=t&kw=&released=&genre=&theme=&players=&timeframe=&game=10298), most of them bring new factions and/or settings to the game like:
- Hyrule Conquest (Hyrule setting, brings factions from the Zelda mythos into the game)
- Terra Magna (Focuses on Asian, American and African Civilizations)
### Forever alive
0 A.D. was released as open source in 2009, though it started life in 2001 as a concept for a mod of Age of Empires II. It is still receiving updates to this day.
## [Endless Sky](https://endless-sky.github.io/)
Endless Sky is a 2D space exploration, combat and trading sim. It features many types of ships and upgrades, a large and detailed galaxy, and an optional main storyline along with various randomized events.
![Endless Sky gameplay image](https://endless-sky.github.io/images/screenshots/battle.jpg)
### Community development
When the main developer of the game took a break in mid-2018, members of the community forked the game and continued work on it. Following this, the main developer gave access to those members to make modifications to the main code repository, meaning the official version of the game was again active.
### Forever alive
As of May 2020, there have been 4 releases since the game "changed hands", and the main developer hasn't yet returned to a lead role. He says "I'm glad to be able to take a break, work on creative writing and other random projects, and not feel duty-bound to spend all my weekends keeping up with issues..."
This shows the power of a community owning its own game and being able to work on it independently, and its benefit to the creator as well.
## [Freedoom](https://freedoom.github.io/) and other Doom-related games
Since the source code for Doom's engine was released under the GPL in 1999, so many mods and conversions have been made for it that it's hard to count them all. Freedoom is a complete game based on this engine.
![Freedoom gameplay image](https://freedoom.github.io/img/screenshots/phase2-0.12_04.webp)
### Modding
Freedoom is compatible with mods for the original Doom.
In general, the spread of Doom source ports since the engine code was released meant that developers were soon fixing old bugs and adding new features. Those include CTF mode, jumping, an inventory system, friendly monsters and more.
### Platform support
One of the source ports of Doom, Odamex, states: "ODAMEX is designed with portability in mind. From PCs to netbooks, consoles to handhelds, Amiga to Windows - our goal is for any device to run multiplayer Doom." It has been confirmed to run on Intel x86, PowerPC, and SPARC systems.
Other ports of the Doom source code listed in doomwiki.org cover platforms from DOS through BeOS through Atari systems to Nokia cell phones.
### Forever alive
Source ports like Odamex and GZDoom are actively used to play Doom today, and are still receiving updates. Two decades is not bad for a game.
# FAQ
##### I already own the games I buy!
Many games you buy are not exactly owned by you. In fact, some newer games and "game streaming" services work under a license model where they never claim that you own the game.
If you own your game, can you:
- run your own server
- stream it without worrying about copyright strikes
- play it without an (stable) internet connection...
- ... and without installing DRM or anticheat
- play an older version if an update breaks something you like
- release your own derivative fanworks, such as a remix album, comic, or even a fangame
- translate it to your language without having to reverse engineer it...
- ... and share that translation without fear of legal threats
- keep playing after the developer stops supporting it
If there is an item on that list you can't do legally, can you really say you own the game?
##### Why 'Libre'?
'Libre', originally from Spanish/French, means having liberty/freedom. It means that everyone has the freedom to access, modify and share the game. The game is free from any ownership: everyone (the community) owns it. It is one of several [similar terms](https://en.wikipedia.org/wiki/Alternative_terms_for_free_software) used to avoid any confusion with 'free of charge'.
##### How can the game have a common vision if everyone can make any changes they wish?
Each game project has a main trusted community that makes the decisions. Anyone is able to change the game locally, and to create a derivative project (usually called a fork), but this doesn't mean those changes will get accepted into the main project.
##### I'm a game developer and I'm concerned that my game will be stolen!
You can't steal a game owned by everyone!
It's important to realize that releasing your game as libre is a trade-off. You give away some of your control, but you gain something bigger: a game that you started, that will live forever, through everyone who will ever play or develop it. A piece of it will also live in every derivative.
Also, when you release your code or assets as libre, you keep on being the copyright owner, and no one can take that away - your name will always be on your art. This is true even when someone forks your game.
##### I downloaded a game for free, is it libre?
There are many free of charge (gratis) games, but many of them are not libre. (In fact, you can buy some libre games.) To know if it's libre, ask yourself: does it have all the benefits described above? If it doesn't, it's not libre.
These are some commonly used, overlapping definitions you can refer to if you want to know more detail about determining if a game's license is libre: [Debian Free Software Guidelines](https://www.debian.org/social_contract#guidelines), [Free Software Definition](https://www.gnu.org/philosophy/free-sw.html), [Open Source Definition](https://opensource.org/osd-annotated), [Free Cultural Works](https://freedomdefined.org/Definition) (see also [Creative Commons](https://creativecommons.org/share-your-work/public-domain/freeworks)), [SPDX short identifiers](https://spdx.org/licenses/)
##### If anyone can change a game, people will cheat!
Cheating is a problem in all multiplayer games, and the best antidote isn't preventing the community from owning the game - it's to let the community police its own game. Hackers will always find ways around clever protections, and then distribute their hacks. So the key is to play with those you trust, and compete with those you respect.

View File

@ -0,0 +1,371 @@
<!DOCTYPE html>
<!-- SPDX-License-Identifier: CC0-1.0 -->
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>LibreGaming</title>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<main class="container">
<!-- SPDX-License-Identifier: CC0-1.0 -->
<h1 id="libre-launchers">Libre launchers</h1>
<p>This document is a brainstorming around FLOSS games launchers. The rationale is:</p>
<ul>
<li>The gaming world has switched to centralized, non-free gaming platforms with auto-updates and social features</li>
<li>FLOSS games usually lack discoverability, updates, and social features</li>
<li>Existing launchers are very resource-heavy</li>
</ul>
<h1 id="table-of-contents">Table of Contents</h1>
<p>[ToC]</p>
<h1 id="ecosystem-review">Ecosystem review</h1>
<h2 id="existing-projects">Existing projects</h2>
<p>There's already quite a few projects in this field, so let's try to make a comparison table:</p>
<table><thead><tr><th>Client</th><th align="center">Multi-platform</th><th align="center">Social</th><th align="center">Multirepo ⁽⁰⁾</th><th align="center">Native UI</th><th align="center">Compiled</th><th align="center">Overlay</th><th align="center">Translations</th><th align="center">Runners ⁽¹⁾</th></tr></thead><tbody>
<tr><td><a href="https://gitlab.com/librebob/athenaeum">Athenaeum</a></td><td align="center"><br>MacOS, GNU</td><td align="center">⚙️</td><td align="center">❌ ⁽²⁾ <br>Flathub</td><td align="center"><br>Qt</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center">❌ ⁽²⁾</td></tr>
<tr><td><a href="https://github.com/lutris/lutris">Lutris</a></td><td align="center"></td><td align="center">⚙️</td><td align="center"><br>GoG, Steam, Humble Bundle</td><td align="center"><br>Qt</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td></tr>
<tr><td><a href="https://wiki.gnome.org/Apps/Games">GNOME Games</a></td><td align="center"></td><td align="center"></td><td align="center"><br>Flatpak</td><td align="center"><br>GTK</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td></tr>
<tr><td><a href="https://github.com/tkashkin/GameHub">Gameshub</a></td><td align="center"></td><td align="center"></td><td align="center"><br>Steam, GoG, Itch Humble Bundle</td><td align="center"><br>GTK</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td></tr>
<tr><td><a href="https://github.com/prateekmedia/appimagepool">AppImagePool</a></td><td align="center"></td><td align="center"></td><td align="center">✅ AppImages</td><td align="center">~<br>Flutter</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td></tr>
<tr><td><a href="https://github.com/sakshatshinde/Plei">Plei</a></td><td align="center">? ⁽³⁾</td><td align="center"></td><td align="center">❌ ⁽⁴⁾ <br>Steam, uPlay, Origin, Epic</td><td align="center"><br>Tkinter</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td></tr>
<tr><td><a href="https://github.com/itchio/itch">itch</a></td><td align="center"><br>MacOS, GNU, Windows</td><td align="center"></td><td align="center"><br>Itch</td><td align="center"><br>ElectronJS</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td></tr>
<tr><td><a href="https://www.retroarch.com/">retroarch</a></td><td align="center"><br>MacOS, GNU, Windows</td><td align="center"></td><td align="center"></td><td align="center"><br>Custom</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center">❌ ⁽⁵⁾</td></tr>
<tr><td><a href="https://github.com/springlobby/springlobby">Spring</a></td><td align="center"><br>MacOS, GNU, Windows</td><td align="center"></td><td align="center">❌ ⁽⁶⁾ <br>SpringRTS</td><td align="center"><br>wxwidgets</td><td align="center"></td><td align="center">?</td><td align="center"></td><td align="center">❌ ⁽⁶⁾</td></tr>
<tr><td><a href="https://kodi.tv/">KODI</a></td><td align="center"><br>MacOS, GNU, Windows</td><td align="center"></td><td align="center">?</td><td align="center"><br>Custom⁽⁷⁾</td><td align="center"></td><td align="center">?</td><td align="center"></td><td align="center">?</td></tr>
</tbody></table>
<p>⚙️ means the feature is planned but has not been implemented. Ideally, we'd have links to issues describing plans/ideas about said feature.</p>
<p><strong>⁽⁰⁾</strong> <strong>Multirepo</strong> means the launcher can download games from multiple sources, potentially with different protocols.
<strong>⁽¹⁾</strong> <strong>Runners</strong> are different programs to run the games (eg. emulators) on the same platform. Games obtained on the same repository can leverage different runners.
<strong>⁽²⁾</strong> Athenaeum technically has different repositories and runners, but only one per platform (flathub.org on free systems, homebrew on MacOS)
<strong>⁽³⁾</strong> Plei runs on Windows, not sure about other platforms
<strong>⁽⁴⁾</strong> Plei supports multiple repositories, but only non-free centralized stores (Origin/UPlay/Steam..)
<strong>⁽⁵⁾</strong> Retroarch supports multiple runners, but there is currently no runner for native games
<strong>⁽⁶⁾</strong> SpringLobby only supports games from the SpringRTS engine.
<strong>⁽⁷⁾</strong> OpenGL based fullscreen app (windowed mode possible)</p>
<p>The following clients were not included in the comparison because there's a simple frontend for a single store (eg. Epic Store), but could be forked:</p>
<ul>
<li><a href="https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher">Heroic launcher</a> Epic Store client (ElectronJS)</li>
<li><a href="https://github.com/Dummerle/Rare">RARE launcher</a> Epic store client (Qt5)</li>
<li><a href="https://github.com/desura/desura-app">Desura</a> Friv store client (GTK2)</li>
</ul>
<p>The following clients were not included because they're a simple frontend for a single game, but show that there is a demand for such an updater/launcher even in FOSS games:</p>
<ul>
<li><a href="https://book.veloren.net/players/airshipper.html">AirShipper</a> updater for <a href="https://veloren.net/">Veloren</a> FLOSS game</li>
<li>Unvanquish updater (<strong>TODO:</strong> find a screenshot)</li>
</ul>
<h1 id="feature-wishlist">Feature wishlist</h1>
<p>In this section, we make a detailed wishlist for features an ideal libre games launcher should have.</p>
<h2 id="games-setup">Games setup</h2>
<ul>
<li>Managing game repositories</li>
<li>Listing available/installed games, with a filtering system for repos/runners</li>
<li>Installing &amp; updating the games</li>
<li>Launching the games, tweaking CLI options</li>
</ul>
<h2 id="social-features-optional">Social features (optional)</h2>
<ul>
<li>Accounts
<ul>
<li>Offer hosted accounts?</li>
<li>Make it possible to bring-your-own account</li>
<li>Pseudo-nymous access without account if possible?</li>
<li>Offline accounts for LAN etc.</li>
</ul>
</li>
<li>Contacts
<ul>
<li>Adding/removing friends</li>
<li>Adding/removing friends to specific groups</li>
</ul>
</li>
<li>Joining games/servers
<ul>
<li>Seeing/joining games friends are advertising</li>
<li>Advertising the games you join, unless you're in private mode; optionally, allow to advertise games only to certain groups of contacts</li>
<li>Invitations to join a game</li>
</ul>
</li>
<li>Chatting
<ul>
<li>Private chatting with friends</li>
<li>Public, pseudonymous chatting per game or server (eg. SuperTuxKart chatroom, and/or a STK server chatroom)</li>
<li>Groupchats for teams?</li>
</ul>
</li>
<li>Audio-chat
<ul>
<li>P2P for small groups (WebRTC? Jingle? Jami?), server-backed for larger groups (Mumble? WebRTC with SFU?)</li>
<li>Can be for contact groups, 1-on-1 chats, or per-game/server chats</li>
<li>Different server backends should be easy to configure (Mumble/Jingle) and/or there should be an easy-to-setup bridge server-side so people who don't use a compatible launcher can join using a standard 3rd-party client</li>
</ul>
</li>
</ul>
<h2 id="game-library">Game library</h2>
<ul>
<li>Personal game library
<ul>
<li>Advertising which games you play (&quot;own&quot;)</li>
<li>Opt-in achievements system (like <a href="http://identicalsoftware.com/gamerzilla/">Gamerzilla</a>) ; see anti-features section about the attention economy and addiction</li>
<li>Developer feedback and bug tracking link</li>
<li>Donation link?</li>
<li>Matchmaking</li>
<li>Mods setup ; for games who already have an addon server, we could extract metadata from there and distribute proper packages Mumble (eg. flatpak/0install)</li>
<li>Per server/team text and/or audio chatting</li>
</ul>
</li>
<li>Public game library
<ul>
<li>Game highlights/curation </li>
<li>Game news: RSS from game homepage, proxied via repositories?</li>
<li>Popularity tracking (opt-in)</li>
<li>Searchable index with (user provided?) tags</li>
<li>User provided game reviews
<ul>
<li>More relevant for an app-store (i.e. risk of feature creep)</li>
<li>Spam, offensive content, review bombing, moderation workload</li>
<li>Negative reviews very demotivating for volunteer developers</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 id="video-streaming-support">Video streaming support</h2>
<ul>
<li>Cross-platform instant replay integration? see <a href="https://github.com/matanui159/ReplaySorcery">ReplaySorcery</a> for free systems</li>
<li>UI to publish those instant replays after reviewing (once the game has ended)</li>
<li>Integration with OBS to automatically start certain scenes and/or trigger transitions?</li>
<li>P2P screen-sharing to friends (popular on Discord also helpful for setup etc.)</li>
<li>In-home streaming between devices? Something like <a href="https://moonlight-stream.org/">Moonlight</a> integration</li>
</ul>
<h2 id="alternative-user-interface">Alternative user interface</h2>
<p>It would make sense to develop a backend-first games launcher, on top of which different UI frontends can be prototyped. Some features could be:</p>
<ul>
<li>a &quot;media player&quot; UI (like Steam Big Picture mode)</li>
<li>an ingame opt-in overlay, triggered with a common keybinding, for social interactions, like <a href="https://github.com/flightlessmango/MangoHud">MangoHud</a> or Mumble but for social networking (like Steam social overlay triggered with Ctrl+Tab)</li>
<li>Remote control via a web-interface or mobile app for updates and launching games?</li>
</ul>
<h2 id="games-integration">Games integration</h2>
<p>In addition to providing features for games from the outside, some games could integrate with free launchers using a specified free protocol:</p>
<ul>
<li>each game may have its own URI format for designating servers, but maybe the protocol is common (eg <code>game:</code>)</li>
<li>bi-directional communication between the game and the launcher take place on a local socket or equivalent depnding on the platform; this socket may be advertised via an environment variable, and both programs must have permissions to read/write</li>
<li>all interactions need to be further defined using ActivityStreams 2.0 JSON, XMPP XML stanzas, or Matrix JSON stanzas</li>
<li>from the launcher to the game:
<ul>
<li>a private chat message has been received</li>
<li>user has been connected to a game/server groupchat</li>
<li>someone is talking with voice in groupchat</li>
<li>an invitation to join a game/server has been received</li>
<li>user is requesting to join a specific game/server</li>
<li>a friend invitation has been received</li>
</ul>
</li>
<li>from the game to the launcher:
<ul>
<li>user invited someone to friend list</li>
<li>user invited someone to join their game/server</li>
<li>user sent a message</li>
<li>user has joined a game/server</li>
<li>user made an achievement</li>
<li>user achieved a certain score (usually at the end of game, to opt-in collect stats about played games)</li>
</ul>
</li>
</ul>
<p>With a such protocol, it becomes possible (in addition to switching windows and/or an overlay UI) to have games integrate social interactions directly within their UI. This means that:</p>
<ul>
<li>they don't have to if they don't want to work on that</li>
<li>if they have sufficient resources to study their UX, they may provide well-integrated notifications and/or social interaction GUI</li>
<li>games with existing social channels using the same underlying protocol (eg. XMPP/Matrix) would be easily integrated into the launcher (other protocols may be bridged/gatewayed)</li>
</ul>
<h1 id="libre-games-repository">Libre games repository</h1>
<p>Should we provide a new repository for games, or reuse an existing one? There is already a number of games on Flathub/Snapstore, however:</p>
<ul>
<li>we're not sure these packages are maintained by upstream or by a benevolent team of volunteers (risk of malware)</li>
<li>we're not sure these packages will receive updates (see above)</li>
<li>there are no packages for nightly updates or beta/RC releases</li>
</ul>
<p>So we consider whether to serve a repository of our own.</p>
<p>Upsides:</p>
<ul>
<li>Own repository would allow better curation and trust chain</li>
<li>we can add games that are not packaged elsewhere, and ensure all games we want to support are available through the same channel (not Flathub for one game, snap for another, etc)</li>
<li>More complete &quot;service&quot;, not &quot;just&quot; another frontend</li>
<li>By making our own repository infrastructure fully FLOSS, we can make it easier for others to make new repositories (for example for abandonware)</li>
</ul>
<p>Downsides:</p>
<ul>
<li>can become a lot of work to fix builds, when there are a lot of packages</li>
<li>cross compilation is hazardous</li>
<li>server costs
<ul>
<li>server doesn't need to be too beefy, as long as we don't try to build several packages in parallel (2 threads and 4GB RAM should be enough for the build server)</li>
<li>need a lot of storage space so we can serve the last N releases</li>
<li>people/organizations could volunteer HTTP mirrors</li>
<li>we could also use a P2P content-addressed network like IPFS/IPNS to reduce network costs</li>
<li>budget could be <a href="https://www.kimsufi.com/fr/serveurs.xml">15-25€/month</a> for a build server with 8 threads and 2-4TB storage; could it be the same machine that provides the repo, too?</li>
</ul>
</li>
</ul>
<h2 id="proposal-1-0install-repository">PROPOSAL 1: 0install repository</h2>
<p><strong>Note:</strong> Maybe distributing AppImages on GNU/Linux and *BSD via 0install would be interesting, so that the games can be copied around when there is no network. On Windows and Mac, .exe and .app should do that already.</p>
<p>Since we aim to support multiple platforms, we need a cross-platform packaging format. The only candidate so far is https://0install.net/:</p>
<ul>
<li>releases for multiple architecture</li>
<li>source release with automated compilation instructions</li>
<li>PGP signatures for all package &quot;feeds&quot;</li>
<li>there's already a GUI for everything</li>
<li>non-stable releases (nightly, beta..)</li>
<li>multiple package sources</li>
</ul>
<p>In order to reduce server storage/network costs, we should serve files over IPFS or Bittorrent. IPFS has a clear advantage, in that IPNS enables us to have a stable &quot;feed&quot; address with a corresponding PGP key.</p>
<p>On a high-level, the build system could operate like this:</p>
<ul>
<li>Keep a local cache of upstream versions to package, so that we know when an upstream release is new</li>
<li>Check for upstream updates (eg. via RSS), extract corresponding git tags</li>
<li>If upstream repository is signed, verify PGP signatures on commits (eg. <code>guix git authenticate</code>)</li>
<li>If an update was found, try to build for all platforms
<ul>
<li>If a platform does not build or run tests successfully
<ul>
<li>Publish the build log on the website</li>
<li>Inform admins via email, XMPP...</li>
</ul>
</li>
<li>If a build was successful
<ul>
<li>Create the 0install manifest containing checksums for this new build</li>
<li>Add the new manifest to the application's feed</li>
</ul>
</li>
<li>If one or more builds were successful
<ul>
<li>Sign the application's feed with the repository's PGP key</li>
<li>Publish the new feed and corresponding builds on HTTP and IPFS/IPNS</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>In case a release build has failed, it is expected that either our repository's build steps will be updated. In that case, all manifests for the current release should be unpublished, and the release process for that version starts anew. If the problem was upstream and they have to publish a new tag, a normal release process ensues and the previous version will only have the previously-successful builds published.</p>
<p><strong>TODO:</strong> When updating our repository's build steps, should it rebuild all packages? Should we run a git diff to see which application's build steps have been altered, and trigger a rebuild for the last release for those? (probably the second option)</p>
<p>In addition, a nightly cron job should run to publish nightly releases:</p>
<ul>
<li>Check for upstream updates on main branch</li>
<li>If upstream repository is signed, verify PGP signatures on commits</li>
<li>If new commits have been published, publish a new &quot;nightly&quot; release following the algorithm explained above</li>
</ul>
<h2 id="proposal-2-appimageupdate-repository">PROPOSAL 2: AppImageUpdate repository</h2>
<p><strong>TODO:</strong> Does someone want to make a detailed proposal based on that?</p>
<p><strong>NOTE:</strong> This package format is not cross-platform, so the proposal needs to account for that.</p>
<ul>
<li>https://github.com/AppImage/AppImageUpdate</li>
<li>Decentralized and with delta-updates</li>
<li>Hosting own repo is basically just putting appimage files on a server</li>
<li>CDNs supported to lower traffic load on server (IPFS support feasible?)</li>
<li>Already supported by Suse open-build service</li>
<li>People can easily add their own 3rd party appimages (if those include the needed metadata)</li>
</ul>
<h2 id="proposal-3-flatpak-repository">PROPOSAL 3: Flatpak repository</h2>
<p><strong>TODO:</strong> Does someone want to make a detailed proposal based on that?</p>
<p><strong>NOTE:</strong> This package format is not cross-platform, so the proposal needs to account for that.</p>
<h2 id="proposal-4-gnu-guix-repository">PROPOSAL 4: GNU/guix repository</h2>
<p><strong>TODO:</strong> Does someone want to make a detailed proposal based on that?</p>
<p><strong>NOTE:</strong> This package format is not cross-platform, so the proposal needs to account for that.</p>
<h1 id="additional-considerations">Additional considerations</h1>
<h2 id="gui-toolkit">GUI toolkit</h2>
<p>What GUI toolkit to use determines how easy it will be to implement further features. Here's a comparison table:</p>
<table><thead><tr><th>Framework</th><th align="center">Cross-plat.</th><th align="center">Lightweight</th><th align="center">Social</th><th align="center">UI Overlay</th><th align="center">Implementations</th></tr></thead><tbody>
<tr><td>Qt</td><td align="center"></td><td align="center"></td><td align="center">❌ ⁽¹⁾</td><td align="center"></td><td align="center"><a href="https://gitlab.com/librebob/athenaeum">athenaeum</a></td></tr>
<tr><td>GTK</td><td align="center">~</td><td align="center"></td><td align="center">❌ ⁽¹⁾</td><td align="center"></td><td align="center"><a href="https://github.com/tkashkin/GameHub">gamehub</a></td></tr>
<tr><td>ElectronJS</td><td align="center"></td><td align="center"></td><td align="center">✅ ⁽²⁾</td><td align="center">❌ ⁽³⁾</td><td align="center"><a href="https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher">heroic</a>, <a href="https://github.com/itchio/itch">itch</a></td></tr>
<tr><td>Flutter</td><td align="center"></td><td align="center">~</td><td align="center">~ ⁽⁴⁾</td><td align="center">?</td><td align="center"><a href="https://github.com/prateekmedia/appimagepool">AppImagePool</a></td></tr>
</tbody></table>
<p><strong>⁽¹⁾</strong> Not impossible to implement, but harder than just embedded a 3rd party client
<strong>⁽²⁾</strong> Via a web-based XMPP/matrix client + build in WebRTC for audio/video.
<strong>⁽³⁾</strong> Until proven otherwise, it's assumed an electronJS application can't hijack focus from a running full-screen application
<strong>⁽⁴⁾</strong> Flutter/Dart libraries for exist for XMPP and Matrix. Also see FluffyChat for Matrix. </p>
<p>Also worth mentioning, Electron functionality of desktop web applications could in fact be replaced by:</p>
<ul>
<li><a href="https://tauri.studio/">Tauri</a>, a Rust toolkit which leverages system's web rendering engine</li>
<li><a href="https://github.com/c-smile/sciter-js-sdk">SciterJS</a>, a C++ toolkit</li>
</ul>
<h2 id="social-protocol">Social protocol</h2>
<p>In order to provide excellent social features, we need to ues a social networking protocol. Here's a comparison chart:</p>
<table><thead><tr><th>Protocol</th><th align="center">Federation</th><th align="center">Easy selfhosting</th><th align="center">Text</th><th align="center">Voice</th><th align="center">Video</th><th align="center">Friendslist</th><th align="center">Extensible ⁽⁰⁾</th><th align="center">Guest accounts ⁽⁵⁾</th><th align="center">Spaces ⁽⁸⁾</th></tr></thead><tbody>
<tr><td>IRC</td><td align="center">❌ ⁽¹⁾</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center">~</td><td align="center"></td><td align="center"></td></tr>
<tr><td>XMPP</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center">✅ ⁽²⁾</td><td align="center">✅ ⁽²⁾</td><td align="center"></td><td align="center">✅ ⁽⁷⁾</td><td align="center">✅ ⁽⁴⁾</td><td align="center"></td></tr>
<tr><td>Matrix</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center">❌ ⁽³⁾</td><td align="center">❌ ⁽³⁾</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td></tr>
<tr><td>Mumble</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center">~</td><td align="center"></td><td align="center"></td></tr>
<tr><td><a href="https://springrts.com/dl/LobbyProtocol/ProtocolDescription.html">Spring</a></td><td align="center"></td><td align="center"></td><td align="center">✅ ⁽⁶⁾</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center">✅ ⁽⁶⁾</td><td align="center"></td><td align="center"></td></tr>
</tbody></table>
<p><strong>⁽⁰⁾</strong> Extensibility is needed to develop new features, such as matchmaking
<strong>⁽¹⁾</strong> Federation in the context of IRC means something else, it's a closed federation to provide redundancy across servers, but does not enable users to communicate across networks
<strong>⁽²⁾</strong> Audio/Video in XMPP ecosystem is provided by Jingle and/or multimedia bridges; Jitsi implementation is not standard, but some clients are working on interop (Conversations/JSXC/Gajim)
<strong>⁽³⁾</strong> Audio/Video in Matrix is provided by third-party clients/protocols such as Jitsi
<strong>⁽⁴⁾</strong> Guest accounts are provided via &quot;anonymous login&quot;
<strong>⁽⁵⁾</strong> Guest accounts with limited privileges (can't send friend invites) could be useful to start a multiplayer game on a specific game without having to create an account first
<strong>⁽⁶⁾</strong> Spring uses a customized IRC protocol with support for sharing current &quot;matches&quot; (servers)
<strong>⁽⁷⁾</strong> XMPP supports basic presence information, but it's trivial to build advanced presence via the PubSub extension; see <a href="https://xmpp.org/extensions/xep-0118.html">User tune</a> for an example extension
<strong>⁽⁸⁾</strong> <strong>Spaces</strong> are a sort of collective namespace, where permissions can be defined for the entire group/team, and some chatrooms can be affiliated to the space</p>
<h2 id="package-repository-standards">Package/Repository standards</h2>
<p>Maybe it would be useful to support several types of repositories? Or a single cross-platform format? Here's a comparison chart:</p>
<table><thead><tr><th>Format</th><th align="center">Cross-platform</th><th align="center">Reproducible</th><th align="center">Bootstrappable</th><th align="center">Signatures</th><th align="center">Repositories</th><th align="center">Delta upgrades</th><th align="center">Implementations</th></tr></thead><tbody>
<tr><td><a href="https://appimage.org/">AppImage</a></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center">❌ ⁽¹⁾</td><td align="center"></td><td align="center">AppImagePool</td></tr>
<tr><td><a href="https://flatpak.org/">Flatpak</a></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center">✅ ⁽³⁾</td><td align="center"></td><td align="center"></td><td align="center">athenaeum, GNOME Games</td></tr>
<tr><td><a href="https://0install.net/">0install</a></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td></tr>
<tr><td><a href="https://nixos.org/">nix</a>/<a href="https://guix.gnu.org/">guix</a></td><td align="center">❌ ⁽²⁾</td><td align="center"></td><td align="center">guix</td><td align="center"></td><td align="center"></td><td align="center"></td><td align="center"></td></tr>
</tbody></table>
<p><strong>⁽¹⁾</strong> AppImagePool uses a custom <a href="https://appimage.github.io/feed.json">upstream feed</a>, as well as a custom <a href="https://gist.githubusercontent.com/prateekmedia/44c1ea7f7a627d284b9e50d47aa7200f/raw/gistfile1.txt">featured applications feed</a>
<strong>⁽²⁾</strong> Technically, guix and nix can build Windows application, however there is currently no support for Windows as foreign distro
<strong>⁽³⁾</strong> Flatpak repositories are signed</p>
<p>The following packaging systems were considered, but not added to the comparison table:</p>
<ul>
<li>Packages for every different distro and system: hard to implement because every distro uses different build systems/conventions</li>
<li>tarball with statically linked binaries: need to define well-known paths for package metadata, therefore reinventing AppImage/0install</li>
<li><a href="https://snapcraft.io/">Snap</a> not seriously considered because it is centralized</li>
</ul>
<h2 id="platforms-architectures-to-support">Platforms/architectures to support</h2>
<p>Below, we consider a list of platforms to support:</p>
<ul>
<li>GNU/Linux and *BSD: obvious choice</li>
<li>More various POSIX (haiku/redox): could be nice, but that's a small userbase</li>
<li>Windows: most gamers are on it, most FLOSS developers probably aren't though (cross-compilation and testing can be tough)</li>
<li>Chromebook: already supported by ChromeOS Linux support</li>
<li>Android: building a game/repository for Android is wildly different and more complex than for desktop; maybe advertising FLOSS games from F-Droid makes sense?</li>
</ul>
<p>Below, we consider a list of architectures to support:</p>
<ul>
<li>x86_64: obviously</li>
<li>i686: for older PCs?</li>
<li>ARM architecture (eg RaspberryPi): as long as it builds and tests pass, all platforms should support ARM architectures (cross-compilation)</li>
</ul>
<h2 id="anti-features-to-avoid">Anti-features (to avoid)</h2>
<ul>
<li>Monetization of software itself (we can recommend indie stores and or donation platforms to support creators)</li>
<li>Direct upload of binaries by 3rd party (malware risk)</li>
<li>Gamification of UX and other attention-grabbing (addictive) patterns</li>
<li>User-tracking and other privacy issues (opt-in ok)</li>
<li>Online account requirement: social interactions should be optional, and/or it should be very straightforward to setup local accounts for LANs or have an account-less fallback mode.</li>
</ul>
<h2 id="priorities">Priorities</h2>
<p>This document is not exatly a specification for a future client project. However, if it must be interpreted like that, some features should probably be prioritized over others:</p>
<ul>
<li>GNU/Linux, *BSD and Windows support (x86 &amp; ARM)</li>
<li>Focus on multiplayer games that need version syncronisation (auto-update)</li>
<li>Social features incl. voice-chat (true libre alternative to Discord)</li>
<li>Trustworthy repository with fast updates for games</li>
<li>Some limited content curation (highlight of new games, popularity sorting etc.)</li>
</ul>
<p>Some features described in the wishlist may appear to be less important to some people:</p>
<ul>
<li>User-reviews of games: could cause moderation issues, and/or negatively affect volunteers when harsh reviews are published</li>
</ul>
</main>
</body>
</html>

115
index.html Normal file
View File

@ -0,0 +1,115 @@
<!DOCTYPE html>
<!-- SPDX-License-Identifier: CC0-1.0 -->
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>LibreGaming</title>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<main class="container">
<!-- SPDX-License-Identifier: CC0-1.0 -->
<h1 id="libregaming-community-introduction">LibreGaming community - Introduction</h1>
<p>We are a community dedicated to playing and developing <a href="https://libregaming.org/play-libre-games/">libre games</a>, that is videogames and board games with free/libre software and algorithms, and free/libre artistic assets (models, musics). We believe <a href="https://www.gnu.org/philosophy/shouldbefree.html">software</a> and <a href="https://artlibre.org/faq_eng/">culture</a> should be free as part of a global struggle for freedom and equality online and offline. We aim to become a meta-community that can bring closer smaller communities. We don't want to become a big central organization, but rather a network of organic initiatives scattered throughout cyberspace.</p>
<p>For example, we'd like to bring players alongside game developers and designers, as well as contributors to <a href="https://libregaming.org/game-launcher-concept/">libre games launchers</a> like <a href="https://gitlab.com/librebob/athenaeum">Athenaeum</a> and <a href="https://github.com/tkashkin/GameHub">GameHub</a>. We believe this approach can enrich and empower the entire libre gaming ecosystem.</p>
<p>We are just getting started. Feel free to contribute new ideas and feedback by <a href="https://libregaming.org/chat-with-us/">contacting us</a>. Check out <a href="https://hribhrib.at:5443/upload/5035aee454f8553c88bd1f7623218485341099ed/dZSQFC3lP1lMmTQFyfLKQFBBDIC4tOrQ41Js4nzn/firstthoughts.txt">the preliminary notes</a> to our first meeting, as well as the <a href="https://libregaming.org/2021-08-07/">first</a> and <a href="https://libregaming.org/2022-01-30/">second</a> meeting's minutes.</p>
<h2 id="we-are">We are</h2>
<ul>
<li>a loose collective rather than a formal organization
<ul>
<li>feel free to invite new people and share permissions with people you know</li>
<li>dont ask permission to improve things, just go ahead and see where it goes, then let it be known so that others can review what you did</li>
</ul>
</li>
<li>supportive of <a href="https://en.wikipedia.org/wiki/Accessibility">accessibility</a>: everyone should be able to play games, no matter their physical or hardware/network capabilities</li>
<li>encouraging existing libre games communities to join us and help improve the overall ecosystem</li>
</ul>
<h2 id="we-are-not">We are not</h2>
<ul>
<li>morally-superior purists: we want to develop a libre ecosystem, but will not judge or insult people who take part in other ecosystems</li>
<li>a community where nazis and harassers are welcome</li>
<li>a space to discuss non-free games and ecosystem, see Gaming Space or Linux Gaming (<strong>TODO:</strong> links) instead</li>
</ul>
<h1 id="communication">Communication</h1>
<ul>
<li><strong>Domain name:</strong> following a <a href="https://webapp.oulu.fi/framadate/adminstuds.php?poll=Vmv6hF1oJ9ain1SIusvq7qk8">public poll</a>, we went with <code>libregaming.org</code>, see also <a href="https://poll.disroot.org/LZwvudXCHyBvDY2d">previous name poll</a></li>
<li><strong>Privacy:</strong> While we defend privacy online, our chatrooms are public spaces and may be logged accordingly</li>
<li><strong>Moderation:</strong> We defend free speech, which means we believe no government can tell you how to think/feel, but <a href="https://xkcd.com/1357/">doesn't mean you can engage in abusive behavior</a>; nazis, harassers, and other abusers are not welcome in our community</li>
<li><strong>Color scheme:</strong> We use <span style="color: #FF8F23;"><strong>Orange</strong></span> (#FF8F23) and <span style="color: #4FBAD5"><strong>Blue</strong></span> (#4FBAD5)</li>
</ul>
<p>If you would like to take part in the community, please see <a href="https://libregaming.org/chat-with-us/">contacting us</a>.</p>
<h1 id="services">Services</h1>
<p>For now, we do not provide any services as LibreGaming collectives. Below you will find a list of services we would be interested to maintain.</p>
<h2 id="internal-use">Internal use</h2>
<ul>
<li>A URL shortener</li>
<li>an audio/video conferencing server? (video requires a lot of resources)</li>
</ul>
<h2 id="public-use">Public use</h2>
<ul>
<li>A website with information about libre games (maybe cooperate with <a href="https://libregamewiki.org/Main_Page">LibreGameWiki</a>), and links to various related communities, as well as tutorials to selfhost your own libre game servers</li>
<li>A matchmaking service/bot to find people to play with</li>
<li>A chat bridging service (eg. <a href="https://github.com/42wim/matterbridge">matterbridge</a>) for existing communities, to open oneself to new protocols/ecosystems</li>
<li>Tooling/scripts to make it easier to selfhost libre game servers</li>
<li>Subdomains on libregaming.org for new projects to get started; only for libregaming projects, because we don't want external projects to technically depend on libregaming.org?</li>
</ul>
<h1 id="resources">Resources</h1>
<ul>
<li><a href="https://freedombox.emorrp1.name/_matrix/media/r0/download/freedombox.emorrp1.name/IwuxGwOfjbdjcaSLFgjqXGqa">Our logos</a> (SVG)</li>
<li><a href="https://matrix-client.matrix.org/_matrix/media/r0/download/matrix.org/hmdmKGDlmwrCKuWnJLxGPRgJ">Our first attempt at a website</a> (ZIP), based on <a href="https://libregaming.org/play-libre-games/">play-libre-games.md</a></li>
<li><a href="https://freedombox.emorrp1.name/_matrix/media/r0/download/matrix.org/TqNyUvWqIgJqxIfCzaYbQGyq">LibreGaming space screenshot on matrix</a> (PNG)</li>
</ul>
<h1 id="external-resources">External resources</h1>
<ul>
<li>Organizing a meeting
<ul>
<li><a href="https://www.when2meet.com/">planning a timezone-aware event</a> (alternative to framadate, <strong>TODO:</strong> can we selfhost it?)</li>
<li><a href="https://time.is/compare">sharing a specific time across timezones</a> (<strong>TODO:</strong> can we selfhost it?)</li>
<li><a href="https://md.roflcopter.fr/">taking notes together</a> (use &quot;Freely&quot; permissions to avoid everyone having to register)
<ul>
<li><a href="https://md.roflcopter.fr/oFeu6XXoRNqGeEZvYhhjOQ?both">People involved with LibreGaming.Org</a></li>
<li><a href="https://md.roflcopter.fr/O1KGHXZ3SPC20fMqzBT3XQ?both">Overview of topics/“directions” being worked on</a></li>
</ul>
</li>
<li>audio conferencing: <a href="https://mumble.org/">Mumble</a> server on hribhrib.at (<strong>TODO:</strong> can we setup <a href="https://github.com/Johni0702/mumble-web">mumble-web</a> client and <a href="https://github.com/johni0702/mumble-web-proxy">mumble-web-proxy</a> WebRTC server?)</li>
</ul>
</li>
<li>Other related collectives
<ul>
<li><a href="https://freegamedev.net">FreeGameDev.net</a> has a modern IRC server (with a public Jabber/XMPP gateway and a matchmaking bot) and a forum for libre gamedev</li>
<li><a href="https://libregamewiki.org/Main_Page">LibreGameWiki</a> a wiki with detailed information about libre games</li>
</ul>
</li>
</ul>
<p><strong>TODO:</strong> below are leftovers from the previous pad, what are they for? do they work?</p>
<ul>
<li>https://remixicon.com/ finding Apache-2.0 svg avatars (94% scale for rooms)</li>
<li>https://storm.debian.net/ Sandstorm ad-hoc hosting</li>
</ul>
<hr />
<h1 id="below-hasn-t-been-updated-yet">Below hasn't been updated yet</h1>
<p><strong>TODO:</strong> maybe move to the meeting minutes this last part?</p>
<ul>
<li>Bridging: XMPP, irc (limited rooms?), discord?</li>
<li>pro-actively bridge to IRC but be clear that it's a degraded user experience and try to limit the sheer number of rooms to match user expectations</li>
<li>The bifrost matrix bridge to XMPP is not great, perhaps can host a public XMPP gateway to matrix instead?
<ul>
<li>matrix-bifrost is the only xmpp-matrix bridge in both ways</li>
<li>it's also not good on xmpp-&gt;matrix side, at least when using the official matrix.org gateway</li>
</ul>
</li>
<li><a href="https://matrix.to/#/!qLhNfILESSCaasbRWB:freedombox.emorrp1.name/$pES_yrnhm4kjonxfnrPmqV2dv3CmAyWBH2eadKgZ4wM?via=freedombox.emorrp1.name&amp;via=matrix.org&amp;via=nordgedanken.dev">Discussion (long) about Discord</a></li>
<li>object to Discord on principle of non-libre, centralised, compromising ideals, so shouldn't pro-actively bridge channels from here to there</li>
<li>aware that some libre games have their official communities on Discord, and sadly they may not see anything wrong with that, e.g. strong network effects</li>
<li>popularity isn't everything, it's ok to be a small cohesive community, but advertising libre stuff on non-libre platforms is ok for outreach</li>
<li>not everyone agrees with the statements above :p</li>
</ul>
</main>
</body>
</html>

130
play-libre-games/index.html Normal file
View File

@ -0,0 +1,130 @@
<!DOCTYPE html>
<!-- SPDX-License-Identifier: CC0-1.0 -->
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>LibreGaming</title>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<main class="container">
<!-- SPDX-License-Identifier: CC0-1.0 -->
<h1 id="play-libre-games">Play libre games!</h1>
<h1 id="what-are-they">What are they?</h1>
<p>Libre games are fun games owned by the community, including everyone who plays the game, develops it, and shares it.</p>
<h2 id="what-does-it-mean-for-a-game-to-be-owned-by-the-community">What does it mean for a game to be owned by the community?</h2>
<p>It means everyone should be able to do anything they want with it, like:</p>
<ul>
<li>Create and share a modified project (new artwork, remixes etc. from simple modifications to full conversions).</li>
<li>Freely use the game's content on any platform (like a gameplay video/stream).</li>
<li>Participate in the game's development by improving it and/or giving feedback.</li>
<li>Learn how the game is built by looking under the hood.</li>
<li>Create or improve translations.</li>
<li>Host their own server to play with their friends or in a LAN.</li>
<li>Share copies of the game.</li>
<li>Help port the game to new platforms and ensure it lives forever.</li>
</ul>
<h1 id="how-is-this-achieved">How is this achieved?</h1>
<p>By sharing everything needed to make the game with its players. This includes code, music, art, 3d models, documentation - with full permission to share and remix (and even make a new game from it).</p>
<p>Authors can still get credit for the achievement, get paid by users installing the game via stores like itch.io, Steam or Google Play and require that any changes are made available under the same terms.</p>
<h1 id="examples">Examples</h1>
<p>The games below are libre games meant to exemplify their advantages. For a large list of libre games to play, check out <a href="https://libregamewiki.org/List_of_games">libregamewiki</a>.</p>
<h2 id="battle-for-wesnoth"><a href="https://wesnoth.org/">Battle for Wesnoth</a></h2>
<p>Battle for Wesnoth is a turn based strategy libre game.</p>
<p><img src="https://wesnoth.org/images/sshots/wesnoth-1.14.0-2.jpg" alt="Wesnoth gameplay image" /></p>
<h3 id="mods">Mods:</h3>
<p>Battle for Wesnoth has a wealth of <a href="https://www.wesnoth.org/addons/1.14/">mods</a>. Some of them drastically change the gameplay like:</p>
<ul>
<li>Elvish dynasty (Story based resource management game)</li>
<li>Conquest (Risk like game)</li>
<li>Bob's RPG (RPG game)</li>
<li>Legend of the Invincibles</li>
<li>Cities of the Frontier</li>
<li>Den of Thieves (stealth based game)</li>
</ul>
<p>Given that the art assets are widely available, shareable and modifiable they can be reused in completely different projects such as:</p>
<ul>
<li><a href="https://arcmage.org/#">Arcmage</a> (A card game)</li>
<li><a href="https://sourceforge.net/projects/hale/">Hale</a> (A turn based RPG)</li>
</ul>
<h3 id="community-translations">Community translations</h3>
<p>Battle for Wesnoth is translated to multiple <a href="https://wiki.wesnoth.org/WesnothTranslations">languages</a> including minority languages like Basque that wouldn't get translated in non-libre games.</p>
<h3 id="community-development">Community development</h3>
<p>The development of Battle for Wesnoth has been highly influenced by the community, especially in the early stages. There were many artists who contributed to the game, people that contributed new campaigns to it, etc. Much of that development happened on the main forums where people would propose and discuss the additions.</p>
<p>The game has been refined over the years thanks to the countless <a href="https://wiki.wesnoth.org/Credits">contributors</a> and people who reported issues and gave feedback on the game.</p>
<h3 id="platform-support">Platform support</h3>
<p>Battle for Wesnoth is available on every main platform (Linux, MacOS, Windows, Android, iOS).
Not only that but it runs on homebrew consoles like the Pyra and Pandora.</p>
<h3 id="forever-alive">Forever alive</h3>
<p>The first development release of Wesnoth 0.1 happened on June 18, 2003. It has been fully playable for a number of years, and runs today on all the platforms above. Like many libre games, it is constantly being updated, with more features, fixes and content being produced.</p>
<h2 id="mindustry"><a href="https://mindustrygame.github.io/">Mindustry</a></h2>
<p>Mindustry is an original game bringing together elements of tower defense and factory building. It can be bought on Steam, or downloaded from GitHub and Itch.io.</p>
<p><img src="https://libregamewiki.org/images/4/49/Mindustry.png" alt="Mndustry gameplay image" /></p>
<h3 id="community-development-1">Community development</h3>
<p>Although the game is libre and the community makes many contributions, its author has a clear and strong vision and keeps control of how the game is developed. At the same time, you can edit the copy of the game code on your computer to make it work however you want, and share those modifications freely.</p>
<h3 id="modding">Modding</h3>
<p>Mindustry supports modding, and many player-made maps are available that were created with the built-in map editor.</p>
<h2 id="0ad"><a href="https://play0ad.com/">0ad</a></h2>
<p>0 A.D. is a real time strategy game about ancient warfare, where players take charge of different civilizations and lead them into battle.</p>
<p><img src="https://play0ad.com/wp-content/gallery/screenshots/Kushcitycenter.jpg" alt="0 A.D. gameplay image" /></p>
<h3 id="community-development-2">Community development</h3>
<p>The list of contributors to 0 A.D. includes dozens of names, spanning everything from art through audio through community management and balancing.</p>
<h3 id="forever-alive-1">Forever alive</h3>
<p>0 A.D. was released as open source in 2009, though it started life in 2001 as a concept for a mod of Age of Empires II. It is still receiving updates to this day.</p>
<h2 id="endless-sky"><a href="https://endless-sky.github.io/">Endless Sky</a></h2>
<p>Endless Sky is a 2D space exploration, combat and trading sim. It features many types of ships and upgrades, a large and detailed galaxy, and an optional main storyline along with various randomized events.</p>
<p><img src="https://endless-sky.github.io/images/screenshots/battle.jpg" alt="Endless Sky gameplay image" /></p>
<h3 id="community-development-3">Community development</h3>
<p>When the main developer of the game took a break in mid-2018, members of the community forked the game and continued work on it. Following this, the main developer gave access to those members to make modifications to the main code repository, meaning the official version of the game was again active.</p>
<h3 id="forever-alive-2">Forever alive</h3>
<p>As of May 2020, there have been 4 releases since the game &quot;changed hands&quot;, and the main developer hasn't yet returned to a lead role. He says &quot;I'm glad to be able to take a break, work on creative writing and other random projects, and not feel duty-bound to spend all my weekends keeping up with issues...&quot;</p>
<p>This shows the power of a community owning its own game and being able to work on it independently, and its benefit to the creator as well.</p>
<h2 id="freedoom-and-other-doom-related-games"><a href="https://freedoom.github.io/">Freedoom</a> and other Doom-related games</h2>
<p>Since the source code for Doom's engine was released under the GPL in 1999, so many mods and conversions have been made for it that it's hard to count them all. Freedoom is a complete game based on this engine.</p>
<p><img src="https://freedoom.github.io/img/screenshots/phase2-0.12_04.webp" alt="Freedoom gameplay image" /></p>
<h3 id="modding-1">Modding</h3>
<p>Freedoom is compatible with mods for the original Doom.</p>
<p>In general, the spread of Doom source ports since the engine code was released meant that developers were soon fixing old bugs and adding new features. Those include CTF mode, jumping, an inventory system, friendly monsters and more.</p>
<h3 id="platform-support-1">Platform support</h3>
<p>One of the source ports of Doom, Odamex, states: &quot;ODAMEX is designed with portability in mind. From PCs to netbooks, consoles to handhelds, Amiga to Windows - our goal is for any device to run multiplayer Doom.&quot; It has been confirmed to run on Intel x86, PowerPC, and SPARC systems.</p>
<p>Other ports of the Doom source code listed in doomwiki.org cover platforms from DOS through BeOS through Atari systems to Nokia cell phones.</p>
<h3 id="forever-alive-3">Forever alive</h3>
<p>Source ports like Odamex and GZDoom are actively used to play Doom today, and are still receiving updates. Two decades is not bad for a game.</p>
<h1 id="faq">FAQ</h1>
<h5 id="i-already-own-the-games-i-buy">I already own the games I buy!</h5>
<p>Many games you buy are not exactly owned by you. In fact, some newer games and &quot;game streaming&quot; services work under a license model where they never claim that you own the game.</p>
<p>If you own your game, can you:</p>
<ul>
<li>run your own server</li>
<li>stream it without worrying about copyright strikes</li>
<li>play it without an (stable) internet connection...</li>
<li>... and without installing DRM or anticheat</li>
<li>play an older version if an update breaks something you like</li>
<li>release your own derivative fanworks, such as a remix album, comic, or even a fangame</li>
<li>translate it to your language without having to reverse engineer it...</li>
<li>... and share that translation without fear of legal threats</li>
<li>keep playing after the developer stops supporting it</li>
</ul>
<p>If there is an item on that list you can't do legally, can you really say you own the game?</p>
<h5 id="why-libre">Why 'Libre'?</h5>
<p>'Libre', originally from Spanish/French, means having liberty/freedom. It means that everyone has the freedom to access, modify and share the game. The game is free from any ownership: everyone (the community) owns it. It is one of several <a href="https://en.wikipedia.org/wiki/Alternative_terms_for_free_software">similar terms</a> used to avoid any confusion with 'free of charge'.</p>
<h5 id="how-can-the-game-have-a-common-vision-if-everyone-can-make-any-changes-they-wish">How can the game have a common vision if everyone can make any changes they wish?</h5>
<p>Each game project has a main trusted community that makes the decisions. Anyone is able to change the game locally, and to create a derivative project (usually called a fork), but this doesn't mean those changes will get accepted into the main project.</p>
<h5 id="i-m-a-game-developer-and-i-m-concerned-that-my-game-will-be-stolen">I'm a game developer and I'm concerned that my game will be stolen!</h5>
<p>You can't steal a game owned by everyone!</p>
<p>It's important to realize that releasing your game as libre is a trade-off. You give away some of your control, but you gain something bigger: a game that you started, that will live forever, through everyone who will ever play or develop it. A piece of it will also live in every derivative.</p>
<p>Also, when you release your code or assets as libre, you keep on being the copyright owner, and no one can take that away - your name will always be on your art. This is true even when someone forks your game.</p>
<h5 id="i-downloaded-a-game-for-free-is-it-libre">I downloaded a game for free, is it libre?</h5>
<p>There are many free of charge (gratis) games, but many of them are not libre. (In fact, you can buy some libre games.) To know if it's libre, ask yourself: does it have all the benefits described above? If it doesn't, it's not libre.</p>
<p>These are some commonly used, overlapping definitions you can refer to if you want to know more detail about determining if a game's license is libre: <a href="https://www.debian.org/social_contract#guidelines">Debian Free Software Guidelines</a>, <a href="https://www.gnu.org/philosophy/free-sw.html">Free Software Definition</a>, <a href="https://opensource.org/osd-annotated">Open Source Definition</a>, <a href="https://freedomdefined.org/Definition">Free Cultural Works</a> (see also <a href="https://creativecommons.org/share-your-work/public-domain/freeworks">Creative Commons</a>), <a href="https://spdx.org/licenses/">SPDX short identifiers</a></p>
<h5 id="if-anyone-can-change-a-game-people-will-cheat">If anyone can change a game, people will cheat!</h5>
<p>Cheating is a problem in all multiplayer games, and the best antidote isn't preventing the community from owning the game - it's to let the community police its own game. Hackers will always find ways around clever protections, and then distribute their hacks. So the key is to play with those you trust, and compete with those you respect.</p>
</main>
</body>
</html>

3
robots.txt Normal file
View File

@ -0,0 +1,3 @@
User-agent: *
Allow: /
Sitemap: https://libregaming.org/sitemap.xml

21
sitemap.xml Normal file
View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://libregaming.org/</loc>
</url>
<url>
<loc>https://libregaming.org/2021-08-07/</loc>
</url>
<url>
<loc>https://libregaming.org/2022-01-30/</loc>
</url>
<url>
<loc>https://libregaming.org/chat-with-us/</loc>
</url>
<url>
<loc>https://libregaming.org/game-launcher-concept/</loc>
</url>
<url>
<loc>https://libregaming.org/play-libre-games/</loc>
</url>
</urlset>

File diff suppressed because one or more lines are too long

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M13 21v2h-2v-2H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h6a3.99 3.99 0 0 1 3 1.354A3.99 3.99 0 0 1 15 3h6a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-8zm7-2V5h-5a2 2 0 0 0-2 2v12h7zm-9 0V7a2 2 0 0 0-2-2H4v14h7z" fill="#4fbad5"/>
</svg>

Before

Width:  |  Height:  |  Size: 758 B

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M17 13v1c0 2.77-.664 5.445-1.915 7.846l-.227.42-1.747-.974c1.16-2.08 1.81-4.41 1.882-6.836L15 14v-1h2zm-6-3h2v4l-.005.379a12.941 12.941 0 0 1-2.691 7.549l-.231.29-1.55-1.264a10.944 10.944 0 0 0 2.471-6.588L11 14v-4zm1-4a5 5 0 0 1 5 5h-2a3 3 0 0 0-6 0v3c0 2.235-.82 4.344-2.271 5.977l-.212.23-1.448-1.38a6.969 6.969 0 0 0 1.925-4.524L7 14v-3a5 5 0 0 1 5-5zm0-4a9 9 0 0 1 9 9v3c0 1.698-.202 3.37-.597 4.99l-.139.539-1.93-.526c.392-1.437.613-2.922.658-4.435L19 14v-3A7 7 0 0 0 7.808 5.394L6.383 3.968A8.962 8.962 0 0 1 12 2zM4.968 5.383l1.426 1.425a6.966 6.966 0 0 0-1.39 3.951L5 11 5.004 13c0 1.12-.264 2.203-.762 3.177l-.156.29-1.737-.992c.38-.665.602-1.407.646-2.183L3.004 13v-2a8.94 8.94 0 0 1 1.964-5.617z" fill="#4fbad5"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 24 24"
width="240"
height="240"
version="1.1"
id="svg6"
sodipodi:docname="gamepad-line.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<cc:license
rdf:resource="https://www.apache.org/licenses/LICENSE-2.0.txt" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="1021"
id="namedview8"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="-75.254236"
inkscape:cy="115.9322"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
fill="none"
d="M0 0h24v24H0z"
id="path2" />
<g
id="g4072-2"
inkscape:export-xdpi="240"
inkscape:export-ydpi="240">
<path
id="path4058-6"
d="M 0,0 H 24 V 24 H 0 Z"
inkscape:connector-curvature="0"
style="fill:none" />
<path
inkscape:connector-curvature="0"
id="path1021"
style="fill:#4fbad5;fill-opacity:1"
d="M 17,6 H 7 A 4,4 0 0 0 3.005,9.8 L 3,10 v 4 a 4,4 0 0 0 3.8,3.995 L 7,18 h 10 a 4,4 0 0 0 3.995,-3.8 L 21,14 V 10 A 4,4 0 0 0 17.2,6.005 Z m 0,-2 a 6,6 0 0 1 6,6 v 4 a 6,6 0 0 1 -6,6 H 7 A 6,6 0 0 1 1,14 V 10 A 6,6 0 0 1 7,4 Z" />
<path
inkscape:connector-curvature="0"
id="path4060-1"
style="fill:#ff8f23;fill-opacity:1"
d="m 16,9 v 2 H 14 V 9 Z m 2,4 v 2 H 16 V 13 Z M 10,9 v 2 h 2 v 2 H 9.999 L 10,15 H 8 L 7.999,13 H 6 V 11 H 8 V 9 Z" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 24 24"
width="240"
height="240"
version="1.1"
id="svg897"
sodipodi:docname="government-line.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata903">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<cc:license
rdf:resource="https://www.apache.org/licenses/LICENSE-2.0.txt" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs901" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="1021"
id="namedview899"
showgrid="false"
inkscape:zoom="1.9666667"
inkscape:cx="99.088584"
inkscape:cy="75.682426"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg897" />
<path
fill="none"
d="M0 0h24v24H0z"
id="path893" />
<path
d="m 19.52,6.36 h 2.82 V 8.24 H 1.66 V 6.36 H 4.48 V 4.48 c 0,-0.5191476 0.4208524,-0.94 0.94,-0.94 h 13.16 c 0.519148,0 0.94,0.4208524 0.94,0.94 z M 6.36,5.42 V 6.36 H 17.64 V 5.42 Z"
id="path895"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccsssscccccc"
style="fill:#4fbad5;fill-opacity:1;stroke-width:0.94" />
<path
style="display:inline;fill:#4fbad5;fill-opacity:1;stroke-width:0.94"
inkscape:connector-curvature="0"
d="m 22.34,18.58 v 1.88 H 1.66 v -1.88 z"
id="path895-5-3"
sodipodi:nodetypes="ccccc" />
<path
style="display:inline;fill:#ff8f23;fill-opacity:1;stroke-width:0.94"
inkscape:connector-curvature="0"
d="M 21.4,8.2399996 V 18.58 H 2.6 V 8.2399996 Z m -1.88,0 H 4.48 V 18.58 H 7.3 V 12 h 1.88 v 6.58 h 1.88 V 12 h 1.88 v 6.58 h 1.88 V 12 h 1.88 v 6.58 h 2.82 z"
id="path895-5-5"
sodipodi:nodetypes="cccccccccccccccccccccc" />
</svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 24 24"
width="240"
height="240"
version="1.1"
id="svg6"
sodipodi:docname="history-line.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<cc:license
rdf:resource="https://www.apache.org/licenses/LICENSE-2.0.txt" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="1021"
id="namedview8"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="-75.254236"
inkscape:cy="115.9322"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
fill="none"
d="M0 0H24V24H0z"
id="path2" />
<path
style="fill:#4fbad5;fill-opacity:1"
d="M 12,2 C 17.523,2 22,6.477 22,12 22,17.523 17.523,22 12,22 6.477,22 2,17.523 2,12 h 2 c 0,4.418 3.582,8 8,8 4.418,0 8,-3.582 8,-8 C 20,7.582 16.418,4 12,4 9.25,4 6.824,5.387 5.385,7.5 H 8 v 2 H 2 v -6 H 4 V 6 C 5.824,3.57 8.729,2 12,2 Z"
id="path824" />
<path
style="fill:#ff8f23;fill-opacity:1"
d="m 13,7 v 4.585 l 3.243,3.243 -1.415,1.415 L 11,12.413 V 7 Z"
id="path4" />
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,324 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="120"
height="120"
viewBox="0 0 31.75 31.75"
version="1.1"
id="svg7400"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="libregaming.svg">
<metadata
id="metadata155">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<sodipodi:namedview
id="namedview7402"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="5.12"
inkscape:cx="22.927905"
inkscape:cy="60.223391"
inkscape:window-width="1680"
inkscape:window-height="1021"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showguides="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
units="px">
<inkscape:grid
type="xygrid"
id="grid127"
originx="-114.34282"
originy="-223.52812" />
</sodipodi:namedview>
<defs
id="defs7397">
<linearGradient
id="linearGradient15296">
<stop
style="stop-color:#ff5959;stop-opacity:1;"
offset="0"
id="stop15298" />
<stop
style="stop-color:#df0000;stop-opacity:1;"
offset="1"
id="stop15300" />
</linearGradient>
<linearGradient
id="linearGradient17969">
<stop
style="stop-color:#ffb73d;stop-opacity:1;"
offset="0"
id="stop17971" />
<stop
style="stop-color:#ffa000;stop-opacity:1;"
offset="1"
id="stop17973" />
</linearGradient>
<linearGradient
id="linearGradient18870">
<stop
style="stop-color:#fff18d;stop-opacity:1;"
offset="0"
id="stop18872" />
<stop
style="stop-color:#ffcd01;stop-opacity:1;"
offset="1"
id="stop18874" />
</linearGradient>
<linearGradient
id="linearGradient20648">
<stop
style="stop-color:#00a000;stop-opacity:0.25892857;"
offset="0"
id="stop20650" />
<stop
style="stop-color:green;stop-opacity:1;"
offset="1"
id="stop20652" />
</linearGradient>
<linearGradient
id="linearGradient21541">
<stop
style="stop-color:#263cce;stop-opacity:1;"
offset="0"
id="stop21543" />
<stop
style="stop-color:#263cce;stop-opacity:0;"
offset="1"
id="stop21545" />
</linearGradient>
<linearGradient
id="linearGradient25099">
<stop
style="stop-color:#652f99;stop-opacity:1;"
offset="0"
id="stop25101" />
<stop
style="stop-color:#502679;stop-opacity:0.65178573;"
offset="1"
id="stop25103" />
</linearGradient>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-114.34282,-41.721878)">
<g
id="g4822"
transform="translate(0.97686452,-0.96678374)">
<g
id="g4800">
<g
id="g4778">
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
sodipodi:nodetypes="cscsc"
id="path693-1-9-1-4"
d="m 129.21766,69.515258 c 0,0 -4.96041,3.465617 -9.82551,-1.239561 -4.52533,-4.376561 -0.91735,-9.325074 -0.91735,-9.325074 0,0 -1.27057,4.350927 2.2702,7.925703 4.38042,4.422492 8.47267,2.638932 8.47266,2.638932 z"
style="fill:#ff8f23;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.01548349px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<circle
transform="rotate(-90.183238)"
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
r="3.0895457"
cy="120.47314"
cx="-67.677971"
id="path137085-43"
style="fill:#ff8f23;fill-opacity:1;stroke:none;stroke-width:0.60529447;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g4770">
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
sodipodi:nodetypes="cscsc"
id="path693-1-9-9-5-3"
d="m 140.11411,58.376534 c 0,0 3.33986,-5.045939 -1.48611,-9.791261 -4.48891,-4.413907 -9.34518,-0.682692 -9.34518,-0.682692 0,0 4.31761,-1.379512 7.98026,2.070295 4.53118,4.267885 2.85103,8.403658 2.85103,8.403658 z"
style="fill:#ff8f23;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.01548349px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<circle
transform="rotate(-90.183238)"
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
r="3.0895457"
cy="137.34294"
cx="-50.077358"
id="path137085-4-1"
style="fill:#ff8f23;fill-opacity:1;stroke:none;stroke-width:0.60529447;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g4774">
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
sodipodi:nodetypes="cscsc"
id="path693-7-7-0"
d="m 141.16297,57.594188 c 0,0 2.14302,5.236214 -2.32794,10.080456 -4.1587,4.505912 -10.57092,2.998029 -10.57092,2.998029 0,0 5.42958,-1.064264 8.84824,-4.57696 4.22935,-4.345692 4.05062,-8.501525 4.05062,-8.501525 z"
style="fill:#4fbad5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.01674335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<circle
transform="rotate(-90.183238)"
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
r="3.0895457"
cy="137.22623"
cx="-67.621071"
id="path137085-4-5-4"
style="fill:#4fbad5;fill-opacity:1;stroke:none;stroke-width:0.60529447;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g4766">
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
sodipodi:nodetypes="cscsc"
id="path693-7-1-5-7"
d="m 129.83666,46.593025 c 0,0 -5.25892,-1.879264 -9.98927,2.712035 -4.39997,4.270637 -2.73141,10.642927 -2.73141,10.642927 0,0 0.92747,-5.454606 4.35314,-8.960476 4.23804,-4.33722 8.36754,-4.394488 8.36754,-4.394486 z"
style="fill:#4fbad5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.01674335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<circle
transform="rotate(-90.183238)"
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
r="3.0895457"
cy="120.57893"
cx="-50.765644"
id="path137085-4-5-2-9"
style="fill:#4fbad5;fill-opacity:1;stroke:none;stroke-width:0.60529447;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
<g
id="g4786">
<g
id="g4758">
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
y="54.66584"
x="123.83096"
height="7.8347216"
width="2.6116107"
id="rect3043-6-8"
style="fill:#e23838;fill-opacity:1;stroke-width:0.01808702" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
transform="rotate(90)"
y="-129.02855"
x="57.285469"
height="7.8347216"
width="2.6116107"
id="rect3043-2-9-6"
style="fill:#e23838;fill-opacity:1;stroke-width:0.01808702" />
</g>
<g
id="g4762">
<ellipse
transform="scale(-1,1)"
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
ry="1.55514"
rx="1.5042465"
cy="56.18626"
cx="-135.25243"
id="path3171-0"
style="fill:#e23838;fill-opacity:1;stroke-width:0.01808702" />
<ellipse
transform="scale(-1,1)"
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
ry="1.55514"
rx="1.5042465"
cy="60.59198"
cx="-133.31949"
id="path3171-7-6"
style="fill:#e23838;fill-opacity:1;stroke-width:0.01808702" />
</g>
</g>
</g>
<rect
style="fill:#ffff00;fill-opacity:0;stroke:none;stroke-width:0.473023;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect145567"
width="22.475668"
height="22.475668"
x="117.82139"
y="47.421467"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<circle
style="fill:#000000;fill-opacity:0;stroke:none;stroke-width:0.0345245"
id="path17194-32-7"
cx="129.26566"
cy="58.549042"
r="14.922836"
inkscape:export-filename="/dades/communityGamesColorTransparentDins.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
style="fill:none;stroke:none;stroke-width:1.70747006;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect6681-0-4"
width="25.906347"
height="25.906347"
x="116.50246"
y="46.356262"
inkscape:export-filename="/dades/communityGamesColorTransparentDinsBotonsInvertitsT.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 24 24"
width="240"
height="240"
version="1.1"
id="svg6"
sodipodi:docname="questionnaire-line.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<cc:license
rdf:resource="https://www.apache.org/licenses/LICENSE-2.0.txt" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="1021"
id="namedview8"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="-75.254236"
inkscape:cy="115.9322"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
fill="none"
d="M0 0h24v24H0z"
id="path2" />
<path
d="m 11.072203,14.822181 h 1.88 v 1.88 h -1.88 z M 8.7851834,9.9464012 C 9.3295342,7.2221609 12.795821,6.3565621 14.557129,8.5047113 c 1.761308,2.1481497 0.233168,5.3775757 -2.544926,5.3774697 h -0.94 v -1.88 h 0.94 c 1.19022,-7.4e-5 1.844827,-1.383679 1.09021,-2.3039954 C 12.347795,8.77787 10.862746,9.1486875 10.629463,10.315821 Z"
id="path4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccsccccscc"
style="stroke-width:0.94;fill:#ff8f23;fill-opacity:1" />
<g
id="g894"
transform="matrix(0.94,0,0,0.94,0.92338983,0.72)">
<path
id="path880"
d="M 0,0 H 24 V 24 H 0 Z"
inkscape:connector-curvature="0"
style="fill:none" />
<path
id="path882"
d="m 12,2 c 5.523,0 10,4.477 10,10 0,5.523 -4.477,10 -10,10 -1.702,0 -3.305,-0.425 -4.708,-1.175 L 2,22 3.176,16.71 C 2.426,15.306 2,13.703 2,12 2,6.477 6.477,2 12,2 Z m 0,2 c -4.418,0 -8,3.582 -8,8 0,1.335 0.326,2.618 0.94,3.766 l 0.35,0.654 -0.656,2.946 2.948,-0.654 0.653,0.349 C 9.383,19.675 10.665,20 12,20 c 4.418,0 8,-3.582 8,-8 0,-4.418 -3.582,-8 -8,-8 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssscccsssscccccsss"
style="fill:#4fbad5;fill-opacity:1" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M3.161 4.469a6.5 6.5 0 0 1 8.84-.328 6.5 6.5 0 0 1 9.178 9.154l-7.765 7.79a2 2 0 0 1-2.719.102l-.11-.101-7.764-7.791a6.5 6.5 0 0 1 .34-8.826zm1.414 1.414a4.5 4.5 0 0 0-.146 6.21l.146.154L12 19.672l5.303-5.304-3.535-3.535-1.06 1.06a3 3 0 1 1-4.244-4.242l2.102-2.103a4.501 4.501 0 0 0-5.837.189l-.154.146zm8.486 2.828a1 1 0 0 1 1.414 0l4.242 4.242.708-.706a4.5 4.5 0 0 0-6.211-6.51l-.153.146-3.182 3.182a1 1 0 0 0-.078 1.327l.078.087a1 1 0 0 0 1.327.078l.087-.078 1.768-1.768z" fill="#4fbad5"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 24 24"
width="240"
height="240"
version="1.1"
id="svg1444"
sodipodi:docname="sword-line.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata1450">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<cc:license
rdf:resource="https://www.apache.org/licenses/LICENSE-2.0.txt" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs1448" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="1021"
id="namedview1446"
showgrid="false"
inkscape:object-paths="true"
inkscape:zoom="2.8284271"
inkscape:cx="15.681282"
inkscape:cy="138.57566"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1444" />
<path
fill="none"
d="M0 0h24v24H0z"
id="path1440" />
<path
style="stroke-width:0.94;fill:#4fbad5;fill-opacity:1"
inkscape:connector-curvature="0"
id="path1442-7"
d="m 18.57906,5.4371097 v 0.658 L 13.29579,11.37838 12.62745,10.71756 17.90696,5.4380497 Z m -3.25428,6.5715403 5.1324,-5.1324003 0.0028,-3.32008 -3.33324,0.00282 -5.12582,5.12676 z"
sodipodi:nodetypes="cccccccccccc" />
<path
style="stroke-width:0.94;fill:#4fbad5;fill-opacity:1"
inkscape:connector-curvature="0"
id="path1442-7-5"
d="M 10.654155,14.020015 8.01252,16.66165 7.34794,15.99707 9.987695,13.357315 Z M 8.6771,12.00865 l -2.65832,2.65926 -1.3301,-1.32916 -1.32916,1.32916 2.32556,2.3265 -2.65832,2.65926 1.32916,1.32916 2.65926,-2.65926 2.3265,2.3265 1.32916,-1.32916 -1.32916,-1.3301 2.65926,-2.65832 z"
sodipodi:nodetypes="cccccccccccccccccc" />
<path
id="path1442"
d="m 5.42094,5.43711 v 0.658 L 15.98748,16.66165 16.65206,15.99707 6.09304,5.43805 Z m 9.90196,6.57154 2.65832,2.65926 1.3301,-1.32916 1.32916,1.32916 -2.32556,2.3265 2.65832,2.65926 -1.32916,1.32916 -2.65926,-2.65926 -2.3265,2.3265 -1.32916,-1.32916 1.32916,-1.3301 L 11.99906,15.33249 8.67522,12.00865 3.54282,6.87625 3.54,3.55617 6.87324,3.55899 11.99906,8.68575 Z"
inkscape:connector-curvature="0"
style="stroke-width:0.94;fill:#ff8f23;fill-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -1,73 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 24 24"
width="240"
height="240"
version="1.1"
id="svg6"
sodipodi:docname="team-line.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<cc:license
rdf:resource="https://www.apache.org/licenses/LICENSE-2.0.txt" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="1021"
id="namedview8"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="-79.322033"
inkscape:cy="120"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g4204-2" />
<g
id="g4204-2"
inkscape:export-xdpi="240"
inkscape:export-ydpi="240">
<path
id="path4190-0"
d="M 0,0 H 24 V 24 H 0 Z"
inkscape:connector-curvature="0"
style="fill:none" />
<path
inkscape:connector-curvature="0"
id="path997"
style="fill:#4fbad5;fill-opacity:1"
d="m 18.5,10 a 0.5,0.5 0 1 0 0,1 0.5,0.5 0 0 0 0,-1 z m -13,0 a 0.5,0.5 0 1 0 0,1 0.5,0.5 0 0 0 0,-1 z m 13,-2 a 2.5,2.5 0 1 1 0,5 2.5,2.5 0 0 1 0,-5 z m -13,0 a 2.5,2.5 0 1 1 0,5 2.5,2.5 0 0 1 0,-5 z m 13,6 A 3.5,3.5 0 0 1 22,17.5 V 22 H 20 V 17.5 A 1.5,1.5 0 0 0 18.644,16.007 L 18.5,16 c -0.175,0 -0.343,0.03 -0.5,0.085 V 16 C 18,15.334 17.892,14.694 17.691,14.096 17.95,14.033 18.221,14 18.5,14 Z m -13,0 c 0.279,0 0.55,0.033 0.81,0.094 A 5.947,5.947 0 0 0 6.009,15.669 L 6,16 v 0.086 A 1.492,1.492 0 0 0 5.644,16.006 L 5.5,16 A 1.5,1.5 0 0 0 4.007,17.356 L 4,17.5 V 22 H 2 V 17.5 A 3.5,3.5 0 0 1 5.5,14 Z" />
<path
inkscape:connector-curvature="0"
id="path4192-2"
style="fill:#ff8f23;fill-opacity:1"
d="m 12,4 a 2,2 0 1 0 0,4 2,2 0 0 0 0,-4 z m 0,-2 a 4,4 0 1 1 0,8 4,4 0 0 1 0,-8 z m 0,9 a 5,5 0 0 1 5,5 v 6 H 15 V 16 A 3,3 0 0 0 12.176,13.005 L 12,13 A 3,3 0 0 0 9.005,15.824 L 9,16 v 6 H 7 v -6 a 5,5 0 0 1 5,-5 z" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,73 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 24 24"
width="240"
height="240"
version="1.1"
id="svg6"
sodipodi:docname="terminal-line.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<cc:license
rdf:resource="https://www.apache.org/licenses/LICENSE-2.0.txt" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="1021"
id="namedview8"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="-79.322033"
inkscape:cy="120"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<g
id="g4138-8"
inkscape:export-xdpi="240"
inkscape:export-ydpi="240">
<path
id="path4124-7"
d="M 0,0 H 24 V 24 H 0 Z"
inkscape:connector-curvature="0"
style="fill:none" />
<path
inkscape:connector-curvature="0"
style="fill:#4fbad5;fill-opacity:1"
d="M 11,12 3.929,19.071 2.515,17.657 8.172,12 2.515,6.343 3.929,4.93 Z"
id="path991" />
<path
inkscape:connector-curvature="0"
style="fill:#ff8f23;fill-opacity:1"
d="m 11,19 h 10 v 2 H 11 Z"
id="path4126-9" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 24 24"
width="240"
height="240"
version="1.1"
id="svg6"
sodipodi:docname="tools-line.svg"
inkscape:export-filename="/home/emorrp1/downloads/tools-line.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata12">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<cc:license
rdf:resource="https://www.apache.org/licenses/LICENSE-2.0.txt" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="1021"
id="namedview8"
showgrid="false"
inkscape:zoom="0.98333333"
inkscape:cx="-75.254236"
inkscape:cy="115.9322"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg6" />
<path
fill="none"
d="M0 0h24v24H0z"
id="path2" />
<path
d="M 5.33,3.271 A 3.5,3.5 0 0 1 9.584,8.234 L 20.293,18.944 18.879,20.358 8.169,9.648 A 3.502,3.502 0 0 1 3.207,5.393 L 5.444,7.63 A 1.5,1.5 0 1 0 7.565,5.509 L 5.329,3.27 Z"
id="path826"
style="fill:#ff8f23;fill-opacity:1" />
<path
d="m 15.697,5.155 3.182,-1.768 1.414,1.414 -1.768,3.182 -1.768,0.354 -2.12,2.121 -1.415,-1.414 2.121,-2.121 z"
id="path824"
style="fill:#4fbad5;fill-opacity:1" />
<path
d="m 8.979,13.287 1.414,1.414 -5.303,5.303 A 1,1 0 0 1 3.598,18.677 L 3.676,18.59 Z"
id="path4"
style="fill:#4fbad5;fill-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,174 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Libre Games: By Everyone, for Everyone</title>
<style>
html { /* center HTML and reduce width */
background-color: black;
margin: auto;
max-width: 60em;
}
body { /* establish document colors and font */
background-color: #1c1b22; /* dark grey background */
color: #dee2e6; /* off white text */
font-family: Roboto, Arial, sans-serif;
text-align: center;
}
.text-orange {
color: #ff8f23;
}
.text-blue {
color: #4fbad5;
}
/* only strong part of header is bolded */
h1, h2 {
color: #dee2e6; /* off white text */
font-weight: normal;
}
h1 strong, h2 strong {
font-weight: bold;
}
/* images used as part of headers have fixed height */
h1 img {
height: 2em;
}
h2 img {
height: 1.5em;
}
p {
font-weight: normal;
}
/* class to display a floated gallery of card elements */
.gallery-flex {
display: flex;
flex-wrap: wrap;
margin-left: auto;
margin-right: auto;
max-width: 55em;
}
.gallery-flex .card {
background-color: #35333f; /* lighter gray background for cards */
border-radius: 8px;
color: #dee2e6; /* off white text */
font-weight: normal;
margin: 0.5em;
padding: 0.5em;
min-width: 25.5em;
width: 25em;
}
.gallery-flex strong {
color: #FF8F23;
}
.gallery-flex ul, .gallery-flex p {
text-align: left;
}
</style>
</head>
<body>
<h1 style="background-color:#212529;text-align:center;">
<strong class="text-blue">Libre</span><strong class="text-orange">Gaming</span>
</h1>
<h1><img src="images/libregaming.svg" alt="logo" /> Libre Games: By <strong>Everyone</strong> for <strong>Everyone</strong></h1>
<p><span style="color:#ff8f23">Libre games are fun games owned by the
community: Everyone who <strong>plays</strong> the game, <strong>develops</strong> it, and
<strong>shares</strong> it.</span></p>
<h2><img src="images/team-line.svg" alt="icon" /> Community owned games</h2>
<p><span style="color:#ff8f23">When a game is owned by the <strong>community</strong>
everyone can do anything they like with it!</span></p>
<div class="gallery-flex">
<div class="card">
<h1>Modding</h1>
<h1><img alt="tools icon" src="images/tools-line.svg" /></h1>
<ul>
<li>Create and share a <strong>modified</strong> project
</li>
</ul>
<p>From <strong>simple</strong> modifications to
<strong>full</strong> conversions!</p>
</div>
<div class="card">
<h1>Sharing</h1>
<h1><img alt="team icon" src="images/team-line.svg" /></h1>
<ul>
<li><strong>Share</strong> copies of the game!</li>
<li><strong>Freely</strong> use the game's content on any platform!</li>
</ul>
</div>
<div class="card">
<h1>Learning</h1>
<h1><img alt="book icon" src="images/book-open-line.svg" /></h1>
<ul>
<li><strong>Learn</strong> how the game is built by looking
<strong>under the hood</strong>.</li>
</ul>
</div>
<div class="card">
<h1>Collaborating</h1>
<h1><img alt="service icon" src="images/service-line.svg" /></h1>
<ul>
<li><strong>Participate</strong> in the game's development by
<strong>improving</strong> it and/or giving
<strong>feedback</strong>.</li>
<li><strong>Create</strong> or
<strong>improve</strong> translations.</li>
</ul>
</div>
<div class="card">
<h1>Preserving</h1>
<h1><img alt="fingerprint icon" src="images/fingerprint-line.svg" /></h1>
<ul>
<li>Help port the game to new platforms and ensure it
<strong>lives forever</strong>.</li>
</ul>
</div>
<p></div></p>
<h2>How is this achieved?</h2>
<div class="gallery-flex">
<div class="card">
<h1>Sharing</h1>
<h1><img alt="team icon" src="images/team-line.svg" /></h1>
<p><strong>Everything</strong> needed to make the game:</p>
<ul>
<li>Code</li>
<li>Music</li>
<li>Art</li>
<li>3D models</li>
<li>Documentation</li>
<li>...</li>
</ul>
<p>Is made <strong>available</strong> to <strong>everyone</strong>
with full permission to <strong>share</strong> and
<strong>remix</strong> (and even make a new game from it).</p>
</div>
<p></div></p>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,53 +0,0 @@
/* CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
To the extent possible under law, the person who associated CC0
with this work has waived all copyright and related or neighboring
rights to this work.
<http://creativecommons.org/publicdomain/zero/1.0/>
*/
/* Brand colors
LibreGaming Orange: #FF8F23 (for emphasis?)
LibreGaming Blue: #4FBAD5 (for links?)
*/
.text-orange {
color: #ff8f23;
}
.text-blue {
color: #4fbad5;
}
html { /* center HTML and reduce width */
background-color: black;
margin: auto;
max-width: 75em;
}
body { /* establish document colors and font */
background-color: #1c1b22; /* dark grey background */
color: #dee2e6; /* off white text */
font-family: Roboto, Arial, sans-serif;
padding: 1em;
}
strong {
color: #ff8f23;
}
/* fit images to document */
img {
height: auto;
max-width: 100%;
}
/* branded styling for links */
a {color: #4fbad5;}
a:link {text-decoration: none;}
a:visited {text-decoration: none;}
a:hover {text-decoration: underline;}
a:active {text-decoration: underline;}

444
style.css Normal file
View File

@ -0,0 +1,444 @@
/* SPDX-License-Identifier: GPL-3.0-or-later */
/*!**************************************************************************************************!*\
!*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/responsive-nav/responsive-nav.css ***!
\**************************************************************************************************/
/*! responsive-nav.js 1.0.39 by @viljamis */
.nav-collapse ul {
margin: 0;
padding: 0;
width: 100%;
display: block;
list-style: none;
}
.nav-collapse li {
width: 100%;
display: block;
}
.js .nav-collapse {
clip: rect(0 0 0 0);
max-height: 0;
position: absolute;
display: block;
overflow: hidden;
zoom: 1;
}
.nav-collapse.opened {
max-height: 9999px;
}
.nav-toggle {
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
}
@media screen and (min-width: 40em) {
.js .nav-collapse {
position: relative;
}
.js .nav-collapse.closed {
max-height: none;
}
.nav-toggle {
display: none;
}
}
/*!*******************************************************************************************************************************************!*\
!*** css ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./src/scss/styles.scss ***!
\*******************************************************************************************************************************************/
* {
box-sizing: border-box;
}
html, body {
margin: 0;
padding: 0;
}
html body {
background-color: #1c1b22;
}
body {
font-size: 1.25rem;
font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
line-height: 1.4;
color: #dee2e6;
}
h1, h2, h3, h4, h5, h6 {
font-family: inherit;
}
h2 {
font-size: 2rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
a {
text-decoration: none;
color: #ff8f23;
text-decoration: underline;
}
a:hover {
color: #daf2ee;
}
a:visited {
color: #ff820a;
}
a:active {
color: #fff;
}
.text-lightblue {
color: #b6e2ee;
}
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
margin-bottom: 5px;
font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-weight: 900;
line-height: 1.4em;
color: #dee2e6;
}
h1, .h1 {
font-size: calc(1.4375rem + 2.25vw);
}
@media (min-width: 1200px) {
h1, .h1 {
font-size: 3.125rem;
}
}
h2, .h2 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h2, .h2 {
font-size: 2.5rem;
}
}
h3, .h3 {
font-size: calc(1.34375rem + 1.125vw);
}
@media (min-width: 1200px) {
h3, .h3 {
font-size: 2.1875rem;
}
}
h4, .h4 {
font-size: calc(1.3125rem + 0.75vw);
}
@media (min-width: 1200px) {
h4, .h4 {
font-size: 1.875rem;
}
}
h5, .h5 {
font-size: calc(1.28125rem + 0.375vw);
}
@media (min-width: 1200px) {
h5, .h5 {
font-size: 1.5625rem;
}
}
h6, .h6 {
font-size: 1.25rem;
}
.lead {
font-size: calc(1.28125rem + 0.375vw);
font-weight: 300;
}
@media (min-width: 1200px) {
.lead {
font-size: 1.5625rem;
}
}
.container {
max-width: 1200px;
margin-left: auto;
margin-right: auto;
}
@media (max-width: 78.75em) {
.container {
margin-left: 15px;
margin-right: 15px;
}
}
.full-width-container {
max-width: 100%;
margin-left: 15px;
margin-right: 15px;
}
.header {
width: 100%;
height: 56px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
background: #212529;
color: #FFF;
display: flex;
flex-direction: row;
align-items: center;
padding: 0 16px;
}
.header .brand {
margin-left: auto;
padding-left: 1em;
padding-right: 1em;
text-decoration: none;
}
.header .brand > h1 {
color: #4fbad5 !important;
display: inline-flex;
align-items: center;
font-size: calc(1.2875rem + 0.45vw);
margin: 0;
}
@media (min-width: 1200px) {
.header .brand > h1 {
font-size: 1.625rem;
}
}
.header .brand .brand-img {
margin-right: 0.5rem;
}
.header .brand .second {
color: #ff8f23 !important;
}
.header .lang-select {
display: inline-flex;
vertical-align: middle;
margin-left: auto;
}
.header__menu-toggle {
background: none;
border: none;
width: 24px;
height: 24px;
padding: 0;
margin: 0 24px 0 0;
color: #FFF;
}
.side-nav__content {
padding-top: 32px;
flex: 1;
list-style: none;
padding: 0;
margin: 0;
overflow-x: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.side-nav__content li {
min-height: 48px;
line-height: 48px;
}
.side-nav__content li a:hover {
background: #343a40;
}
.nav-collapse a {
color: #dee2e6;
text-decoration: none;
width: 100%;
background: rgba(0, 0, 0, 0.7);
border-bottom: 1px solid #212529;
padding: 0.7em 1em;
float: left;
}
.hero {
border-radius: 12px;
background: linear-gradient(to right, #159957, #155799);
min-height: 300px;
width: 100%;
color: white;
justify-content: center;
flex-direction: column;
flex-grow: 1;
padding: 1.25rem;
display: -webkit-flex;
display: flex;
-webkit-align-items: center;
align-items: center;
}
.hero > h1 {
margin: 0;
}
.hero .message {
display: -webkit-flex;
display: flex;
-webkit-justify-content: center;
justify-content: center;
-webkit-align-items: center;
align-items: center;
letter-spacing: 5px;
}
.posts ul li {
list-style: none;
margin-bottom: calc(1.525rem + 3.3vw);
}
@media (min-width: 1200px) {
.posts ul li {
margin-bottom: 4rem;
}
}
.posts ul li a {
display: -webkit-flex;
display: flex;
text-decoration: none;
}
.posts ul {
border-top: 1px solid #495057;
padding-left: 0;
padding-right: 0;
padding-top: calc(1.625rem + 4.5vw);
}
@media (min-width: 1200px) {
.posts ul {
padding-top: 5rem;
}
}
.posts .left {
line-height: 1em;
display: -webkit-flex;
display: flex;
flex-direction: column;
}
.posts .date {
color: #4fbad5;
margin-bottom: 0.3125rem;
margin-right: 1em;
text-transform: uppercase;
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
.posts .date {
font-size: 1.5rem;
}
}
.posts .year {
color: #fff;
}
.posts .title {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
.posts .title {
font-size: 2rem;
}
}
.posts .right {
line-height: 1.15em;
}
.lg-title span {
background-color: #f8f9fa;
padding-top: 0.2rem;
padding-bottom: 0.2rem;
padding-left: 1rem;
padding-right: 1rem;
border-radius: 22px;
color: #343a40 !important;
border: 3px #6c757d solid;
display: inline-flex;
}
.lg-title .icon {
margin: 0;
padding-top: 0 !important;
padding-bottom: 0 !important;
}
.lg-title .icon:before {
position: relative;
top: 0;
left: 0;
bottom: 0;
content: "";
margin-top: -3px;
margin-bottom: -3px;
width: 64px;
margin-right: calc(1.2625rem + 0.15vw);
margin-left: -30px;
border-radius: 100%;
}
@media (min-width: 1200px) {
.lg-title .icon:before {
margin-right: 1.375rem;
}
}
#description {
width: 100%;
display: -webkit-flex;
display: flex;
flex-direction: row;
padding: 2em;
column-gap: 20px;
border-width: 0.5em 0 0;
border-style: solid;
align-items: center;
justify-content: center;
border-image: linear-gradient(139deg, #fb8817, #ff4b01, #c12127, #e02aff) 3;
background-color: #29008a !important;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.25), rgba(255, 255, 255, 0));
}
#description .tile {
border-left: 7px solid #adb5bd;
width: 20em;
padding-left: 1.4em;
padding-right: 1.4em;
padding-bottom: 2em;
background-color: rgba(0, 0, 0, 0.9);
}
#description .tile .content {
margin: 0 auto;
max-width: 280px;
}
#description .tile .content p {
margin: 0 auto;
}
#footer {
display: -webkit-flex;
display: flex;
justify-content: end;
margin-top: 3em;
padding: 2em 1em;
}
#footer ul li {
list-style: none;
display: inline-block;
margin-right: 0.3em;
}
img {
height: auto;
max-width: 100%;
}

View File

@ -1,19 +0,0 @@
<!DOCTYPE html>
<!-- SPDX-License-Identifier: CC0-1.0 -->
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{% block title %}{{ config.title }}{% endblock title %}</title>
<link href="{{ config.base_url | safe }}/style.css" rel="stylesheet">
</head>
<body>
<main class="container">
{% block content %} {% endblock %}
</main>
</body>
</html>

View File

@ -1,6 +0,0 @@
{% extends "base.html" %}
<!-- SPDX-License-Identifier: CC0-1.0 -->
{% block content %}
{{ section.content | safe }}
{% endblock content %}

View File

@ -1,7 +0,0 @@
{% extends "base.html" %}
<!-- SPDX-License-Identifier: CC0-1.0 -->
{% block title %}{{ page.title }} - {{ super() }} {% endblock title %}
{% block content %}
{{ page.content | safe }}
{% endblock content %}