lichess.org
Donate

The introduction of swiss and round robin for tournaments on lichess

@Toadofsky

It's a lot simpler than that.

1) problem: playing rapid and classical in an arena format doesn't make sense. Those are, at best, blitz tournaments.
2) solution: use a swiss format instead.

Asking people who request a swiss format to write the code for it is thoroughly unreasonable: we don't require proof that it would work, since there are many existing implementations. As said: there have been working existing implementations since the mid 90's. (FICS and ICC both had/have working implementations.)

And the swiss format itself needs to further argument. It would definitely solve the problem of players requesting it. (Most of whom aren't software developers.)

I'd say that "write the code yourself" is the worst possible way of ignoring your users.

It begins with convincingly saying "yes, we really want this to happen!" Looking for skilled coders to write it is step 2. But that will never happen as long as we pretend there is no problem or that it can't reasonably be solved.
#151 And the onotological debate begins...

Who *really* wants *what* to happen? Again I refer to the XY Problem: running a few tournaments per day for a paid site like ICC (or a small site like FICS) is different than simultaneously running multiple 50+ player events. The problem definition is lacking and possibly even wrong.

TDs would love to run events similar to those typically hosted OTB as a special case. Some are doing backflips to make this possible until *someone* develops tooling to make things easier. Lichess does offer an easy-to-use API to simplify common problems, like reporting of results:
lichess.org/api#operation/gamesByUsers

Lichess also offers an API for you to produce challenges on players' behalf. I have not yet fully tested this, but if you were to register an OAuth App and players were to register with it, you could automate the game creation:
gist.github.com/ddugovic/a77e91407a564dd70630e8f87e4ddd6e

Lichess provides an example OAuth Application for developers like me who are unfamiliar with OAuth but are otherwise competent. Theoretically anyone could copy this tool and produce something better with some kind of tournament manager capability. I am quite busy however the world is full of developers so if someone knows a college student and can pay them in pizza or research credits or something, maybe that's the way to go? I am having a difficult time gauging interest given how little effort has been exerted other than to argue:
github.com/lichess-org/api/tree/master/example/oauth-authorization-code
@Tranq2 #142

In this post everything is said what the most club players do and want - also in the internet because of corona-crisis.

If round robin and swiss tournaments could be implemented, it means a greater variety or possibilities. Not better or worse. If rr and swiss tournaments does not work for a player, he should not take part. The same happens for a small group of club players organising an Arena Tournament. If this doesn't work in their opinion, they won't do it again. Thats democracy.
So direct swiss and round robin support does not seem likely from this thread.

How about additional enhancements to arena though?

Both #31 @xK4LIBUR and #80 @arcticpenguin offered ideas at how additional options could be provided on arena configuration (maybe restricted to clubs only?) that would maybe approximate some of the features of round robin / swiss.

1) Ability to delay pairings until a round is completed.
implies introduction of optional controlled rounds with optional parameter number_of_rounds - default no restriction as now

2) Control number of duplicate pairings.
implies introduction of optional parameter number_of_repairings - default no restriction as now(?), 1 = only pair players once, 2 = pair players twice (one white / one black)

3) Ability to turn off beserk
exists already

4) Ability to turn off streak bonus
implies introduction of optional parameter allow_streak_bonus - default yes, no allows for conventional points scoring with no streak bonus

With these options we can do something like:

Arena Swiss-like option is e.g. for 10 players
⦁ number_of_rounds = 6
⦁ number_of_repairings = 1
⦁ no berserk
⦁ allow_streak_bonus = no
⦁ wait between rounds is down to tournament creator weighing up time limit / duration when setting up - a new round only starts when all games in current round are finished. Lightweight pairing mechanism looks to pair players on the same points that have not already played.

Arena Round robin-like option is e.g. for 4 players
⦁ number_of_rounds = 3
⦁ number_of_repairings = 2
⦁ no berserk
⦁ allow_streak_bonus = no
⦁ wait between rounds is down to tournament creator weighing up time limit / duration when setting up and availability of an opponent you have not already played

Arena like current e.g. for 10 players
⦁ number_of_rounds = none
⦁ number_of_repairings = 1
⦁ berserk as required
⦁ allow_streak_bonus = yes
⦁ wait between rounds managed as presently

I'm just trying to come up with a practical way forward that would build on what is there already and hopefully require less work to implement than full blown swiss and round-robin.

How viable is this?

@toadofsky, @thibault

(Errors and omissions excepted :-)
Implementing no duplicate pairings in arenas with few players might actually be difficult task - you should actually implement something like Swiss pairings, maybe little easier.
@tranq2 #154 Let's hope these smaller steps can be a way to make everyone happy!

@Toadofsky #152 Well, as I said earlier, we did an attempt. Another member and I did a full week of spare time coding a website and trying to automate pairings and standings through Git Bash and Python. This is the site we came up with (in Dutch I'm afraid): sv-vredeburg.nl/Paastoernooi
As you can see, it provided a guide to create a token, a chat at the side which deletes messages every 10min (not practical), the rules for the six variants, the standings and clickable games to get you there at once with results updating semi-live. We were very enthusiastic, thinking this would be a great success.

But it wasn't really. The tokens were a pain in the ..., people stilll couldn't get to their games and the 2h tournament ended 70min later than expected due to all the problems. If you're white, the Lichess homepage asks you to join the game. But if you're black that doesn't happen apparently. Some walked away, some said "don't you have a plan B?" Well, this IS plan B, because plan A is to do it all on Lichess ;-) Sure, we as organisers did learn from it, and next time we'll be even better prepared. Hopefully the participants as well.

We really rather have plan A. The Arena format is taking its toll in the number of participants, and I'd love to test any Swiss/RR out. But I can't code it in a language I'm not familiar with. If I learn that now, I certainly won't code in "best practices", sorry.
#156 Ah... thanks for this insight and detailed example and anecdote. I agree that OAuth is challenging to figure out and test; and the bug on Lichess' side that you are reporting didn't help either.

For those OAuth etc. reasons I too would prefer to see round-based tournament formats on Lichess (including knockout and Swiss, maybe RR) although (so others in this forum don't get the wrong idea) I have many things to learn, even having an advantage of previously contributed code to Lichess. My plan with this has been:
1. Develop and test knockout events to discover most of the coding, testing, scalability, and maintenance problems
2. Extend that same code to implement either knockout or Swiss, hopefully without introducing maintenance problems

... but it's a large endeavor and it could fail. I'm also uncertain what burden the impending Scala 3 release brings (or it might simplify this).
@aidanbestieamin do you think it can solve OP issue?
Just in case you forgot it: "The introduction of swiss and round robin for tournaments on lichess"

This topic has been archived and can no longer be replied to.