(07-09-2019, 05:49 AM)_para Wrote: How about just ditching the official netradiant for it? Why or why not?
First, I have to do a disclaimer before answering to that question. I need to state that I have absolutely nothing personnally against Garux.
It's very important I say that because in such situation it's expected normal people get angry toward each other. So please don't assume I have something against someone, assume I'm not normal instead.
Also, Garux's contributions are welcome, and I am very thankful for when he helped me personnally on some topics. I would like to see his contributions merged upstream, really.
So, to answer to that question, it's a very bad idea to ditch upstream Netradiant for Garux's fork, this is why:
Because Garux's radiant is based on a 5 years old tree and lacks a lot of improvements made to the source base itself to make it able to survive the future, for example the Garux's radiant still relies on the Makefile solution which becomes hard to maintain. As someone said, the Garux's radiant also misses all the ongoing UI rewriting effort that would make possible to ditch GTK2 one day. GTK guys are already preparing GTK4 and some distros already talk about ditching GTK2. Worst than that, some part of code introduced by Garux introduces stuff that is already deprecated by GTK2 itself, meaning the added code makes the effort to ditch that obsolete GTK2 less possible, which is the exact opposite direction to the one that must be followed to make sure the project is viable for the mean term. All this effort made on upstream NetRadiant is about making NetRadiant able to run on macOS again, and to make sure NetRadiant will continue to build on Linux and Windows in the future. While trying to merge some code from Garux's tree I discovered that Garux's fork is going to the exact opposite direction.
Then, Garux's radiant has no peer review so anything can be merged without people asking for a rewrite before merge. This also explains why the UI code is going toward the past because no one warns Garux about this. The other reason why UI code is going toward the past is the miss of the new build chain based on CMake that was tailored to raise such issues automatically at build time. Because it's based on that 5 years old tree the Garux's fork also lacks a lot of code modernization to make it future proof, and that part is not related to UI, it's about the overall code.
Then the upstream NetRadiant get continuous improvements, ditching those improvements would be a loss. The best solution would be to merge the two branches, but that's very hard to do because of some mistakes Garux did in the early time of his fork. Basically Garux squashed hundreds of commits, mixing them with custom code that is now very hard to identify, isolate and pick. This is a very big issue for anyone. It makes Garux's radiant merging into upstream NetRadiant very hard, but it also makes upstream NetRadiant merging into Garux's radiant very hard. Garux is not helping himself on that part. It's easier to cherry pick from upstream NetRadiant to Garux's radiant than the other way, but that's not thanks to Garux's work, that's thanks to the efforts made by the Xonotic team and myself to make cherry-picking possible. Cherry-picking is when you just pick one change from another tree.
Note that I made a lot of efforts to make the merge possible:
First I
wrote a tool to compare radiant trees. This was done before I discover Garux's fork, I used that tool to merge the iqm model plugin from aaradiant, for example.
First I
offered Garux my help to fix his fork to make the merge of both trees possible, but after two years I'm still waiting for any effort on his side. It looks like Garux believed at this time that “helping” was “doing someone else's work”. I was ready to invest hundreds of hours to help him, but this is not “helping” if he expects I do all the job without his cooperation and without even knowing if my effort would be used one day. When I
ask Garux how we can exchange code between trees, Garux
answers I'm asking the
wrong person and
says that effort is up to others.
Then
I taught Garux to correctly cherry-pick commits from upstream NetRadiant to be sure his newer commits are less hard to merge than his older ones. I'm basically helping him to improve his fork with the code written by the Xonotic team and myself while I see no one effort from Garux to make the opposite possible. It's unfair and no one would blame me if I were not helping him.
Then I reverted
the code restyle that was done on the upstream tree after Garux forked NetRadiant, to make possible again (but still very hard) a merge from Garux's fork to upstream code tree.
Then I tried to merge some code from Garux (and without help from Garux), that's while doing that effort I discovered that Garux introduces GTK2 deprecated code, making the code quality regressing over time. By attempting to merge some of Garux code I also discovered that the code base would end with 3 unzip libraries, two of them conflicting.
So you now know I already spent dozen of hours to make a merge from Garux to upstream possible, but I'm yet to see a lone second being spent on that purpose from the other side.
You
can see yourself how Garux react when I ask him if he has any news about any effort that would make the merge to upstream easier, he just laconically answers
“No.”.
So, Garux's radiant is a very sad story, and unfortunately we now have one more radiant fork to add to
the list.
Note that it would be hard to prevent people to be angry at Garux himself because of this sad story. I don't think it's a good idea to be angry at people so I'm not. Not being sad makes me able to wait for his willingness, and I'm still waiting for his good will. Garux knows I can help him if he is ok to get some help. But I have to say that giving help to someone else is not doing someone else's job neither working without him.
Note that some years ago some people (including Garux) suffered from merge requests not being reviewed for months (years), in this situation it's inevitable to see some trees living outside of the upstream one without getting merged (
that's not contributor fault). But that's now fixed since years : I became a maintainer and I can review anyone's code and merge it quickly. So, the excuse of the upstream being slow to review or merge is not true since years, only the lack of will can explain the lack of merge request being submitted.
This comment is licensed under cc by 4 and antecedent.