Happy New Year!
Like that, 2022 is over! Is it just us, or does it feel like it has flown by? 2022 has been an unprecedentedly eventful year for chess, and it’s been no exception for us at Lichess. Thank you to everyone who makes it possible – to all those who volunteer, to all those who share their spare CPU power, to all those who spread the word about Lichess, and of course to all those who financially support us.
Here’s a recap of some of the work we’ve done over the course of the year.
The ever-expanding puzzle set is now also organized by the openings that gave rise to the tactics. Look for your favorite openings on the overview page or follow the recommendations directly from the analysis board.
A new preference page gives you granular control over notification types and how they're delivered. Streamers going live, study invites, and forum mention notifications are now available for devices & push to your browser. You can also once again find the option to receive a daily recap email of your correspondence games we added earlier this year.
A new push-to-many system allows efficient delivery of streamer live notifications to thousands of online subscribers. We have plans for additional multicast notifications in the future.
We optimized the opening explorer to the point that it can now serve all rated Lichess games (rather than a sample, as before) without requiring more expensive hardware. You can now see what players in the lower rating brackets are playing, more easily do sound statistics across rating groups, and are more likely to find useful numbers and games deep into your favorite lines. Along the way, we made small improvements, like adding performance ratings to the personal opening explorer and adding arrows to indicate moves in referenced games.
A new PGN viewer makes for better embedded games in forum posts and is available as a standalone widget for third-party projects. The coordinate trainer now has a reverse mode where you can practice notation by naming the highlighted squares and more options to customize your training.
There’s also been countless bug fixes, progress on planned features, and many smaller improvements. We’ve been slacking on keeping the changelog in sync (sorry, check back soon!), but until then, or if you want to follow everything live, check out the commit log on GitHub. The commit messages are often understandable even for the non-programmers among us.
In July, @arex gave a talk at the TNG Big Tech Day 2022. It gives a great overview of the latest state of our backend architecture.
https://www.youtube.com/watch?v=crKNBSpO2_I
One of the mammoth tasks of the last few months has been upgrading the version of Scala (the programming language that much of Lichess uses) from version 2 to version 3. Now that we’re out of the woods there, we’re pleased to say there have been major performance gains across the board and that Lichess is running more efficiently than ever!
However it was not all a smooth ride, and the migration surfaced some long-standing issues! In the first updated versions we started to notice erratic CPU spikes after 24 hours of uptime.
Red lines indicate updates/restarts. Frequent bug fix releases after the initial migration masked the issue for a while.
After a call for help, and thanks to the amazing community experts and discussions on forums across the web, we nailed it to bad JVM code cache tuning.
As stressful as this was, we’re ultimately lucky it happened, because we learned a lot about profiling the JVM and got useful hints along the way. Using jvm-async-profiler we optimized our production setup and are pleased to announce that lila is now using half the CPU compared to previous versions, for similar use.
These improvements were made with the community on our public discord, where you can find (and help) our developers. A more in-depth of our JVM issues can be found on thibault’s blog, as well as his opinion on the improvements Scala 3 brings to Lichess.
We switched from rollup to esbuild and yarn 1 to pnpm, for major build time improvements, on the order of 10 minutes down to 2 minutes for a clean build. A new custom build script gives much more convenient watching builds for and across the frontend packages.
Other notable changes include the addition of a new server lila-http (Rust, axum) to offload large tournaments, the addition of an API that allows using external engines on the analysis board (official providers under development), tweaks to lag compensation (now also taking into account low-level WebSocket pings), and a fishnet update bringing the latest Stockfish 15.1 for server-side analysis.
We’re typically fairly quiet on specifics around moderation, but this year we have decided to pull back the curtain a little on total activity, to highlight the huge contribution that our moderation team makes to keeping Lichess a fun place to be. In 2022, our team closed over 650,000 reports, including 91,000 reports of cheating, almost 340,000 reports of communication infractions, 82,000 reports of sandbagging or boosting, and 138,000 miscellaneous reports for other disallowed behaviors. Many of these reports were created automatically by Lichess itself, but a huge number also come from you, the users of Lichess. We have many systems in place but your reports really do help us keep Lichess fun for all. Here's more about reporting, fair play, and communications guidelines.
Reports are not the only mechanism we use to identify where actions need to be taken, but in total, combined with our other systems, Lichess flagged over 61,000 accounts for cheating using external assistance, flagged over 25,000 accounts for sandbagging or boosting, sent almost 200,000 warning messages to users for various infractions, removed chat permissions from 60,000 accounts, and communicated with users over 33,000 times through our appeals system.
These numbers may seem high to some, or low to others. Lichess has many millions of active users with millions of games played each day. The vast majority of users follow the rules, are well-behaved, and play fairly, so thank you!
We also added a new AI-based cheat detection tool, Kaladin, that we spoke about in the mid-year update.
The Lichess team is always growing, which is both great in general, and necessary with the ever-growing size, complexity, and offerings of our site, mobile app, and other software. You can read about 25 of our contributors in our Advent Calendar post!
As well as growing in size, we’ve also been putting a huge amount of effort into updating our organisational structure and processes, to ensure we keep offering a great platform to all our users (and contributors) for the future.
Some of the organisational highlights this year include:
One of our most critical councils is the Finance Council, led by a Lichess trustee who’s also an economist. The Finance Council ensures Lichess can stay financially viable both today and in the future, considering future risks, making projections, keeping our books up to date, and communicating with our independent accountants and auditors.
Speaking of books, we believe now is a good time to share more details about our finances. As mentioned in a blog publish in October, we retain the services of a French accountancy firm to compile and sign off our annual accounts, which are then reviewed by an independent auditor. This happened for the first time in 2021, and you can see our 2021 accounts.
For the oddballs who don’t enjoy reading French charity accounts, we’ve summarised the important numbers below.
markdown
FY 2021 | EUR
--- | ---:
**Income** |
Donations | 552,701
Merchandise | 19,226
Services | 6,613
Interest | 383
Other income | 177
**Expenses** |
Salaries and employer taxes | 207,933
Servers and hosting | 68,364
Admin fees | 24,654
Prize payouts | 24,434
Content expenses | 20,308
Other admin costs | 9,549
Other charges | 4,855
Depreciation | 1,945
Equipment | 845
**Totals** |
Income | 579,101
Expenses | 362,887
Surplus | 216,214
Our 2022 numbers will probably be published in the spring (or June at the very latest). At this point, we believe they should show a smaller surplus than the previous year, due to higher expenses, but still a surplus, meaning that our income exceeded our expenses, allowing us to save for bad months. A surplus is always better than a deficit, but with the global inflation we expect a significant increase of our expenses in 2023.
Some interesting facts:
At Lichess we cherish freedom in all its forms. The recent events at Twitter reminded us to create a Mastodon account. Mastodon is a FOSS alternative to Twitter. We encourage all our Twitter followers meet us there.
Thanks to the community which put on great tournaments and events on Lichess! Here’s some of the higher profile events that Lichess hosted, supported or organised:
You may have met some of us at the Montreal meetup. Thanks for coming!
We also worked with a number of other organisations on various projects:
We hope you enjoyed Lichess in 2022 and wish you a happy new year!