0.15 Retrospective #16431
Replies: 6 comments 19 replies
-
Writing release notes / migration guides is currently a huge slog. Especially for @alice-i-cecile and @cart since they have to write the release notes for the feature authors that don't do it themselves (which is quite a lot). Maybe it's an idea to include the writing of release notes before merging PRs? Make it as standard as writing documentation and tests? |
Beta Was this translation helpful? Give feedback.
-
It's really hard to exhaustively / automatically test rendering features across platforms. Are there any CI solutions that could be implemented. Require more extensive tests from feature authors? |
Beta Was this translation helpful? Give feedback.
-
The retained rendering PR turned out to be a bit of a problem. Merged near the end of the cycle, it caused quite a lot of bugs. These bugs had to be ironed out on main which is extremely frustrating for everyone involved. Since I was pretty heavily involved, I'll give my perspective first, including what I could've done better / how the process could be improved. The Initial ProblemIn 0.14, at the end of every frame, the render world purged all its entities. For complicated ECS reasons which I'm not going to explain (you can get a jist here), this blocks relations. Because I (and a lot of other ecs folks) care about that, I set out to try and fix it. The ProcessI made my first attempt at July 9. The exact way I did it was not really important, because I barely got anywhere before I managed to nerdsnipe @re0312, who created this PR on July 23. I want to take one sentence to say that @re0312 is a much better coder than I am and if it weren't for them I likely wouldn't have gotten anywhere. This PR went through the review wringer, and while I quite often asked around in the Discord for reviews I was often told that people were busy (which is completely fair, large parts of this were during the summer vacation, so I understand that people had better things to do). People are busy, that's just how it is. The PR became quiet after a bit, so on September 20 I decided to push it the final stretch. I figured it'd be a shame if all that work went stale. And I should add that this PR grew stale very quickly because it touches almost every single part of the rendering machinery. In any case, I tried to hurry the merging of this PR, in large part because I was done with it. This included a tactic where I tried to only get a few important reviews from SMEs / Alice, because more input would again slow the PR down. When it eventually did merge, I figured that there were probably still bugs in the code. Places I or re0132 forgot, although I hoped that everything would go off without a hitch. Or at least, I hoped that the bugs wouldn't be that bad. Hope is not a great code review strategy. In any case, I wrote up a follow-up issue and largely pulled my hands from it, because I was very busy and my attention was needed elsewhere. What Went WrongThere turned out to be a bunch of bugs. Some of them I had foreseen (entity leaks, wonky extraction), some of them I had theorized but deemed unlikely (removing only a synced component from an entity instead of removing the entity leaves said entity behind in the render world). By and large I don't think there was much that was technically insurmountable given the design, but it sure was annoying to track down every single bug. I'm very sorry to and thankfull for the people that did. On a personal level, I got inpatient, and tried to force through a PR that clearly wasn't ready. On a slightly deeper level, I didn't know how I could ever test the fullness of the change without just pushing it to main and having a thousand eyes create issues. This PR clearly needed a strategy for transitioning to a retained render world, but I don't know how that would've looked like. Please let me know, if you do. I think that this PR has kind of flew under the radar (in the end that was kind of intentional). This change is important for the ECS folks, but largely involves rendering code. They Rendering people seemed less interested in this refactor. The fact that I took this on without having every played with the rendering internals before, should probably be noted somewhere. Also, because this was a refactor, I think a lot of people who looked at it, underestimated how much could break, right untill everything broke. I'm out of thoughts for now, if anyone has questions, let me know. |
Beta Was this translation helpful? Give feedback.
-
I'm really pleased about the success of working groups. Continuing the trend started with bevy_color, the text rework, bevy_picking, curves and the next generation scene working groups have all been really effective at delivering high quality work in a cohesive and collaborative way. Having explicit blessing, a design, and a place to talk really helped! |
Beta Was this translation helpful? Give feedback.
-
Upstreaming bevy_picking went really well overall, and I think it's a model to emulate. This is a really effective way to rapidly expand our capabilities, and it helps share the maintenance burden for vital functionality. I think in the future we should consider polishing / improving further in the upstream repo (docs and examples especially), and I underestimated the difficulty of the work: it ended up taking fairly experienced engineers to do the integration work effectively. |
Beta Was this translation helpful? Give feedback.
-
The new workflow for writing migration guides / PRs with each piece of content in its own file is great (other than being done later + in a different repo). Almost no merge conflicts, super easy to re-organize, and the new PR merging strategy is fantastic. Really pleased with how that design and tooling work has paid off. |
Beta Was this translation helpful? Give feedback.
-
The release cycle is quickly nearing it's end. During this cycle, some things went well, while others went poorly. Leave your feedback here, so we can hopefully improve the process for upcoming release cycles!
Beta Was this translation helpful? Give feedback.
All reactions