Release cycle #498
Replies: 4 comments 60 replies
-
Changing the build system isn't a breaking change for users as far as I can tell, and that is what the versioning is based on. As for other breaking changes, there has only been FTransform constructor which I think should not have been merged into main if the next version is to be 3.1. Otherwise next version has to be 4.0. Not against that at all. But if we do that, linux support and data table support should 100% by implemented by then as MVP (and by extension the build system fully chosen).
I wasn't aware of this about the hotfixes (as I had not realised the issue yet) and to be honest I don't think anyone else realised either, otherwise that 3.0.1 hotfix definately should have been blocked. But yes I agree this is what should be strictly kept to in the future. As for minor versions not breaking compatibility, that means even ABI cannot change in them too? I'm honestly not too sure how that will be possible, as the vast majority of fixes/changes changes it.
I very much agree, this would be very good. If we had this, xmake should have been merged into say, 4.0 branch, then linux port can base off that branch, while breaking changes can continue to go into that branch while other things can go into 3.1 branch or similar. UEPsuedo would also then need to use the same system and I think our docs build script would likely need to be updated to work across branches. I think narknon wanted something similar. @narknon can you share again what it is you wanted to do with this? |
Beta Was this translation helpful? Give feedback.
-
Sidebar - Opened a discussion for API/ABI compatibility detection tools since that can be decoupled from this discussion imo. |
Beta Was this translation helpful? Give feedback.
-
The issue with all of these proposals is the complexity for maintainers. Bit is also proposing different tools to make it be less of a burden on maintainers, which could make it tolerable, but then we are relying on those tools to not break/more complexity and going full circle. Nearly all releases haven't been delayed due to some feature issue, they've been delayed due to someone finding the time to make a release. Same with most merges. That is also why most merges have been under-tested. The proposals here are all more complex than most repo management policies for official salaried projects. @UE4SS I don't mean this in a hostile way, but you should be the first to admit that maintainers may need to drop at any time for their own personal reasons. That is fine, this is a hobbyist project. But someone else should be able to jump in at that point and continue the maintenance without a major learning curve. I haven't been very active lately. At times, I've been the only active maintainer. If everyone else quit tomorrow, I feel like the project's complexity has ballooned to the point that I could no longer find the motivation to try to maintain it alone. The proposals here all add to that feeling, and I think if anyone here considered it from that perspective they'd agree. I don't think we should rely on anything that requires specific people to stick around. All this being said, I propose that we return to using a release and dev branch. If there is a release branch, you can cherry pick hotfixes into it and make a release at any time. You can decide that a certain major feature isn't ready yet, and PR a minor feature to both branches if you wish to not break ABI quite yet. SemVer can be followed. It solves all the same issues with far less complexity and manual work for maintainers. If it ends up not quite meeting our needs, the dev branch can be expanded to include other branches as needed. Often, the simplest solution is the best, and I think instead of jumping into one of these more complicated solutions we should go back to basics with an expandable method. Even if it ends up not working out, it's much easier to then decide to move from it to one of these other methods rather than the reverse. |
Beta Was this translation helpful? Give feedback.
-
I think we're conflating two problems here, which is branch management and ABI/SemVer management/merging of features. I don't think branch management is the solution to our current tendency of merging features that aren't quite ready and breaking ABI before a full release can be made. On the other hand, we shouldn't be afraid to break ABI when we actually have features ready. Therefore, I think for now we go with release/dev and revisit this after we get some better merge discipline if it is still necessary to tackle it from the branches side. Again, it is much easier to go from a simpler solution to a more complicated one than it is to do the reverse, and this is not a final say on anyone's proposals never being implemented. I'll leave discussion open for another day. |
Beta Was this translation helpful? Give feedback.
-
Place to continue conversation in #494, first comment here, please read down from there for full context.
Beta Was this translation helpful? Give feedback.
All reactions