I would have preferred to have a discussion with Riven about this in private, but it sounds like he’s too upset to contact me. Since this is all public now, I guess I have to explain my version of the “context”.
First of all, this is indeed a project he started, the code committed to LWJGL was all his and I told him from the first day that the way he used bytecode transformation to implement it was brilliant. All this time I had been doing lots and lots of testing, on existing functionality, on performance and sometimes trying new features that I implemented locally, using his code. Because of my feedback the library changed and improved and again Riven was doing the final coding. Then it got into LWJGL and I started contributing to the actual code; documentation, runtime checks, minor features.
Then we discovered the performance issue with iteration, for which Riven provided a quick/hacky solution using @MappedView. Performance-wise it was great, but the API was bad and the implementation not robust. We then talked about possible alternatives and finally Riven thought that using array access was doable and that we should go that way (I liked it). A few days passed because he was busy and at some point I talked to him about current progress.
That’s when things got aggressive for reasons I don’t understand. I simply wanted to understand the technical difficulties involved and the only answers I got were “if you don’t believe me, try to do it yourself” and “it’s too hard”, without any effort to help me understand. I got the impression that he didn’t want to talk to me about it or even that it’d be a waste of time to explain it to me. Now, there could have been a hundred reasons as to why he talked to me like that; bad mood, his attention might had been focused elsewhere, didn’t have time to talk, etc. But still, that’s no way to talk to someone that has been so helpful to you, at least offer an explanation as to why you can’t talk to them. Even after that discussion ended abruptly, he still didn’t communicate at all since then. He says he feels depressed from my behavior (and rightly so, I feel bad about it too), but how do you think his behavior made me feel?
As for the code itself. Well, it’s still his code, his project. It still says @author Riven on top. I don’t see how I “took ideas he shared on how to implement certain features and made them my own”, since the only new thing in the current version is the .asArray() implementation, of which I knew nothing about; when I asked, I got shit for replies. Of course, I went ahead and tried to implement it locally (again with the intention to throw it away like my other tests). I used his codebase as a starting point, I burned almost a full day on it and a lot of progress was made, but eventually I hit a dead-end, which I guess was what he didn’t want to explain to me in the first place (note: I didn’t understand most of the code before this point). Anyway, even with the lack of robustness, by that time I could do some performance tests, which was my main interest. The results were good and since I hadn’t heard from Riven at all, I decided to refactor the code and get this thing done properly.
So, yes, I’m sorry for dropping this bomb without notice, but I was upset. When I treat someone with respect, I expect the same respect in return. Also LWJGL isn’t mine or yours or anyone’s, it’s an open source project, you knew that when you donated the code. The rewritten code isn’t mine either. You can check it out and continue working on it or even replace it with a better/alternative implementation if you want to help and think it will benefit the project.
Again, feel free to PM me if you want to discuss this further.