Skip to content
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

Reorganising LMMS, renaming editors and classes and everything in between (cont. #120) #5592

Closed
56 tasks done
ryuukumar opened this issue Jul 21, 2020 · 171 comments
Closed
56 tasks done
Labels

Comments

@ryuukumar
Copy link
Member

ryuukumar commented Jul 21, 2020

If you are here because your PR is mentioned then check the instructions at the bottom of the comment.

This is an issue continued on from #120. We're mostly following on from what was decided there, though if you have something to say, feel free to.

These are the draft steps that we will have done one-by-one in order to achieve this massive task:

Feel free to drop suggestions, things you would want to see, etc. here. If you have something that would require a major changed in code like this renaming project (like maybe moving to C++17?) then please do tell us, because I think it's better to finish all major changes in one go rather than have a bunch of code freezes for each change.


The section where I mentioned your PR

If your PR was mentioned by this issue, then ping back on your PR and mention this issue so I can change the state from "Waiting for Response" to whatever it really is. I'll probably ping all PRs which haven't responded.

Edit: Considering that new PRs are being added and merged, I'm changing this list to be a tracker of older PRs so that they don't get lost in pages and pages of PRs.

I've not tagged some PR authors because it was their first PR, and the tag system didn't allow me to tag them yet. These PRs are almost all stale and inactive for at least a year.

Expand table of PRs
PR Last Active Has conflicts? Stale/Active/Ready
#2068 - - Waiting for Response from @michaelgregorius
#2505 - - Waiting for Response
#2944 - - Waiting for Response from @BaraMGB
#3115 - - Waiting for Response from @liushuyu
#3117 - - Waiting for Response
#3134 - - Waiting for Response from @liushuyu
#3224 - - Waiting for Response from @tonychee7000
#3467 - - Waiting for Response from @liushuyu
#3532 2019 No (Feature Merge) Stale
#4027 - - Waiting for Response from @tresf
#4067 - - Waiting for Response from @tresf
#4232 2019 Yes (Feature Merge) Stale
#4357 - - Waiting for Response
#4367 - - Waiting for Response from @SecondFlight
#4369 - - Waiting for Response from @SecondFlight
#4397 2020 Yes In Progress/Ready
#4412 - - Waiting for Response
#4441 - - Waiting for Response from @BaraMGB
#4443 2020 Yes (Feature Merge) In Progress
#4571 - - Waiting for Response
#4635 - - Waiting for Response from @douglasdgi
#4662 2020 Yes Stale/In Progress
#4674 2018 No (Feature Merge) Stale/Ready
#4690 - - Waiting for Response from @JohannesLorenz
#4894 2020 No Ready (needs review)
#4994 - - Waiting for Response from @Reflexe
#5000 - - Waiting for Response from @douglasdgi
#5098 - - Waiting for Response from @michaelgregorius
#5147 2020 No In Progress
#5158 - - Waiting for Response from @artur-twardowski
#5161 - - Waiting for Response from @douglasdgi
#5166 - - Waiting for Response from @iansannar
#5168 - - Waiting for Response from @douglasdgi
#5174 2020 Yes In Progress
#5197 2019 No Stale
#5202 2020 Yes Ready (needs review)
#5204 2020 Yes Stale/Ready (needs discussion)
#5229 2020 No In Progress (needs testing)
#5230 2019 No Ready (waiting for #5229)
#5236 2020 No Stale/Ready
#5239 2019 Yes Stale
#5247 - - Waiting for Response from @Reflexe
#5261 2020 Yes Stale (needs review)
#5274 - - Waiting for Response from @fschuelke
#5291 2020 No Dropped
#5292 2020 No Ready (needs review & testing)
#5356 - - Waiting for Response from @artur-twardowski
#5357 - - Waiting for Response from @komodor1
#5436 - - Waiting for Response from @Reflexe
#5458 - - Waiting for Response from @douglasdgi
#5500 - - Waiting for Response from @artur-twardowski
#5502 - - Waiting for Response from @thmueller64
#5503 2020 No In Progress (waiting for review)
#5510 - - Waiting for Response from @tresf
#5516 - - Waiting for Response from @EmoonX
#5522 2020 Yes Ready (needs review and testing)
#5524 2020 No Ready (needs review)
#5544 2020 No Stale/In Progress
@ryuukumar ryuukumar added the bug label Jul 21, 2020
@qnebra
Copy link

qnebra commented Jul 21, 2020

Best way to know that PR is active or not is just to peek into commit history. If there is nothing happen in more than 1 year then PR is stale.

@ryuukumar
Copy link
Member Author

When there's 87 PRs... it would be a lot easier to have devs help too. Don't wanna be doing the whole thing myself xD

@claell
Copy link
Contributor

claell commented Jul 21, 2020

Hm, I know that #5261 is probably not stale, however I don't know whether the dev currently has time. The problem with some PRs is that it takes much time until the code is reviewed and when that finally happens the dev is no longer free to address the requested changes. Two weeks might be a pretty tough goal, but let's see.

Can we use some automation to see which PRs will be affected and maybe also some automation for the refactoring that can be easily applied to outstanding PRs? I think about using something like documented commands for a Unix terminal with regular expressions for everything. That way, the refactoring is both easier to understand, to adjust and reproducible. It then could be applied to open PRs pretty easily.

@ryuukumar
Copy link
Member Author

ryuukumar commented Jul 21, 2020

which PRs will be affected

I'm pretty sure every PR will be affected considering the size of these changes

documented commands for a Unix terminal with regular expressions for everything.

Yes, that has to be what will be used (like maybe a find+replace across all files) because doing everything manually will take forever. If you have suggestions on how to go about this, would love to hear them.

EDIT: #5261 has actually been ready for review and merge for quite some time, but it was ignored because of how big it is and in its present state it even has conflicts. If the dev pings back saying that they can work on it soon then we can extend the two-week deadline for the PR to be ready for merge.

@Spekular
Copy link
Member

Spekular commented Jul 21, 2020

With regards to my PRs:

@ryuukumar
Copy link
Member Author

Updated, thanks!

@Spekular
Copy link
Member

In regards to this

If you have something that would require a major changed in code

I say this is a good opportunity to split the Track classes (including subclasses like SampleTrack, AutomationTrack) into separate files. Those files are huge right now and among other things it makes it harder to keep track (pun) of which members come from which classes. Potentially making compilation more granular is a big plus too.

@ryuukumar
Copy link
Member Author

Yeah, it definitely is HUGE. How about three files (+ includes): Track (Track & TrackView), TrackWidget (TrackOperationsWidget, the likes) and Clip (current TCO and TCOView -> Clip & ClipView)

@Spekular
Copy link
Member

I'm a fan of one file per class, but if that's not a popular proposal then three would at least be a step in the right direction.

@claell
Copy link
Contributor

claell commented Jul 21, 2020

Yes, that has to be what will be used (like maybe a find+replace across all files) because doing everything manually will take forever. If you have suggestions on how to go about this, would love to hear them.

Maybe we can come up with one or several bash scripts that contain the relevant commands.

@ryuukumar
Copy link
Member Author

Do approvals from people without write-access count towards mergeability? Github says not but maybe the mods here take it differently?

@IanCaio
Copy link
Contributor

IanCaio commented Jul 21, 2020

My PRs:

I think the idea of renaming the editors and maybe reorganizing some things is good, but I want to express a small concern:

There are not that many active devs with merge priviledges and the amount of PRs makes their job difficult. Specially if we balance that there are PRs that are well written, making them easier to review, but others can be a bit of a mess and take way longer (or even might not be mergeable). Also, some PRs are as small as < 50 lines, others have > 1000 lines of code. Trying to shorten the review process can be dangerous in the sense that some bugs or badly written code can be merged, and then we will have a big mess to deal with later. Simply allowing people with no write-access approvals count to merge PRs is also dangerous in that sense, because we can't be sure everyone knows the coding guidelines and code base well enough to make a good decision, or even how committed they are in making a good review. That being said, I think one week is a way too optimistic timeline for finishing the PR reviews.

As for the process of doing the refactor itself, I see two ways of it being done:

  • Someone can take the burden and work on the refactor alone, but frequently be updating the PR with the changes and waiting for reviews from those particular updates before continuing. That would make the reviewing process easier, because mistakes would be corrected from the beginning before they grow more complex. It's also easier to review a couple hundred lines weekly than thousands of lines in a month.
  • We can see how many devs/contributors volunteer to the cause, discuss in very fine details the changes that will be made and assign files for each volunteer with a timeline (a light one that takes into account that most of us have jobs and life appointments as well). At the end of that timeline, we all submit those changes so they can be reviewed for a while. New files are assigned and so it goes.

I particularly prefer the second option, this doesn't sound like a one man job.

I don't know if I'm sounding too precautions, this refactor is a really good thing. I just don't want to see it cost the current stability we have on LMMS.

@Veratil
Copy link
Contributor

Veratil commented Jul 21, 2020

My PRs:

@he29-net
Copy link
Contributor

Ping all authors of all current PRs asking them to wind up within two weeks since now (done by the table)

@russiankumar Just FYI, this "ping" did absolutely nothing in my case. I happen to be obsessively reading the GitHub log on Discord, so I noticed this issue, but I imagine most of the PR authors have better things to do and won't notice anything since it did not generate an e-mail notification.

So by marking all PRs that don't get any response as "stale", we may be simply discarding a lot of good and useful code from authors that are no longer active and won't notice a mention appeared on their PR -- if they have been waiting for test and review for months (or even years), I would assume they just gave up and forgot about it. Some of the PRs could be unfinished WIP, sure, but I wouldn't rely just on the fact that the author did not reply to a ping. Some of them may not even be able to, for whatever reason (lost the account, fell off a cliff, signed an NDA in their new job, ...).

The PR backlog is a huge problem for LMMS in my opinion (in a way, there is already an issue talking about this: #4935) -- it slows down development if someone needs to wait for another PR to get through, it generates conflicts in newer PRs when something old finally gets merged, it demotivates new devs who have to wait a long time to see their contribution accepted, and it demotivates experienced devs who just see a big pile of work that won't stop growing.

So it's great that someone took the initiative, thanks! But I doubt it can be solved within a few weeks just "by the way" as a few bullet points in this issue. The backlog exists precisely because reviews take a lot of time and effort, and we have just a handful of experienced devs who can do it, all with their own lives, time budgets and motivations. Clearing the backlog will probably require quite some team effort and several months at least. That is, if we want to avoid the "mark everything as stale and flush it down the toilet" approach. Authors of the affected PRs would probably think twice before investing time into making another contribution that could end up the same...

The code freeze could be good idea (but only for new features, not bug fixes), it could cool things down enough to give the dev team time to work on the backlog. Although at the same time, it could discourage new potential devs, who would be unable to submit their contributions.

It's just a hard problem to crack either way.. :-/


As for PRs where I'm involved:

@ryuukumar
Copy link
Member Author

Thanks for the PR updates, everyone.

Many of you have pointed out a concern that two weeks is nowhere near enough to finish reviewing and merging as many PRs as possible. I am convinced, so I suppose time till mid to end of August should be enough? That essentially does leave one month and a bit for everything.

As @he29-net pointed out, waiting for too less or too long are both problems. It's in our best interests to probably find a middle ground and finish merging most PRs. It's also enough time for all devs to respond (if they chance upon their PRs anytime soon). If they don't respond, then I can drop a message on their PRs to see whether they can finish it up or not. It's definitely bad if we ignore someone's hard work and just dump it. Since most probably these PRs will not be able to be merged after these changes, now has to be the time we do it.

It's probably going to involve a lot of work, and given the fact that write-access devs are few and usually busy, won't be an easy thing. But then again, it's best to solve the issue now before it expands even more into a big mess, discouraging new devs from developing.

I hope this shall leave enough time for most devs to ping back, and for as many (reviewed and tested) PRs to merge.

@softrabbit
Copy link
Member

I noticed this issue by luck, really. It's not like I keep going back to read my PRs every now and then, I've always expected relevant activity to throw a mail in my direction.

Anyway, I'm guilty of these:
#5236: Stale, I guess. It took 5 months, but a better way to do it appeared. Which kinda points at the long process being a good thing?
#5239: Stale. Something I totally forgot about and never got around to finishing. Doesn't seem like a big thing to do properly after the changes.

@claell
Copy link
Contributor

claell commented Jul 22, 2020

Since there is no email notification sent out the current way, maybe you can ping the devs by adding them to the first comment on this issue @russiankumar, like I tagged you in this comment. Hopefully that should trigger an email notification so the relevant devs are aware of this.

@ryuukumar
Copy link
Member Author

@claell sure, for those PRs which haven't responded I'll do as you say.

@softrabbit, could you clarify on whether you will finish the PRs or not? I'm marking them as stale in case you do want to restart work on them and get them ready for merge.

@tresf
Copy link
Member

tresf commented Jul 23, 2020

Ping all authors of all current PRs asking them to wind up by mid/end August

Let's not do this. Just focus on the large, active ones. No need to turn it into a circus

@ryuukumar
Copy link
Member Author

Okay, as you say.

@tresf
Copy link
Member

tresf commented Jul 23, 2020

@DomClark made a good point on Discord about the formatting PR, that we should pair that with a CI style enforcement-type job to keep the style guidelines from drifting. Might be an important precursor to large refactoring.

@ryuukumar
Copy link
Member Author

I think it's better to do that after we merged all the PRs that are going to be merged, then we don't need to redo it each time a PR is merged.

@tresf
Copy link
Member

tresf commented Jul 23, 2020

Yes as part of or as compliment of the code formatting PR.

@Cyp
Copy link
Contributor

Cyp commented Jul 23, 2020

Didn't know #5304 hadn't been merged. Just fixed some merge conflicts.

@thmueller64
Copy link
Contributor

thmueller64 commented Jul 24, 2020

#5502: Ready to review.
#5549: Ready from my side, the PR fixes the issue. I'll try to incorporate the suggestions by @Veratil (gradients instead of colors) in time, but those aren't strictly necessary for fixing the issue.

@RebeccaDeField
Copy link
Contributor

#5588 is going to be merged within the week, which will, in turn, make #4255 fine to close out (was going to after mine is merged in but if we want to speed things along I guess we can do so now?).

sdasda7777 pushed a commit to sdasda7777/lmms that referenced this issue Jun 28, 2022
@PhysSong PhysSong moved this to To do in Reorg Aug 2, 2022
@PhysSong PhysSong added this to Reorg Aug 2, 2022
@Rossmaxx
Copy link
Contributor

Rossmaxx commented Aug 8, 2022

As there have been many questions on why we have not closed it yet, I updated the list with the new, remaining tasks. Should all be doable...

Aren't they done, or are there anything else left?

@zonkmachine zonkmachine unpinned this issue Aug 20, 2022
@zonkmachine zonkmachine pinned this issue Aug 20, 2022
@zonkmachine
Copy link
Member

Ooopsie!

@pyrotek45
Copy link

I think its about time to update the stable version to the nightly, its been years since that's been done and most Lmms users use the nightly version anyways, which many repos don't offer. actually, I don't think any repo offers the 1.3.0 build and that's super annoying for many of us.

@issu-shooter
Copy link

Yes, the nightly version offers better performance and the GUI is somehow crisper, less blurry. I use the nightly myself, and gave people the 1.3.0 installer when they ask me for a free music studio software.

@rgndxzzk
Copy link

rgndxzzk commented Oct 5, 2022

Yes, the nightly version offers better performance and the GUI is somehow crisper, less blurry. I use the nightly myself, and gave people the 1.3.0 installer when they ask me for a free music studio software.

i didnt notice any changes in performance i just use it for the features

@allejok96
Copy link
Contributor

its about time to update

Agreed. But back to the topic, what's the plan for the reorg now? I know there's many changes underway related to decoupling qt from core and other big low-level cleanup efforts that aren't part of this reorg really. Devs haven't been sleeping. There has probably been lot of discussion on discord, but I wanted to ask here.

So what's the plan? Should we consider the reorg over and see if something can be done with the stale PRs. Ping the authors? Or should we just forget about that bullet point and let authors update their PRs in due time if they still have any interest?

Is there anything left that I'm forgetting?

@tresf tresf unpinned this issue Dec 16, 2022
@tresf tresf pinned this issue Dec 16, 2022
@issu-shooter
Copy link

Hmm, After allejok96 asked about what the plan is, it's been almost three months... Did the maintainers have forgotten this issue? Hope to see progress on this, everyone expects an update.

@sakertooth
Copy link
Contributor

Hmm, After allejok96 asked about what the plan is, it's been almost three months... Did the maintainers have forgotten this issue? Hope to see progress on this, everyone expects an update.

Not a maintainer, but it seems as if the reorg is essentially complete. The team was held back a bit by a couple of clang-tidy PRs, but #6564 should be the last one, as I haven't heard from @JohannesLorenz or @irrenhaus3 about adding anymore.

The plan after reorg is anybody's guess, but there are specific goals we have in mind, such as decoupling Qt from the core, as previously mentioned by allejok. I personally have ideas to start refactoring SampleBuffer little by little and simplify some of my PRs if possible.

The maintainers most likely did not forget about the reorg, but I agree that an update on the plan forward would be ideal.

@JohannesLorenz
Copy link
Contributor

I just went through all checks from clang-tidy that I would like to add, and non of them will have reorg-scope. So I am OK with finishing the clang-tidy-checks (and reorg).

@allejok96 @DomClark @PhysSong @Veratil do you have any more wishes for clang-tidy-checks or re-org in general? Otherwise I would say we can finish it.

@allejok96
Copy link
Contributor

If everyone's happy with the clang stuff I'd say lets move on. The main focus of our devs will probably still be related to refactoring and rewriting code, but IMHO this huge checklist can be closed.

I don't know what that will mean for the post re-org PRs, but I find it hard to believe features will come raining down once we officially end the re-org, although it would be a welcome change 😄 As I see it the bottleneck of LMMS development hasn't been as much related to the re-org, as it's been to the lack of people with enough spare time and commitment to fix our big painful issues and - maybe even more important and boring - lack of people with the skills needed to review everything...

Boring-code devs, this is for you 🏆

And for all you eager folks who's been sitting around and waiting for this to finish: don't get your expectations up too high. Instead read up on coding, and help us out in whatever way you can

@DomClark
Copy link
Member

DomClark commented Jan 1, 2023

I'm happy to move on. I have no objection to applying more clang-tidy fixes in the future, but don't feel the need to keep them as part of this one ongoing effort.

However, one thing I think would be worth doing is adding CI checks for the clang-tidy fixes that we have already applied. Otherwise there's no way to guarantee that we're still following those rules and we risk needing to do this all over again in the future.

@PhysSong
Copy link
Member

PhysSong commented Jan 1, 2023

I also agree with @DomClark's suggestion.

@JohannesLorenz
Copy link
Contributor

I will write a PR for the suggested .clang-tidy update.

@JohannesLorenz
Copy link
Contributor

I will write a PR for the suggested .clang-tidy update.

#6619 . Would be nice if someone could review this one-file-PR, so we can finish re-org 😁

@JohannesLorenz
Copy link
Contributor

So, there is no more code to change for reorg 🎉 We are currently discussing in Discord (dev-only) how to proceed with the "Reopen code for fresh PRs (or rebased old ones)" point.

@ryuukumar
Copy link
Member Author

Following our discussion on Discord, this re-org is now complete, and this issue can be closed. Congrats to everyone who worked on this project! 🎉

@github-project-automation github-project-automation bot moved this from To do to Done in Reorg Jan 21, 2023
@PhysSong PhysSong unpinned this issue Jan 22, 2023
@JLuc
Copy link

JLuc commented Feb 19, 2024

Does it mean that "track recording" (aka #3947) is now enabled ?

@JLuc
Copy link

JLuc commented Feb 19, 2024

Nope : cf #5990 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Done
Development

No branches or pull requests