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

Project modernization #53

Open
galijot opened this issue Apr 21, 2024 · 0 comments
Open

Project modernization #53

galijot opened this issue Apr 21, 2024 · 0 comments

Comments

@galijot
Copy link

galijot commented Apr 21, 2024

Thank you very much for maintaining this project!

I would like to contribute, if the following proposal would work and is acceptable by the maintainers.

Before I start, I'd like to ask about something that's been bugging me. I've found quite a few repositories related to wineskin, and I'm not sure what are their purposes? This repo, to me it seems, is "the main" repo, containing project's source code; is it? Other repos could be found at https://github.com/Gcenx?tab=repositories, though there's also https://github.com/The-Wineskin-Project with many wineskin-related repos. I'd appreciate if someone could clarify 🙏

Additionally, there are many stale branches in this repo. As of this writing, it seems the most up-to-date active branch is Unoffical_Wineskin. Is there a reason for keeping other branches?

I'm not familiar with how wine works, and I haven't explored this project in detail to learn the magic of how it integrates wine and how things work in general. Though I have experience developing for Apple platforms, and am experienced with Objective-C and Swift.
I have analyzed the project and found quite a few issues with it; deprecated method usages, main thread blocking with long running operations, etc.
I would like to list some things I've found that I believe would be great to resolve. My ultimate goal is modernizing the project and keeping it up to date, by which I mean potentially moving to Swift, and one day, who knows, maybe SwiftUI for UI. I'm eager to hear what others think.

Before I continue: I haven't even been able to successfully run all the apps in this project (I did some, but had to resolve some compilation issues), but I was so hyped about improving it that I wanted to create this issue. I'd obviously need help from experienced maintainers during this process, foremost to learn about the internals.

  • ObjectiveC-Extensions
    • This is the only library installed through a dependency manager, and if I'm not mistaken, there are many things in it that either aren't needed anymore or aren't used. The library itself has many warnings which would have to be resolved, and if such a large refactor would be done, it would be much easier if this library is directly inside of the project. That way we can slowly start removing things that aren't used, and stripping the library down to only the things that are needed for Wineskin.
  • Project groups and folders
    • Xcode project's files are grouped into groups, but those groups don't represent folders on the filesystem. For example, Wineskin project's Classes, Model, Functions and Views, they're all shown as groups in Xcode but those groups don't have their corresponding folders on the filesystem. I would like to change that so that it's much easier to do code review and navigate through files in GitHub repo. As we move forward, I'd propose a different folder structure, based on how we end up organizing everything.

These are some of the things I'd want to start with. I won't be listing many of the warnings about deprecated API usages, but those too are something I aim at solving. I also care very much about UI, so if we proceed with this, I'd be happy to revisit that one day as I've found there are many warnings in XIP files too (like missing constraints).

Let me know what you think @vitor251093 @Gcenx

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

No branches or pull requests

1 participant