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

Searching for a new Maintainer #1144

Open
stefandollase opened this issue Oct 3, 2024 · 4 comments
Open

Searching for a new Maintainer #1144

stefandollase opened this issue Oct 3, 2024 · 4 comments

Comments

@stefandollase
Copy link
Contributor

stefandollase commented Oct 3, 2024

This project is searching for a new maintainer. If you are interested, please write a comment below and mention @stefandollase.

Related: #483 #1133

@SWinxy
Copy link
Collaborator

SWinxy commented Dec 27, 2024

Hey @stefandollase, I'm actually interested in taking up this. Amidst is an app I used a decade ago. I recently re-found this project and I wanna give it some of my love. I currently maintain lwjgl3-awt and have contributed to the JDK's AWT & Swing APIs, which Amidst uses. I also am developing my own Minecraft world editor similar to MCEdit and Amulet, but written in Java and not Python.

I might be a good fit for Amidst; I'd have to get familiar with the codebase first. There are 32k LoC and a most of it is undocumented. Despite that, spot checks are really easy to follow, and I'm very pleased the git history goes all the way back to the beginning!

What is your history with Amidst? I'm curious! Can you describe the workflows set up for Amidst?

@stefandollase
Copy link
Contributor Author

Hi @SWinxy, thanks for reaching out!

There is some documentation in the wiki, which explains some features, internals, history, developer instructions and workflows. I assume the build process is still working, but the Travis CI build is probably broken and needs to be ported to GitHub actions.

Indeed, there is only few documentation beyond the code itself. I prioritize clean code over lengthy documentation, which quickly becomes out of sync with the code. However, a few classes have comments to explain very general concepts, e.g., see here or here. Additionally, there are some integration tests to ensure that the generated map is not accidentially changed. Finally, these dev-tools might be helpful.

My history with Amidst is the following: I was a user of Amidst and interested in how it was working, which I roughly described here. I was aware of the fact, that the Minecraft jar file was obfuscated and that Amidst still used it to generate its map, without being a mod and without using Minecraft as a library in a traditional way. So I started to dig up the code to understand it and refactored large portions of it along the way. In the end, I extracted the DefaultClassTranslator, which contains all the necessary information about how to resolve the obfuscation and which enables much simpler adjustments to the recognition when a new Minecraft version is released. I moved amidst into this repository, continued to clean up the remaining code base and added the automatic build, integration tests and dev-tools. Soon afterwards, my time for the project was very limited, so I handed it over to moulins. I was very thankful to find a community member willing to continue the project. Only recently, when I wanted to use Amidst again, I noticed that the last commit was more than three years ago, so I decided to search for a new maintainer, assuming moulins also ran out of time for the project, which is understandable.

I looked at your activities and I agree that you would be a good fit to maintain the project! Please make yourself more familiar with it. If you have any questions or run into issues, please open an issue and mention @stefandollase. For now I granted write access for this repository to you. When you made yourself familiar with the project and are ready to actually take over the project, please let me know.

@moulins: Do you have anything to add that would ease the transition? Or do you see a problem with the suggested process?

@SWinxy
Copy link
Collaborator

SWinxy commented Dec 28, 2024

Super! I have no familiarity with the Minecraft JAR, so that may take me some getting used to. Other than that, everything looks to be in decent shape. Cloning and running it was a breeze, no issues there.

Some goals I have for Amidst:

  1. You mention the Travis build might not be working, and GH Actions is generally what most OSS use nowadays.
  2. Packaging a JRE alongside the app is how Java applications aught to be distributed now, rather than dealing with users having to download Java 8 from last century. Doing so means a more consistent Java runtime, and is often much smaller in size than a full JRE with jpackage.
  3. Euclid Editor (my aforementioned world editor) uses FlatLaf, which provides phenomenal modern L&Fs. While the default L&F has a certain charm to it, it doesn't cohere with the biome viewer.

I really appreciated reading about your involvement here and on the wiki. I didn't realize there had been another maintainer. I'll ease myself into the role over the next month while tidying up. Honored to be working on this.

@stefandollase
Copy link
Contributor Author

I appreciate your enthusiasm and like your goals! Just some thoughts about them:

  1. Fixing the automatic build sounds great! Let me know, if you need more permissions for something.
  2. I would like a modern packaging, which includes a current JRE in the app. I never really liked the wrappers for Mac OS and Windows. Probably all of this can be cleaned up. Since Minecraft 1.17, Minecraft actually seems to require at least Java 16 and at least Java 17 for later Minecraft versions, see here. Since Amidst actually calls the Minecraft code, Amidst also needs to use at least that minimum required Java version for the given Minecraft version. This should not cause too much trouble for earlier Minecraft versions, since Java is mostly backwards compatible. Lets just hope that older Minecraft versions don't use any now deprecated Java features. One issue to keep in mind, however, is the Modules System introduced in Java 9, which might not allow Amidst to call the Minecraft code via reflection, but I am not too sure about it. It also might just work out without any issues, if neither Amidst nor Minecraft actually uses the Module System.
  3. I don't have a strong opinion about the Look & Feel. However, I remember there being some issues with different Look & Feels (e.g., see switched windows to use the default Java look and feel #86). If you want to switch it over, and it works fine, go ahead!
  4. Sooner or later it would be nice to add support for current Minecraft versions. To do so, one probably has to adjust the DefaultClassTranslator, or even add a new one for more current Minecraft versions, if the biome generator changed a lot. To support new structures, their generation logic probably has to be added directly to Amidst. I think the modding community has a tool to deobfuscate the Minecraft jar file, so it might be helpful to look into it, to learn how to call the biome generator. Just remember, that we cannot copy any Minecraft code into Amidst, due to copyright issues.

Happy coding =)

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

No branches or pull requests

2 participants