lichess.org
Donate
solar system

Guillermo Ferla

Armchair Architecture

Software DevelopmentLichess
If you had to start Lichess from scratch, what would you change?

Thanks to @arex for delivering his TNG Conference presentation, referenced in Thibault's blog post. For purposes of providing a contrasting opinion I'll give it a go, but first...

When we think of Lichess, what do we think of?

  • A hobby project to learn new technology
  • A community of players who want to learn, play, broadcast, study, and coach the game
  • A load test which pushes limits of the tools it was built from (perhaps someday "build Lichess" will be a speedrun category)
  • A forever free ecosystem of APIs, tools, and public databases which inspire collaboration
  • A forum for civil discussion on chess-related and off-topic concerns

What technical concerns have we had over the years? Of course I'd encourage watching Thibault's 2017 TNG presentation but here is my recollection:

  • Scalability (stability and performance which eventually made Lichess 2 necessary)
  • Onboarding (learning and sometimes debugging various frameworks; encouraging forks and upstream contributions)
  • Backward compatibility (attempting to keep features forever)

What did we do surprisingly well?

  • Test coverage with CI coupled with code organization (modular and expressive)
  • Resist urge to release new features which we are unprepared to support
  • Listen and respond to user feedback; coordinate with real-life event coordinators
  • Graciously accept code contributions (arena pairing, lag compensation, cheat detection)
  • Listen to our benevolent dictator (free software projects thrive when leaders are few)

With that context set, now the question: if I had to start Lichess from scratch, what would I change? Not much!

  • Make fewer supported browser commitments supposing I wanted to develop features faster (e.gs. opening puzzles, a world map showing game activity, a multi-board simul client, etc.) and could be tone-deaf to browser-specific complaints
  • Earlier API support; where feasible, offload work to 3rd party developers (which is only feasible if I own the API and they are responsible for their products)
  • Not introduce the paranoia-inducing "?" next to player ratings (keep the design we had in Lichess beta)
  • Abdicate control back to Thibault; Lichess has done surprisingly well over the years and will continue to flourish, so why change a good thing? Sure, developers enjoy making features other people can use, but project maintenance is hard work and involves difficult decisions. Go forth and build things and then see what you recommend!

Photo credit: Guillermo Ferla