-
-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Development process improvements (A New Year Wish) #6210
Comments
I can promise one thing. A serious problem is the ballooning of issues. Some are stale, some aren't really issues, some need reviewing, some tagging etc. Tomorrow(or the day after), I'll give write permissions to some members in order to be able to close/open/tag issues. Some rules will apply on what can be closed or not. PS: Write permission is required for managing issues. If you start messing with commits(pushing/rebasing/merging PRs) you will be clobbered to death with a 56k modem. |
@sledgehammer999 take a look at branch protection provided by GitHub (i.e. you can leave commit rights for master to yourself only). |
@evsh link? |
https://help.github.com/articles/configuring-protected-branches/ and links therein. |
Another suggestion: |
What is that? |
Well, if you use the Submit new issue function on GitHub, you only see one unspectacular link to CONTRIBUTING.MD, which, apparently, no one bothers to read (slight exaggeration, but you know what I mean). Maybe because folks (mistakenly) believe that this is only intended for code contributions. Until GitHub comes up with a more effective idea, one can use Failure to fulfill all mentioned requirements results in an immediate closing of the issue, and labeling it as "invalid" or something. And if necessary, locking the issue to prevent new comments. |
👍 |
I added @evsh @ngosang and @GotDemBallsOfSteel in the new @qbittorrent/bug-handlers team. This team has write permissions. I (think) I have protected master + all v*_*_x branches from you. Instructions for people involved with the code that know the internals of qbt pretty well:
For non-developers:
PS: @GotDemBallsOfSteel is our forum overlord(and current site hoster), for anyone wondering. |
I forgot to mention that since something is very old doesn't mean it should be closed automatically. |
@sledgehammer999, thanks, I will try to be useful with issues management, of course. Did you have chance to think about the other 5 items? |
Thank you!!! |
About number 3: For the other issues, I'll respond another time. I need time to think them. |
Excellent! |
Is there a consolidated list of known problems in qBitTorrent v3.3.10 (or v3.3.7-9)? |
It looks like "sole" project, and all the other contributors do not have "political weight" here. The development process is arranged here on the basis of subjective opinions of @sledgehammer999, while others often do not like it. IMO, the main disadvantages of it are the following:
@sledgehammer999, do you really satisfied with the current state of affairs in the project? |
I don't have to much to say, but if this were my project, I would give @glassez rights to merge into master. He is an experienced programmer and knows the code quite well. |
Yes guys, unfortunately you are right. The merging throughput is an issue. I believed I could find time to do it but always something comes up. For example, the past 3(?) weeks that I went AWOL was a real setback. If you remember, before that I had small "deluge" of mergings and I had in my mind-cache extensive code state and I would be able to quickly review the "big PRs". But after my pause that state is lost again. In the meantime there are quite a lot of small PRs that could be relatively easily reviewed and merged with minimal risk of breaking stuff. So I hear your objections. And let's devise a plan to go forward. I don't have solid and complete suggestions, and some things might need clarification from you too. I propose to keep this branch structure:
(assume that other members apart from me will have write+merge permissions) On big PRs you participate in reviewing fervently and actually discuss design choices, which is a very good thing. But from my last mergings on big PRs I had the feeling that none of you actually looked at the PR as a whole and see if something was missed from old code(in case of refactor). Or what the interaction of surrounding code is. And this can result in subtle bugs. Of course, even I can't guarantee that my review will squash all possible bugs in the PR. We can't rely on the PR author no matter how good he is. Our eyes+mind play tricks on us when we try to review our own work. That's why a 3rd party is needed to review. Don't get me wrong. All I want to say is that big PRs need better and more thorough review as whole. I am not against allowing members to merge such PRs but we need to hold a higher standard of review for those particular PRs. Don't forget that this client is quite popular. Don't forget there are people that have hundreds or thousands of torrents in the list. It isn't nice trashing their list/data/progress because of a quick review. It has happened in the past and it will happen in the future, but let's take some rudimentary precautions against this at least(= good reviews). I am sorry for my mumbling, maybe my concerns aren't warranted. But be assured that now I want to give some form of merge control to people other than me. Another last-minute proposal that I thought of. Or forget the above and propose another plan entirely |
I am no programmer but as a user I think it would be a good idea to propose monthly or weekly or daily build so user could choose to test development branch and report issue. |
@ngosang, Thank you for your trust. I'm just hobbyist.
|
@sledgehammer999, sorry, I'm writing my comment above still not reading yours. I'll answer you later. |
@glassez building on your #6210 (comment) (which you wrote without reading mine):
Exactly! And I agree with that. (written in my previous comment.)
No problem here as mentioned earlier.
Agreed. And IMO, some big changes should at least be partly based on consensus. I think I already do that in some extent.
I don't comment on this, since it is related on something I wrote in my previous comment. And I think it partly addresses this and partly asks questions and clarifications on how it should work. |
@sledgehammer999, here is my plan:
|
(I am commenting on this first and quickly to prevent derailment of the thread. I'll comment on the other points later.) |
Agree.
Agree. |
I do not mean that we must strictly adhere to any plan (we have to admit that we can't always implement some kind of planned feature in a reasonable time). I just meant if after the release the master still contains no invalid for stable branch changes, we can just merge it there. |
While supporting all the main ideas of this thread (a development branch, stable branches for releases or development branch and stable master), I don't understand why history rewriting in the development branch is needed.
+1, I hope we have enough active people to get those two approvements.
I would try this for all PRs, or at least allow vetoing in some form.
+1 I do like dev + stable + release branch scheme (for example, https://wiki.qt.io/Branch_Guidelines). Please note, that master branch is the default branch and it is this branch most new users will face. As such there is a reason to keep it stable (that is almost a quote from the Qt Guidelines).
+1
We may do time-planned releases, giving the stable branch a few weeks to mature and increasing appropriate version number basing on the feature set of the new release. If we solve our workflow bottleneck problem, these releases will contain bugfixes anyway. |
+1
Reasonable. But we should be able to deviate from the schedule, for example, for hotfix releases, etc. |
IIRC, Qt just makes the current stable branch to be the default branch. It has no separate default branch. We can do the same. |
Yes minor change like typo fixes, you forgot something or something really benign can go straight to master without PR.
I think this one is ok to go straight to master but
IMO, this needs PR for discussion and review of possible side effects. |
OK, let's rely on common sense then. Let's see how that goes. |
Maybe somewhat related to this topic: shipping with those defects is gonna piss users off... |
GitHub provides us with milestones. Will that do the trick? |
yeah if we use it properly. |
Now, I think the 3 of you have proper rights for PRs and commits to master and v3_3_x. (And I think you have access to create new branches and handle bugs).
Milestone can be used to collect desired goals. And a bug label can be created to attach to bugs to denote hard blocks. Of course, if noone is looking at them or trying to implement/fix, they will transition to "wishful thinking" :p |
@sledgehammer999, IMO, it would be better having more official team names (unlike demigods, e.g). Also qbittorrent-frequent-contributors has redundant part in it (qbittorrent), it is repeated twice, when we mentioned this team ( |
What do you propose in place of demigods? |
Thanks! Settings seem to be in place: GitHub allows me to merge into master. |
Tried to push cmake stuff to master, but got this reply:
|
Hi @qbittorrent/demigods, Since we don't have a policy how PR should be extended or corrected during a review process (some amend, some add new commits) in the case of amends it is sometimes hard to understand what changes you approved already (yes, #5532, I'm looking at you) and, what is more important, notice that there are new significant ones. And while I encourage everyone to add new changes via new commits with |
+1 |
Maybe |
+1
+1 for |
Personally I don't like to keep squashing commits, and in my own repos I prefer PR's not to get squashed . In fact it's been hard for me to keep track of changes in my own branch. I was asked to squash things down originally when my PR wasn't as big as it is now, and figured I needed to keep doing that. I think having a clear policy on when to squash the commits of a PR and when to keep each individual commits would be a good idea. |
IMO, the policy is clear. All commits that fix some other commits from same PR should be squashed before merging. |
@glassez Is this to say then that all PR's should be squashed to one commit, or that each major change in a PR should have its own commit, and any fixes should be squashed into the appropriate commit? |
Yes. For example, in your PR (mentioned above) you can have one commit that changes AddTorrentParams by adding firstLastPiecePriority and TorrentHandle to accept changed params, the second one that changes AddTorrentDialog to accept AddTorrentParams, and third commit that add new command line parameters handling (because they are relatively independent changes). |
@qbittorrent/demigods @sledgehammer999 It seems like things are getting better quickly. Thank you for your hard work. 😄 |
@sledgehammer999, isn't GitHub approval request enough for this purpose? |
I am not sure I have a way to setup an email filter in that case. |
FYI, I have enable the setting to require approvals again after new pushes to the a PR a few days ago. |
@zeule close? |
Hi @qbittorrent/qbittorrent-frequent-contributors,
There is one thing which I don't like in qBittorrent, only the single one: qBittorrent development is slow, and not only because the team is small. Our users expect from us more than we are able to deliver right now (just look how fast the number of open issues grows). And the contributors can obviously benefit from quicker advance too. I myself find it easier to merge qBittorrent master into my own modified codebase then to merge my PRs into the qBt master branch.
Can we speed it up a bit, without breaking anything? I think we can. Here is what I propose (some items were already mentioned here or there):
To conclude, these modifications, I believe, should make development process more dynamic and easier for maintainer(s). It is not hard to see that the project is already close to the limits of a single manpower and something has to be done to overcome this limit if we want to serve increasing demand from users and our expectations.
The text was updated successfully, but these errors were encountered: