A public address of the Reicast/Flycast and FEX-Emu/hex-emu dramas

Preamble

This is a retrospective. Feel free to report inaccuracies to me, and i’ll fix them up. Que sera, sera, and i wish everyone involved all the best with their private lives and their public projects. Open to pull requests and discussion on GitHub if you spot gaps.

This is r7+ of the text. More rework is forthcoming.

Amending a timeline

April 1st, 2007 nullDC is released. 2008 is the Financial Crisis and I acquire emudev.org. 2010 the GFC is felt in Greece; I open source nullDC. 2013 I meet some random Swiss people in a coworking space. 2014, I am invited by said people to join them in Zurich. In 2015 Capital Controls are imposed in Greece and my family and loved ones suffer; meanwhile I am invited at NVIDIA. 2016i-sh libretro drama starts, and I’ve heard of emails reaching my manager trying to defame me and others in the emulator community; libretro starts shipping a fork of Reicast, but without changing the name. Autumn 2017 brought private traumas that echoed for years, fueling my impatience in public clashes - up to quite recently, sadly. 2018/2019 the “so called” Reicast of libretro further drifts away with significant contributions from Flyinghead; I try to reconcile to a single project and largely fail, though some merges make it to mainline (eg, reicast!1540). 2019 May 30 something triggers me, and I completely lose it with libretro leadership reddit link, trying to force a change in name of their fork, threatening with legal action over trademark/textmark violation. Thankfully, the fork was renamed and peace was found. I NEVER threated to take legal action over something else but naming. Just to correct internet rumors here. 2020 is covid and I return to Greece; At the same time I found nilware.io; I am also invited to work on FEX-Emu. 2021 is more lockdowns. Very stressful periods, but at least mango shipped. nilware.io was disbanded in 2023.

I use libretro/RetroArch interchangeably here because that was my experience. Maybe they are less related now.

Reicast

Throughput the years i have made my intentions clear to more LIBERALLY license Reicast, not to close source it, and to explore some freemium model with eg, built in cheat code support or HLE bios add ons to finance the running costs of the project I have been covering since pre-nullDC times. All of this has been publicly discussed and documented for decades reicast!407 reicast!455 reciast!1928. I exercise my CLA rights per reicast!455 and reicast!1788. 2021 Dec 22nd Reicast is EOL’d as per reicast#95b673698863b6a8a4e1852ec018855cca43f9c7 as I’ve enough blame and abuse, been called names, and zero gratitude for open sourcing nullDC, which i had zero obligation to do. Reicast was just rebranded nullDC/e-arm code, and very little of the core emulation code has changed over the years. While I don’t know, I bet that a large chunk remains in flycast or other forks, especially at core emulation parts. eg, Who would reimplement that TA FIFO handling, that code is such a blazing fast meta-mess.

Note, that neither dc4ever, nor nullDC and also not Reicast started as community efforts, and instead were started/led by me (dc4ever) with ZeZu throwing his support behind nullDC(/e), which was joint project, after his involvement with Icarus. I GPL’d nullDC because I didn’t want the code to go to waste when that project went EOL, without actually asking him that much (sorry Z, maybe I shouldn’t have). Between me and ZeZu - taking aside contributions from 2018 and onwards, especially technical ones from Fylinghead - we have written the bulk of the core and supporting emulation code. I’ve written several parts of the emulator twice or thrice.

Here’s some historical archives for evidence: dc4ever nullDC-svn nullDC/e nullDC and finally Reicast. If someone needs to freeload on other people’s Dreamcast emulation work, I don’t think that is me. So let’s please cut the bs and stop false narratives. I’ve also seen claims that Flyinghead hasn’t signed the CLA ny randoms on reddit, however, according to the repository records this is not true. The CLA was signed on May 17, 2018 and Flyinghead was given a clear opt out that was not exercised for any code he contributed.

A personal apology to Flyinghead

Shots have been fired both ways, i’m sorry for saying hurtful things when angry. I was beside myself with the situation at hand, and you got caught in the libretro crossfire and spillover from my private affairs. My sincere apologies, and gratitude for building on top of Reicast’s legacy.

Aftermath

Flyinghead has succeeded where I didn’t, in consolidating support and adding features; albeit with differing technical priorities. They are a capable leader.

I have devcast where I do R&D work; eg for refsw and for the GTA ports to dreamcast, dca3.

FEX-Emu

There was a disagreement in fex-emu, with several technical and non-technical angles, which led to a falling out between me & ryan. You can see the uncomfortable decision as documented on a new project domain, separate from the original fex-emu.org that I had registered for the project.

Technical reasons

Those were documented in fex-emu.org in 2023; And of course in my private fork in gitlab, hex-emu PRs and commit history.

Interpersonal conflict

As noted in the timeline section, I’ve had a few years with PTSD triggered anger and lack of patience. Tension was building over several weeks/months, with some contributors essentially blocking my work though what I saw as needless scrutinization of my PRs. A great example is FEX!1558 which reached 245 (!!!) comments, while several other hot PRs were pending.

Other conflicts at the same time in my life led me to have a complete mental breakdown, and venting things in our private channel in the fex-emu discord server.

Over the several weeks of the supposed “pattern of behavior” I was never confronted by anyone about it, nor otherwise made aware that I was stepping on other’s people toes.

I was also not given the option to gracefully step down or defend myself; And I would have deferred to Ryan as they started the project.

Instead, after a week of ghosting by the team I was greeted by the uncomfortable decision post, a public twitter post (that seems deleted now?), and me locked out of discord with a request to hand over the domain, which I didn’t since there was a new domain in place already. I maintained an iframe with a notice for several months with the notice evolving. A final technical write out was done in 2023.01.27 where the iframe was removed, and I notified Ryan I won’t be renewing the domain if he wanted to grab it. Any discussion of my expulsion was swiftly censored in the emudev communities, giving me no way to defend myself.

While I do want to take ownership of my faults in this; Including possibly being aggressive and stepping on people’s toes - without intent -, I think from my statements at the time, as well as the fact that with some team members we knew each other since 2008, have worked together at NVIDIA, have eaten together, have hugged each other when parting ways, I think it was obvious I was having a severe mental health crisis.

I also think that posting things conversed privately in public and shaming people publicly for their flaws is not a nice way to treat others.

Having said that, I wish to give my heartfelt apologies to Ryan for making their life hard. I understand they wanted to protect the project and they took the best choice they thought was viable.

I was also happy to see a door open for possible future contributions in the far future, however unlikely those are from my side.

Aftermath

As I had registered fex-emu.org domain myself, and due to how things went down, I decided to not hand it over, as I saw the Ryan’s moves as a hostile takeover of the project at the time.

You can find information about the current state of affairs of fex emu in their homepage.

I have no plans to actively develop hex-emu, but maybe i’ll tear parts of it apart and adapt them in other projects.

Closing remarks

Cheers for reading this far, ~ skmp

Πάνω απ’ όλα, είμαστε άνθρωποι·

[[ maybe rewrite all this ]]