March 01, 2011 19:32

Programmers write open letter about Rybka-Fruit issue

Programmers write open letter about Rybka-Fruit issueRecently we published an article by David Levy, President of the International Computer Games Association (ICGA), about the cloning of chess engines. Meanwhile the ICGA Clone and Derivative Investigation Panel has been established, and today we received an open letter about the Rybka-Fruit case signed by fourteen chess programmers.

In his Attack of the clones, which we published on February 19th, David Levy expresses his concern about the cloning of chess engines. At the end of his article, he mentions the intention "to set up a forum for investigating prima facia claims of cloning in the world of computer strategy games". Four days later, Mr Levy let us know in a comment that the ICGA Clone and Derivative Investigation Panel has been established.

Most of the ongoing debate is about the Rybka-Fruit issue: the famous Rybka program from Vasik Rajlich was allegedly cloned from Fabien Letouzey's Fruit. We received the following open letter signed by fourteen chess programmers (including Letouzey himself), who support this claim:

Open letter to the ICGA about the Rybka-Fruit issue

Dear David Levy, Jaap van den Herik and the ICGA Board,

Recently the author of Fruit, Fabien Letouzey, wrote an open letter to the computer chess community where he raised the concern that Rybka 1.0 beta may be a derivative of Fruit 2.1 in this public post.

Since then it has emerged from highly respected sources like Zach Wegner, Bob Hyatt and others that there is a lot of evidence that has been accumulated over the last few years that Rybka 1.0 beta is a derivative of Fruit 2.1.

Zach Wegner has presented evidence of alleged significant copied/derived Fruit evaluations in Rybka 1.0 beta here.

A collection of evidence of the many cases of alleged copied/derived Fruit structure, code & data appearing in Rybka 1.0 beta has been put together in this PDF by Mark Watkins.

It is also worth considering that prior to Rybka 1.0 beta, previous Rybka versions were many hundreds of Elo points weaker than the Rybka 1.0 beta version that suddenly emerged in public in December 2005, just a few months after the open source public release of Fruit 2.1 under the GPL license. That same month Rybka beta entered and won the International Paderborn Computer Chess tournament.

The evidence alleges that by using and deriving code, data and structure from Fruit 2.1, Vasik Rajlich was able to make dramatic and huge progress with "his" program Rybka to the detriment of his fellow competitors. In our view this has made competitions involving Rybka grossly unfair.

As chess programmers we find this overwhelming evidence compelling. We believe Rybka is a Fruit derivative albeit an advanced one.

It is very likely that later Rybka versions have derived and benefited from Rybka 1.0 beta and hence in the circumstances our view is they should also be considered derivatives of Fruit 2.1 until proven otherwise.

We wish to make an official complaint to the ICGA that Rybka is a Fruit 2.1 derivative. Furthermore we believe it is a breach of the GPL license under which Fruit 2.1 was released.

We believe as an unauthorized Fruit derivative Rybka's entry into ICGA events has been contrary to the ICGA rules and the rules of fair play.

We ask the ICGA to carefully review the evidence, assess its validity, and act accordingly.

We note that the ICGA is intending on setting up a tribunal to assess such allegations and we believe this evidence should be strongly considered in that process.

In addition, we think the ICGA should in future insist that all authors of entries to ICGA events must submit to the ICGA the same executable(s), that is taking part in the ICGA event, where they can be stored for future analysis of potential derivative claims should they arise. Each author should also make a full and clear statement as to the originality of the entry, its contributors and any acknowledgements. Should justified suspicions exist authors must be willing to submit source code on a private and confidential basis to a select group of impartial programmers to privately determine source code origin.

Co-signed by the following chess programmers,
Fabien Letouzey, Zach Wegner, Mark Uniacke, Stefan Meyer-Kahlen, Ed Schröder, Don Dailey, Christophe Theron, Richard Pijl, Amir Ban, Anthony Cozzie, Tord Romstad, Ralf Schäfer, Gerd Isenberg, Johannes Zwanzger

An interesting question is, what punishments could be considered by the ICGA for anyone who is found "guilty" of a cloning or derivative offence? The answer can be found in the Charter of the ICGA forum:

[h] The ICGA shall consider the reports and recommendations of the Panel and shall at its sole discretion decide upon what action if any should be taken. The sanctions that the ICGA might take against those found guilty of cloning or creating a derivative include but are not limited to:

[i] Banning the guilty person(s) from participation in future ICGA events for any period deemed appropriate by the ICGA;

[ii] Publicizing, wheresoever it deems appropriate, the allegations and the names of those who have been investigated by the Panel and the findings of the Panel;

[iii] Recommending to other computer event organizers the exclusion of persons who have been found guilty by the Panel.

[iv] Annulling any titles that have already been awarded to programs that have since found by the Panel to have been clones or derivative programs, and demanding the return of any prize money paid to the offending programmer(s).

Peter Doggers's picture
Author: Peter Doggers


Arne Moll's picture

It all starts with the availability of information about the source code. As I noted in my article about the Firebird/Rybka controversy from about a year ago, the Rybka team haven't exactly cooperated in this respect so far. This is understandable from a commercial point of view but disappointing (some would say: suspicious) from a scientific point of view. I guess it goes to show once again that (computer) science and commercialism form a rather bad couple.

Delinquncy's picture

Some Rybka defenders are using the "source code" angle as a strawman on why Rajlich won't like to participate in the Panel against his accusers. But the ICGA would undoubtedly get an outside expert(s) to inspect any source code if it came down to commercial worries. They did so before, with Lion++ in 2006. The "long way around" from decompiling and disassembly took almost five years and a eccentric cast of characters, but the ball has now switched courts and Rajlich has to decide how he will play it.

Felix's picture

Hi Arne,

You speak about Vas, the rest of our team has nothing to do with engine programming. Publishing source code is nothing usual btw., it's not what you could expect. So far the "evidence" shown is not clear to me - is that really code from Rybka? There is nothing there and it looks more like just speculation to me.

Btw., you didn't have the right to use the Rybka logo for the news ;) But I hereby grant you the right to use it :)

Delinquncy's picture

The ICGA can name their own independent expert to sort out if these details are legit or not, assuming that is, Rajlich disputes them. The 20 page PDF they cite consistently cross-references the Rybka 1.0 binary, and then lists 100 lines of code from it, for doing iterative deepening. A text file linked in, contains about 1000 lines of assembly code with commentary, purporting as the evaluation function.

That's probably your principal take home line for the outside observer, the choice of evaluation features are *exactly* the same in Fruit and this Rybka version. If Rajlich can't dispute that, I suspect it will end difficult to argue that this Rybka was truly "original" in the sense held by the ICGA.

Whether then, Letouzey and FSF can get anywhere with their GPL, is a different matter. That's where "publishing" source code could finally be required, though a little untimely even if so. The ICGA investigation would keep source code secure and private if any were offered, with an outside expert. I think Arne's point is Rajlich himself could have chose decisive with his own initiative, and a long time back asked to ICGA to step in and mediate the eternal Fruit-Rybka issue if he wanted.

BTW: Wikipedia uses Rybka logo, and generally logos, as fair use. You should complain like FIDE and demand the Rybka logo appear bigger! :)

JM's picture

Hi Felix,

I am curious what you think the general process should be to determine the originality of a chess engine? In my opinion it is clear that such a process is needed. The current situation is undesirable: anyone who is accused should have a fair chance to defend him or herself and clear his or her name. Do you agree with me on this?

How should any organisation, e.g. the ICGA, adjudicate on whether an engine is a clone/derivative or not? What is the best way to pursue an unbiased verdict? Maybe consulting programming experts without any previous links to or interests in computer chess? Or retired chess programmers?

Do you agree with the installation of the "ICGA Clone and Derivative Investigation Panel"? If not, how should the ICGA decide upon disputes?

Delinquncy's picture

Felix, to read the comments on your forum is to descend beyond the abyss. Casual misinformation about wild demands for Vasik's source code, doubletalk about him taking Fruit ideas when clearly the statement is that Fruit code was taken, denunciations of the ICGA as a kangaroo court (if two soccer teams have a dispute, the referee decides maybe FIFA overrules, but only the Rybka Forum would propose lawsuits "with no conflict of interest" to be final), not to mention persons like Nelson Hernandez who even believe the allegations but then manage to ignore the consequential conclusions regarding "theft" to say the least. Maybe Zach and this BB+ guy should be suing your forum for promoting that their work is a complete fabrication...

hanseman's picture

I am a total nitwit concerning the subject of chess engines, so please forgive me if I totally misunderstand. Do I understand correct that the commercial Rybka engine is in fact proven to be 'stolen' from an open source engine?

Delinquncy's picture

No, nothing is proven in the sense you probably mean, as it is natural not to pass judgement of proof until the one accused has exercised a right of reply. There is lot of evidence and Rajlich has been invited to respond to it, Levy mentioned this in his comment in the other post, but it was not mentioned here. If he refuses (or is too busy, like Fritz Reul was), I would guess the ICGA will likely ask an outside expert to ensure the current evidence is both legitimate and sufficient, and then make a summary declaration based upon their conclusion of the degree of the offense. Of course, Rajlich can present his case too, and then anything can happen.

Sergio's picture

"It is very likely that later Rybka versions have derived and benefited from Rybka 1.0 beta and hence in the circumstances our view is they should also be considered derivatives of Fruit 2.1 until proven otherwise."

Doesn't this say: Guilty untill proved innoncense?

Delinquncy's picture

No, it's just a precautionary principle. As an example, if someone is caught cheating in one tournament, they won't be allowed to play in another unless there is additional assurance against a recurrence (if they are allowed to compete at all). If Rajlich is found guilty with Rybka 1.0 beta, he will probably be requested to a make a full admission and apology to be reinstated in good standing for competition, irregardless of any later Rybkas.

What they are saying is that if Rajlich chooses to ignore the ICGA Panel, that this can be considered summary evidence against *all* Rybkas and not just the first one, so that they don't have to spend time sifting through every version, particularly when he had about 30 minor versions of Rybka 2, and probably none of them was the same as the one in the tournaments.

Minor error in the article: as of 2007, it is Dr Levy, not merely Mr Levy.

Isthere_Science's picture

Speaking about professional competition in sports, if someone is better than me, I had the right to break into his house, take some blood with me and analyse it in my own lab, after I found something I inform the public and call the suspect a cheater. Combining the allegation with the hypocrisy that the suspect and now verified cheater could well prove his innocence.

Is this what is actually happening between Hyatt et al against Vas Rajlich under the watching eyes of no other than IM Levy representing the ICGA?

mishanp's picture

I don't know much about the topic, but it's interesting to look at old interviews where Rajlich discussed the relationship between Fruit and Rybka. e.g. this is from 2005:

"20. Alexander Schmidt:

The increase in playing strength of the latest chess engines is unbelieveable. We have since some time with Fruit 2.1 by Fabien Letouzey a very strong open source engine. Do you see a relation between the published sources of such a strong engine and the increase of strength in computer chess in general? How much influence do the ideas of Fruit have on the future of computerchess?

Vasik Rajlich:

Yes, the publication of Fruit 2.1 was huge. Look at how many engines took a massive jump in its wake: Rybka, Hiarcs, Fritz, Zappa, Spike, List, and so on. I went through the Fruit 2.1 source code forwards and backwards and took many things.

It is a bit of a pity that Rybka won't make the same contribution to the computer chess community, but at the moment I must also think about protecting my secrets. It's the eternal struggle for a computer chess programmer.

21. Alexander Schmidt:

We had our first contact when I had questions about a similarity to Fruit in the search, others found similarities in the evaluation. Some people where a little bit suspicious that Rybka could be a clone of the open source engine. In the meantime it is clear that Rybka is no clone but you used ideas of Fruit (I guess all other serious engine programmers had a look at Fruit too). How strong would Rybka actually be if the Fruit code would have never been published?

Vasik Rajlich:

It's a good question. I don't want to get too specific about which ideas from Fruit I think are really useful, but they fall into two categories:

1) Very specific tricks, mostly related to search.
2) Philosophy of the engine (and in particular of the search).

Fruit could really hardly be more useful along both of these dimensions. Fabien is a very good engineer, and also has a very clear and simple conception of how his search should behave.

Anyway, if I really had to give a number - my wild guess is that Rybka would be 20 rating points weaker had Fruit not appeared."

Guillaume's picture

"Yes, the publication of Fruit 2.1 was huge. Look at how many engines took a massive jump in its wake: Rybka, Hiarcs, Fritz, Zappa, Spike, List, and so on."
"Rybka would be 20 rating points weaker had Fruit not appeared."

Why would he bother talking at length about Fruit and how influential it was if it only brought a +20 rating point boost? Is that a massive jump really? It almost sounds like a misprint. A chess player gets more from drinking a single coffee.

RuralRob's picture

Hmmm, I must be drinking the wrong brand of coffee.

Jef's picture

Maybe the misprint lies in "20". Was it not "200" instead ?

Delinquncy's picture

Other "period" literature:

20.06.2005, Stefan Meyer Kahlen
Q: After first results the new Fruit 2.1 could be very close to the best commercial chess engines, even to Shredder 9. What is more scaring for you, Fabien Letouzey himself or the GPL behind Fruit?

A: I have to admit that I have not yet downloaded and tested Fruit 2.1. From what I have heard so far it seems to be quite strong so I will certainly take a look at it. I have already had a short email conversation with Fabien. He seems to be a nice guy so there should be no reason to be afraid :-)
Also I see no problems with the GPL license behind Fruit. If others will be able to find some ideas in Fruit there is probably also some inspiration for me. As far as I know taking ideas from GPL licensed software is ok. The best motivation for me to further improve Shredder is, if someone is overtaking Shredder at the top of the rating lists or will beat Shredder badly in a match. So my personal judgement about Fruit is not negative but positive. The only negative point is that the clone problem in tournaments might be bigger now, but there should be a solution for this.

Letouzey himself: ”I don't think clones are that much of a problem, as they are easy to spot.”

iLane's picture

Didn't they just wrote this letter 6 years too late???

Alex's picture

I would recommend to compare the crucial sections of the two codes using functional graph comparison tool such as this (commercial, don't know if there is a similar free tool):

Gainsbourg's picture

The noose is tightening around Rajlich's neck...

ed's picture

The letter is signed by some heavy weights of computer chess programming. The damage to Vas' reputation is already done irrespective of the outcome of any ICGA investigation. The threat is stronger than the execution.

Wiebe's picture

In ancient times it was considered unfair to analyse adjourned positions. To me this is similar. Is it not the essence of any technical competition to understand, reuse and improve upon your competitors' ideas?
Commercial engine development being a dead end in any case, I strongly encourage every author to examine existing engines as much as they like if this helps them propel their chess engines to new heights.
Vas has given a boost to computer chess and him has to be given credit whatever the outcome of the ICGA investigation.

christos (greece)'s picture

Your post makes no sense to me.

Fabien was the author who "gave a boost to computer chess", by making Fruit 2.1 source code available to other programmers who could, to use your own words, "understand, reuse and improve upon" his ideas.

How did Vasik give a boost, when Rybka's source code is not available? Furthermore, when other people (perhaps?) attempted to reverse-engineer Rybka and impove it, he started hunting them around, calling people not to use those engines, ban them from competing in tournaments and rating lists, etc.

But he has not proved that those engines are really Rybka clones -- this is just a claim he makes.

All this when his own engine is probably derived from Fruit (!)

Remco G's picture

What is he accused of, copy and pasting actual source code, or reading Fruit's source, noting ideas and using them to improve Rybka?

If it's the second, why would that be illegal?

Frederick J's picture

It is against the terms of the GPL licence under which Fruit's source code was released. You can use Fruit's code and ideas if your work (the entire source code of the derivative work) is also released under a GPL licence. Once you choose to commercialise work which is based on work from a GPL open source project, you are in breach of the terms of the GPL.

Remco Gerlich's picture

Only if you take literal parts of the code. Getting ideas and them implementing them yourself "in your own words" is a gray area at most, I think copyright law allows it (and therefore so does the GPL).

Of course, the devil is in the details.

Delinquncy's picture

The key question is what "implementation" means. The standard example is taking a book in French and translating it to Dutch. This still falls under copyright (derivative work). If all Rajlich did to implement is a "translating" in mechanical manner large chunks of Fruit code to work with his "own" engine, even by typing it all himself, then by my account he fails the test. The GPL evidence might be there or not, but the news here for a chess site, was about the ICGA which uses a different conception in deciding clones.

test's picture

From the pdf:

"... no code which has a demonstrative influence on the performance of the program in question may be borrowed from a competitor ...

Expanding on this, merely re-typing and/or "translating" code (possibly while tweaking/tuning some of the numbers) is also not likely to pass an "originality" test.

There is not, however, a cleanly delineated line between "code" and "ideas" (for instance), and I really can't give much guidance for that.

This report can perhaps be seen as directed at a hypothetical tournament arbitrator who has been asked to determine whether Rybka 1.0 Beta is sufficiently original to allow it to be in the same event as Fruit 2.1.2

Furthermore, this document is fundamentally incapable of anticipating even legitimate explanations of the evidence here enumerated, and as such, is more of a call to further conversation than the final word."

RdC's picture

I believe it's a case of using ideas from Fruit to improve Rybka. In the particular rule-set of engine v engine competitions, that can be considered against the rules if the resulting Rybka closely resembles Fruit. In the more general world of software licensing, publishing the source code of a program doesn't necessarily give rights to third parties to use the software ideas for commercial use.

Stefan's picture

Mark Uniacke, Stefan Meyer-Kahlen, Ed Schröder, Amir Ban... Quite an impressive list. But what about Bob Hyatt? He is cited in the letter, but apparently did not sign!? Anyway, Vasik Rajlich seems to have a huge problem now.

Harvey Williamson's picture

Bob could not sign as he is on the Secretariat of the ICGA Panel.

Delinquncy's picture

Gian Carlo Pascutto did not sign it. Some other big names too missing.

I see now Shay Bushinsky and Volker Bohm are added, and Bob Hyatt is ripping apart a version of Rybka *before*Fruit* and showing it has gobs of Crafty code stuck in it.

Ben's picture

In the test determining between copying of code and ideas, it also seems to me imminently fair that the burden has to be on Fruit for any possible transgressions. In situations where someone copies the ideas, but there is only one sensible way of implementing the code, that should not count against the Rybka author. Otherwise the Fruit author has basically copyrighted that idea forever to everyone else's detriment. It is like in criminal evidence in US law, evidence gathered by illegal means must be suppressed as well as all other evidence that derived from the original, UNLESS the subsequent evidence would likely have been found anyways by other methods. The analogy? If the Rybka author was given the idea from the legal Fruit license, and if the way to code the idea is unique and obvious, then investigators claiming improprieties against Rybka regarding a specific line of mostly-copied code can't use that line against him since the author would likely have found it anyways. That would only be fair. So they have to prove that a line of code is copied and that given the ideas he was provided, he would not likely have come up with that particular expression of code on his own.

jonald_fenecios's picture

It seems that authors of Fruit have insurmountable problem now of proving that their codes are unique and could not be duplicated in anyway without using their method.

R.Mutt's picture

The way I understand it, the Rybka team may have incriminated themselves by claiming that Strelka was a Rybka 1.0 clone, when it can be shown that Strelka was (also) a Fruit 2.1 clone. If Strelka=Rybka and Strelka=Fruit, then ....

Barone's picture

The GPL licence is more or less the opposite of copirighting something: infact it stops anybody else to make commercial use of the same ideas/code.
That's the problem, and so your interpretation doesn't hold.
On the other way, by what I could understand about problems connected with analysis performed by chess engines, the efficency of the search function, mentioned in the article and in various comments, is paramount.
It seems that the problem of creating and analysing a tree of chess variations is related with the variables used to do the analysis in a way that comports an increase of the dimension of the variables (i.e. the allocated memory) OR a decrease of the efficency of the search function that operates on those variables (thaqt will increase in number and be less "navigable"; incidentally all this is probably worsened when you have multiple cores or processors performing the same work, like in the "deep" versions of modern chess engines): both these "evil" decrese the global performance of the engine, and the best effect should be achieved with a compromise between the two. So the "ideas" engeneered in Fruit should not be too difficult to spot in a possible clone (Rybka?), because they are basically half of the core of the engine itself.
Maybe a possibility could be that the first not brillant version of Rybka had some great ideas in the other half of the "core" of the engine, but even so the author of fruit could claim half of the prizes and money earned by Rybka, because he had half of the relevant ideas: unfortunately this was possible only at the beginning of the Rybka rise, when the two authors should have signed together the derivate of the innovative parts Fruit and Rybka as a new entity whose kind of licence would have been their choice. Now it's too late, and you cannot squeeze the GPL restrictions into a commercial product, so Rybka and its owners will have to pay one way or another.

Barone's picture

The following link (Retooling algorithms, by Larry Hardesty of MIT News Office) features an easy to understand article about an improvement in methods used by the search algorithms applied to multi-core processors:

As you can read, the search function is considered VERY important in chess engines: "In large part, a chess program is a method of exploring decision trees".

Just to make clear how much of Rybka success could be connected to Fruit ideas...

Nelson Hernandez's picture

Doesn't it strike you as odd to bring formal public charges against a program that was released for free to the public in 2005 at this point in time?

And what could they possibly hope to gain from it? To ban Rybka from future competitions? To have championship titles stripped? To impugn Vasik Rajlich's reputation? To delegitimize the latest versions of Rybka (hundreds of ELO points stronger than the supposed 'derivative' version) and all future Rajlich enterprises?

Or how about this: through Rajlich, to pre-emptively strike against Robert Houdart, who currently has the strongest-rated program, and openly admits that ideas (and we can infer, code) from other engines greatly strengthened his own program?

If that is the agenda, then what we have here is a pack of programmers ganging up on the two strongest chess engines around, trying to establish a private club where only approved chess programmers that expose their code to all the others can participate. Taking everything into account, a person with no stake in the outcome might easily conclude that the goal here is to level the playing field for club members and establish a closed shop.

Delinquncy's picture

Your first error is placed in the first sentence, for the concept of "free" is irrelevant to the ICGA proceeding tribunal. So too, Rybka was charging 34 euros on 11 Dec 2005. What is "free" about that?

The obvious reason why this took so long, is that everyone believed Rajlich until that dude Osipov came around partially due to obfuscation, then every time evidence was presented the accusers like Christophe Theron were vilified quite roundly and some vanished rather than accept personal abuse, and the main guys left like Wegner is a student without a lot of free time to probe Rybka, and finally Fabien showed up to press the issue. Justice is not always the swiftest but once the evidence is there and presented well, lots of names signed up.

I suspect your last hope to gain is closest looking at the number of oldtimers signed up, to deter future cloners. The ICGA has enshrined originality above strength on a continuum, which is where they differ from the guy with an octal. Different values, different agendas.

Finally to say this again, the code would only be exposed to outside independent experts. Given that Rybka 3 and Houdini 1.5 have both been reverse engineered the former quite publicly, this can not be a major contention anyways.

Isthere_Science's picture

Excuse me, isnt Wegner a direct competitor of Rajlich in the ICGA events? Wegner was second with his program Rondo.

Isnt it a bit too much? Competition, Prosecution, Judgement and Execution on public fora?

I see danger for fairness, justice and human rights. We have witch hunt and lynch justice.

noyb's picture

If Fruit 2.1 was open source, then why the concern that Rybka programmers might have used parts of it or even took ideas from it? Open source is just that, open.

Remco Gerlich's picture

There are different flavours of open source. In this case, the program was covered under the GPL, which says that you can use any parts of it, as long as the resulting program is also released under the GPL (if it is released at all).

As Rybka obviously isn't, that would be a problem.

noyb's picture

Sorry, meant to include that this sounds like a galatic case of sour grapes on the part of open source programmers. If they want to get rich on their hard work, then they need to sell it instead of making it free!

test's picture

"The GPL is the first copyleft license for general use, which means that derived works can only be distributed under the same license terms."

Frederick J's picture

The open source programmers do not want to 'get rich'. They want to keep development of code and concepts in their area free and open in order to advance it. What they don't want is someone to 'get rich' by ignoring the terms of the licence that their work was released under and incorporating their work into commercial programs.

Compu-geek's picture

Only that the '' signs are extra...

Carl Lumma's picture

The one small problem with all this is that many engines jumped in strength after the Fruit code was released. But none got quite so strong as Rybka, including the subsequent (closed source) commercial version of Fruit itself and the open source Fruit derivative, Toga. And Rybka's lead was not small. Furthermore, how can one say Rybka is in violation of the GPL but the commercial version of Fruit was not?

Remco Gerlich's picture

The copyright holder of Fruit is perfectly allowed to first release it under the GPL, and then release it again under another license. He's the copyright holder, he can do what he wants.

It's only when you take Fruit and do things that you couldn't do without a license (like include the code in another product and distribute that) that you have to obey the license's terms.

Carl Lumma's picture

Quite right, sorry. Since he does not need rights from the GPL to distribute the code, he isn't bound by it.

Jonas's picture

What about fritz is that stolen too?

Compu-geek's picture

from where?


Latest articles