Legacy client not working


You operate on the assumption that anyone on FAF can move dev resources to other projects. The main person responsible for Java Client was going to work on it regardless of what anyone else said (people already told him it was dumb when he started) and he wasn't going to change that. The people that moved in to help him after were people that preferred java and have openly said that they refuse to work in python.

There is no "simply refactor and improve it bro." There was nothing prohibiting work on python. Python was not worked on because no one wanted to work on it. To the point we couldn't even find a dude to just maintain it and iron out basic bugs for like a period of 2 years. It broke because no one wants to bother with it.

Dev resources are only wasted if there was an opportunity cost to a decision. If there wasn't, then there was nothing to waste. In fact forcefully prohibiting a dude to do his own thing which may or may not turn into a good thing down the road is in itself a waste.

It was made unofficial because no one was working on it for 2 years. Making the face of your community something no one even wants to work on and has not worked on in forever is terrible practice. Most of the improvements to Java Client were only possible once you forced everyone to use it and actually explain what they saw as terrible. And guess what? A lot of those things got improved upon because there are devs that actually do things on the client.

I do agree on your UI/UX complaints about things like the vault, though.


Actually gonna dump my old suggestion on replays here from old forums:

Couldn't we just do a notification pop up after some condition (lose 3 games) is met? "Having trouble on the matchmaker? Try watching some replays in the online replay section to find improvements!"

Part of the problem is probably that replays are stored under "Vault" now which IMO is not intuitive for the general user. There is also "online replays" and "live replays" and "local replays" which are also needlessly confusing.

I would say a tab specifically called "Replays" would be better with "All (or FAF) Replays" (Replay Database?), "Ongoing Games", and "My Replays" would be better. Ideally you could be able to go to the "Leaderboards" tab and right click a name to look up their "replays" but that's just me dreaming.


I was planning on pulling the replays out and making the search function more intuitive as the next project just an FYI


Things only need work when they are bad or broken. I don't work on my truck every day. Outside of some simple maintenance every few months, it does what it is supposed to do without any work required from me. If my neighbor is constantly working on his truck I don't assume that his truck is better than mine, I assume it is worse because it requires a lot of work. That's the same way I feel about these clients.

The python client works just fine and occasionally requires some maintenance every few months. Some random person comes along and fixes it rather quickly. A couple of the tabs don't work because they use old PHP stuff that was deleted for whatever reason. I doubt it would take much to get them working with the new API, I can use the API in my web browser so it seems pretty simple, but nobody cares about those tabs anyway. The Java client is constantly getting lots of work because it sucks and still needs a lot of work.

On the topic of client tabs. It seems pretty stupid for these things to even be implemented in the client. It would be most efficient to implement them as web pages. This would make it possible to have replays, mods, maps, and leaderboards on the FAF website without requiring any client. The clients could simply display these pages and the tabs would be consistent and functional in both clients for free. This effort doesn't have to be duplicated and shouldn't be. Blodir created an online replay tool, and the leaderboards are already online, so this is clearly possible.

I can see an immense amount of work going into the Java client but I still see all of the issues I mentioned remaining year after year, most of which were reported even before it was made the official client. I can see virtually no work going into the Python client yet it remains mostly functional and preferred by many people. I'm fairly confident it would take less work to fix the tabs in the python client and keep it running than to bring the Java client up to my standards. It would even be mostly free if the tabs were online.

Of course, you cannot force people to do this. If they adamantly refuse to work on the Python client for whatever reason then that's how it will be. I can also continue to adamantly believe that is a stupid thing to do and complain about it. I am equally stubborn and refuse to open FAF anytime the Python client is broken and the Java client still sucks. I see them wrestling with Java and JavaFX constantly so it is strange for them to prefer it. In this language and framework, it is apparently a monumental task just to display a chat window and user list without using all of your RAM and CPU. Anyone who can program in Java can program in Python and vice-versa.

Yes, I am grumpy and lazy and won't do any work on either client myself. People do work for free and I complain about it. So it goes.


"Preferred by many people." Only like 5% of FAF continued to use the Python Client within weeks of deprecating it. Most people just don't care what they use and will just take the one that you put in front of them, really. Or they just do prefer the Java Client.

I don't really care about the client/web-based replay stuff, I just want the UX experience better. Whichever way brings that in is good to me.


Why is it always the guy who says "could have simply been refactored and improved" and "I doubt it would take much" that never contributed single line of code.

If it's all THAT simple, well, could you show us? We'd like to see.


@ThomasHiatt said in Legacy client not working:

  • Java client has cost FAF a very large amount of developer time for an inferior and unneeded product. Dev power is supposedly scarce around here and this is an egregious waste. The python client could have simply been refactored and improved. Even after several years of work the Java client is not really any better.

"Inferior": subjective
"unneeded": no
"not really any better" : repeating urself
"could have simply been refactored": so simple that nobody showed up for like 2 years after repeated calls for more python devs in the forums;

If was repeated about a 100 times already, but the python client was so abandoned that it actively blocked improvements to the entire rest of the FAF infrustructure.

Your nice idea about making websites today for vault tabs is only easily possible today because the Java API exists, which was basically blocked from being improved upon by the python client.

Java client reduced backend maintenance cost (which is more important than all of the points in your list), made map gen improvements easier or even happen at all, makes TMM UI happen and will probably in the future wipe your ass for you while you sit on the toilet complaining about it without noticing.


I was sad, that 0.18.9 wasn't working anymore .... but (in the getting-better-java-client) I got a link to here.
Very happy you fixed it... good old python-client. Thx šŸ™‚

  • The client now can keep game files in cache like the Java client.
  • Fix fafbeta and fafdevelop updating issues.

Unofficial Python client 0.18.11

  • Now it is possible to browse and search mods/maps by name in the vaults. Looks pretty ugly, but works! (i hope so)

Unofficial Python client 0.18.12


@Gatsik I ask once more: why don't you publish your changes to Github? Other people might want to build on top of your changes.
We can make you maintainer of the project and you can build official releases.

"Nerds have a really complicated relationship with change: Change is awesome when WE'RE the ones doing it. As soon as change is coming from outside of us it becomes untrustworthy and it threatens what we think of is the familiar."
ā€“ Benno Rice


But they are on Github, aren't they? Because I'm not a programmer and, firstly, I don't want to spoil anything, and secondly, I don't know when I'll stop trying to fix it.

P.S. Updated the release binary of the previous post from here, so map search should start to work


Well you started with whats on Github. So obviously it is found by people who are interested in it.
Also: What's there to spoil? Right now the github version is majorly broken and you have fixes.

"Nerds have a really complicated relationship with change: Change is awesome when WE'RE the ones doing it. As soon as change is coming from outside of us it becomes untrustworthy and it threatens what we think of is the familiar."
ā€“ Benno Rice


For some reason, the leaderboard tab stopped working at some point. It used to just show the leaderboards web page from the FAF website. I think that is the ideal solution since it lets you look at the ladder league standings and stuff from within the client.


@Brutus5000 I mean I read the docs, and I'm sure my code is awful inconsistent in terms of these requirements, I didn't use logger as I'm not sure where it is needed, repetitions that probably could've summarized into some classes, etc.
I can do a pull request so someone who has expertise can review it if that is what you want from me.

@ThomasHiatt I was thinking about using those internal 'Air scouts', 'Tech 1', ... tabs to rename them and asking api, since the playerDivisionInfo is available here, but probably adding the website would be easier.


@Gatsik I took a look at your commits , and as a long-time Python client maintainer I officially bless them as good.

  • Display the leaderboards web page from the FAF website as leaderboards
  • Newstab: display images and links
  • Vaults tab: items' icons (known or unknown) are always shown

Unofficial Python client 0.18.13

Created a pull request so other people who might want to build on top of these changes are able to do this.


The pull request got merged and officially released by Strogo šŸ¾

"Nerds have a really complicated relationship with change: Change is awesome when WE'RE the ones doing it. As soon as change is coming from outside of us it becomes untrustworthy and it threatens what we think of is the familiar."
ā€“ Benno Rice


I have not enough acquaintances to test it properly (and too dumb to write unit tests), so here it is:

Unofficial Python client 0.19.1 omega TMM

If it's OK, then I'll do a pull request a little bit later, because I had connection issues today (but also I had the same issues with 0.19.0, so It shouldn't be related to TMM).
Anyway, It needs further work.

  • Forbid inviting those who are currently in game to party
  • Do not send "stop search" command as party guest
  • Display TMM ratings in the chatter's rank tooltip
  • Append correct TMM rating at game launch

Unofficial Python client 0.19.11 psi TMM