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

Centralize development #14

Closed
ianfixes opened this issue Mar 1, 2019 · 47 comments
Closed

Centralize development #14

ianfixes opened this issue Mar 1, 2019 · 47 comments

Comments

@ianfixes
Copy link

ianfixes commented Mar 1, 2019

I noticed you are quite a few commits ahead of the main fork of this project, and that the main project is in a poor state of maintenance. I'm trying to set this up as a more conventional open-source project at https://github.com/emaculation/BasiliskII

Can I help integrate your work into that repo?

@kanjitalk755
Copy link
Owner

You can merge my repo, but note following points.

  • supports macOS10.7+(x86_64), Linux(x86) and MinGW/MSYS(x86) only
  • supports SDL2 only

@ianfixes
Copy link
Author

ianfixes commented Mar 2, 2019

Does that mean you've made edits that specifically break the windows build, or just that you haven't applied your fixes to all platforms?

@kanjitalk755
Copy link
Owner

When I forked from cebix/macemu, I could not build Windows version.
Then I merged rakslice/macemu and fixed, I could build it using MinGW.

@ianfixes
Copy link
Author

ianfixes commented Mar 3, 2019

Tomorrow I will see if I can integrate the build steps from your README.md, thank you for writing those down.

What do the 2 top sections in the README indicate?

@kanjitalk755
Copy link
Owner

Those are:

  • platform
  • binary type
  • supports JIT or not

@ianfixes
Copy link
Author

ianfixes commented Mar 3, 2019

Thanks.

It's my goal to support the build & test aspects of this project (i.e. DevOps), so that it can work as a community-driven development model instead relying on a single owner (who seems to have retired himself from the project).

As you seem to be one of the most active developers, I would prefer to make you an admin of https://github.com/emaculation, pull in all your changes, and have you continue your development there. Would you feel comfortable in that role? If not, what could I do to meet you halfway on it?

@kanjitalk755
Copy link
Owner

I am whimsy and not suitable for admin.

My main work is finished.

Currently I am only making small fixes when I feel like it.

@ianfixes
Copy link
Author

ianfixes commented Mar 4, 2019

My main work is finished

That's good to know. My suggestion of making you admin was primarily so that you could merge your own work easily -- what I'm hearing you say is that there's not a high demand for that. Knowing that you're only making small fixes at this point also makes me more comfortable integrating your work into this fork.

That leaves 3 questions for me:

  1. Is there value in me trying to merge your work as individual commits, or would just squashing it into a single snapshot be fine?
  2. Are there other developers you've worked with as you've pushed this project forward who I should reach out to?
  3. As I set up build tests, how many different combinations should I prepare to build for? It sounds like there are the following variables:
    • platform (Linux, OSX, Windows, BSD, BeOS, AmigaOS, etc)
    • JIT / no JIT
    • GUI / no GUI
    • 32-bit/64-bit
      Are there any others?

@kanjitalk755
Copy link
Owner

Is there value in me trying to merge your work as individual commits, or would just squashing it into a single snapshot be fine?

I recommend individual commits. It is useful when identifying a commit where problems occurred.

Are there other developers you've worked with as you've pushed this project forward who
I should reach out to?

I didn't cooperate at the same time, but I merged repo/PRs of following developers.

As I set up build tests, how many different combinations should I prepare to build for?

I confirmed build and run in my repo as follows.

  • BasiliskII
platform JIT / no JIT GUI / no GUI 32-bit / 64-bit
OSX no JIT no GUI 64-bit
Linux JIT no GUI 32-bit
Windows JIT no GUI 32-bit
  • SheepShaver
platform JIT / no JIT GUI / no GUI 32-bit / 64-bit
OSX JIT no GUI 64-bit
Linux JIT no GUI 32-bit
Windows no JIT no GUI 32-bit

Here, the GUI is whether or not to use GTK.

@jvernet
Copy link

jvernet commented Mar 5, 2019

Hi,

I will not work anymore on my fork, you can add the 64 Bit Slirp patch and merge it in your repo.
I will make your repo as my main branch. Can I make my repo private and closed now?

I need a repo wich:

  • Use SDL2
  • can be built under Sierra as I do not have more (may be High Sierra one day)
  • Is 64 bits compliant and have Network working -it was working with my build, can have access to my AFP NAS-
  • have 2 Xcode Project (at least, XCode 8) to build SheepShaver and Basilisk for Macosx 12 min.

We need a Cocoa native GUI, and way to load Disk Images during execution, also. Is there a way ?

@kanjitalk755
Copy link
Owner

Can I make my repo private and closed now?

Yes.
My repo is already merged your 64-bit clean slirp.
My main work was to make 64-bit SheepShaver be runnable under current macOS.
Thanks to you network is also usable.

The four points you presented can be realized in my repo.

We need a Cocoa native GUI, and way to load Disk Images during execution, also. Is there a way ?

It may be possible in the future.
Would you like to post to github.com/emaculation/{BasiliskII,SheepShaver}/issues.

@jvernet
Copy link

jvernet commented Mar 5, 2019

I'm lost. Wich repo should I use ? Yours https://github.com/kanjitalk755/macemu/ or github.com/emaculation/{BasiliskII,SheepShaver} ?

@ianfixes
Copy link
Author

ianfixes commented Mar 5, 2019

@jvernet I'm in the process of establishing https://github.com/emaculation/ as the new home for these codebases, since the original author is apparently incommunicado. But at the moment, I'm still working out exactly how to merge all the disparate pieces of independent development. At this point, those are the folks who are most knowledgable about this project and how to build it...

@kanjitalk755 should I simply use your fork as the most up-to-date code available, and try to merge https://github.com/cebix/macemu into that?

So far I haven't been able to make contact with @asvitkine, who I think would have a lot to offer this discussion (as they seem to have merge privileges on the original repo). Do any of you know how to get in touch with them?

@kanjitalk755
Copy link
Owner

@jvernet
From now on github.com/emaculation is probably good.

@ianfixes

should I simply use your fork as the most up-to-date code available, and try to merge https://github.com/cebix/macemu into that?

Yes, that is the latest I think.

As a trial, I merged my repo with upstream. As a result, I could build and run without problems.

Do any of you know how to get in touch with them?

Unfortunately I don't.

@ianfixes
Copy link
Author

ianfixes commented Mar 6, 2019

@jvernet if I build each of the combinations listed in the table in this comment, will that demonstrate the 64-bit + SDL + OSX binary that you need?

@jvernet
Copy link

jvernet commented Mar 6, 2019

Not SDL. SDL 2.

SDL 1 is EOL. But SDL 2 do not work on PowerPC.

cebix/macemu is SDL1 only, so far ?
kenjitalk repo is SLD 2 only ? Or you can make a choice to use either SDL1 ou SDL 2 ?

@kanjitalk755
Copy link
Owner

cebix/macemu is SDL1 only, so far ?

Yes.

kenjitalk repo is SLD 2 only ? Or you can make a choice to use either SDL1 ou SDL 2 ?

Yes, SDL2 only.

@ianfixes
If you would like to support as follows, it cannot be done with simple merge.

  • both PowerPC and Intel
  • both SDL1 and SDL2
  • OS X 10.4+

@ianfixes
Copy link
Author

ianfixes commented Mar 6, 2019

@kanjitalk755 there's a symbolic link here https://github.com/kanjitalk755/macemu/blob/master/BasiliskII/src/Unix/Linux/NetDriver/config.h

It refers to this nonexistent file:
https://github.com/kanjitalk755/macemu/blob/master/SheepShaver/src/Unix/config.h

Is that a file that exists locally on your machine?

@kanjitalk755
Copy link
Owner

Is that a file that exists locally on your machine?

No. The link is dead.

@ianfixes
Copy link
Author

ianfixes commented Mar 6, 2019

OK -- I will delete and assume that I'm not breaking anything.

@ianfixes
Copy link
Author

@kanjitalk755 is there a discussion medium that already includes the developers you named in this comment? I'd like to solicit their input on a few aspects of my refactor.

@kanjitalk755
Copy link
Owner

I think https://emaculation.com/forum is good.
It's mainly users forum, but developers also post.

@ianfixes
Copy link
Author

After some consideration and experimentation, I am leaving BasiliskII and SheepShaver together for the time being. https://github.com/emaculation/macemu

When was the last time either of these built on OSX with Xcode? I'm getting linker errors.

@kanjitalk755
Copy link
Owner

Because I updated yesterday (28 Mar), I confirmed that BII/SS could be built with Xcode.

The linker error is because utils_macosx.mm is reverted by emaculation/macemu@1968051.

@ianfixes
Copy link
Author

Thanks! That would have taken me an embarrassingly long time to notice. OSX and Linux targets are now building properly in CI, which leaves Windows. I don't have access to a Windows machine to try the build myself, so I've been doing trial and error against Appveyor CI for most of the afternoon.

I know that I still have to sort out the library installation of SDL2 and GTK2, but if you see anything else that's amiss here I'd be grateful for your expertise:
https://ci.appveyor.com/project/ianfixes/macemu/builds/23442054

@kanjitalk755
Copy link
Owner

Under Windows, I confirmed BII/SS can be built with MinGW/MSYS(not MSYS2).
I think some fixes needed to build with Cygwin.

@ianfixes
Copy link
Author

I don't have any particular attachment to Cygwin, that was just the install script I started from. If you have a local build script that you use for windows (either CMD.exe or PowerShell) that installs the dependencies and sets up whatever paths are required, that would be a great help to me.

@kanjitalk755
Copy link
Owner

Refer "Build kanjitalk755's BasiliskII code in Windows".

https://www.emaculation.com/forum/viewtopic.php?f=6&t=10019

@ianfixes
Copy link
Author

Thank you... build guides have been easy to find, but so far all of them have been incomplete outdated. I'll see what I can do with this.

@ianfixes
Copy link
Author

These instructions for installing SDL don't seem to work, or perhaps the build command for BasiliskII isn't sufficient to find the installed library? This is where I'm stuck:
https://ci.appveyor.com/project/ianfixes/macemu/builds/23454027/job/3evq3bnfa0p3cno0

@kanjitalk755
Copy link
Owner

Just now I succeeded to build BasiliskII under Windows7(x86) according to the guide.
I have never used AppVeyor, so I don't know why it fails.

@emendelson
Copy link

Did you try pressing Alt-F4, to see if this problem still exists:

https://www.emaculation.com/forum/viewtopic.php?f=6&t=10023

@ianfixes
Copy link
Author

Is that directed at me? What I'm seeing in my builds is just a failure to compile because it can't find SDL.

AppVeyor has a feature where it can spin up remote desktop at the end of the build so that you can poke around and see what might be happening. I will try a few more things... this is made slightly awkward by the fact that I can't actually run msys.bat via the AppVeyor scripting interface, as it would just open a new window in the GUI and my commands would not be redirected to that new window.

Alternatively, I could put everything into a build script and just execute the script ... but I'm unclear on how I would launch such a script in the MinGW shell you referred to in the forum post.

@ianfixes
Copy link
Author

@kanjitalk755 is building the linux kernel module in BasiliskII/src/Unix/Linux/NetDriver still required to run the linux binary?

@kanjitalk755
Copy link
Owner

NetDriver is optional.

@gaelicWizard
Copy link

gaelicWizard commented Jul 22, 2021

What's the current news on the "central" repository? I love the idea of having an "all together" repo, but it seems like @kanjitalk755's keeping on moving forward but the @ianfixes repo is somewhat out of date (but much less out of date than some others!).

And now I see that someone has forked this repo for "flatpack" and started purging legacy code #96

@ianfixes
Copy link
Author

ianfixes commented Aug 3, 2021

The short answer from me is that at this point, I feel that I have failed to centralize this repository. I would still like to see centralization happen, but I'm no longer certain that I am a viable steward for it.

For context, I am a long time (20+ years) user of BasiliskII -- I first started using it before I knew how to write software (beyond Apple BASIC copied from 3-2-1 Contact magazine). When installing it on a new computer, I noticed that the homepage and github project page showed signs of abandonment -- @kanjitalk755 seemed to be providing the most support and new releases, and a few other forks had introduced some bugfixes that were not being incorporated into the main project (cebix seemed to have disappeared).

My intention was to simply shore up macemu in its entirety to what I would consider "modern" best practices for an open-source project: an organization to own it, clear contributing guidelines, issues in the issue tracker (vs a todo.txt), and continuous integration for all supported platforms. In other words, what I would consider the bare minimum for (a) giving a potential contributor the tools they need to submit improvements to the project and (b) giving the maintainer the tools needed to efficiently evaluate those contributions for correctness.

I ran into several problems:

  • There is scant documentation on setting up one's development environment (dependencies, etc) for any of the platforms. I spent hours trying to get things to build on Windows, to no avail -- can't even get the dependencies set up.
  • The project is a monorepo containing 3 sub-projects that would ordinarily be thought of as 3 separate GitHub repos (more on this in a sec)
  • The style of the Makefile configuration is a bit dated -- hand-configured instead of using something like autotools or cmake to handle cross-platform stuff.
  • Basilisk and SheepShaver share code. Literally -- the Makefile copies code from one tree to the other during build 😨
  • At some point, development resumed on the main fork of the project -- some developers were given admin access, it looks like
  • It's unclear which developers are best placed to answer questions to newcomers, and incidents involving some nasty communication (like the one resulting in the fork for flatpack) left me uncertain about the level of cohesion among the developers here

I will take responsibility for a good chunk of the legacy code purge -- I now know that I was mistaken to assume that nobody has development environments set up on machines that haven't been manufactured in 30 years. I continue to hope that these environments can be faithfully replicated via qemu (or similar) to produce working CI builds & unit tests for these platforms... if not, I have yet to be convinced that their future is stable.

TL;DR

I'd be overjoyed to reboot my efforts to centralize this project if there is someone I can depend on to help answer questions. I have some relevant experience with GitHub, GitHub Actions, and revitalizing antique software or working around ridiculously difficult build system problems.

@asvitkine
Copy link

asvitkine commented Aug 3, 2021 via email

@ianfixes
Copy link
Author

ianfixes commented Aug 4, 2021

There is one excellent contribution that can be made by a maintainer: make the decision on whether platforms that can't be built on GitHub should continue to be supported. I'm happy to help establish a functioning compilation environment for as many platforms as possible, by any means that are necessary (emulation, etc). But someone with authority on the future of the project needs to make that call one way or the other.

In my opinion, any & all refactoring work being discussed here would be guided by compilation tests succeeding or failing; I don't see how it would be practical to accomplish that [to any degree of confidence] without a cross-platform build farm ready to vet the proposed changes.

Windows, Linux, and MacOS are readily available in GitHub Actions. What other platforms should we make an effort to emulate?

@asvitkine
Copy link

asvitkine commented Aug 8, 2021 via email

@ianfixes
Copy link
Author

ianfixes commented Aug 9, 2021

It occurred to me that there is a better first step than "set up CI and dump the platforms that it can't support"... I'd like to find out where the users are for these more obscure platforms, so I can work with them directly to help get a working environment up and running via Qbox / Qemu or similar.

I put out some feelers locally (there is a computer museum in my state), to find out if there are folks who can advise on any of this. Are you in touch with such a community? I'd like to start there.

@asvitkine
Copy link

asvitkine commented Aug 9, 2021 via email

@ianfixes
Copy link
Author

ianfixes commented Aug 9, 2021

Would you be willing to kick off / moderate that discussion thread? I would be a relatively new & unknown user on that forum, so (1) wouldn't know where best to raise the question and (2) wouldn't be familiar with the normal pace of discussions on that board.

@RonaldPR
Copy link

  1. BasiliskII and SheepShaver have separate forums on Emaculation forum. You could start a topic in the "General Macintosh Emulation" forum and ask forum members for their opinion.
  2. Do you already have an Emaculation forum account? If so, by which name?
  3. Why did you use "emaculation" in the name/address for your repo while the repo is not related in any way to Emaculation.com?

@ianfixes
Copy link
Author

ianfixes commented Aug 10, 2021

I will start a topic there. I had been getting by with simply reading the forums and reaching out to members via GitHub usernames, but now I've created the user ianfixes on there and will take your advice about starting that discussion.

Why did you use "emaculation" in the name/address for your repo while the repo is not related in any way to Emaculation.com?

The short answer is "so that I could hand it off to a member of that community".

The long answer is that ~3 years ago I was trying to find out where the codebase and developers for BasiliskII had ended up. What I found was:

So all signs pointed to emaculation.com being the de facto owners and maintainers of the code. I can't find any sign of a more relevant community that both uses and furthers the development of projects like BasiliskII, SheepShaver, etc.

It was and is my intention to add any & all interested parties from the emaculation.com community as administrators and remove myself from that role. I believe that to be far more sensible than attempting to do development out of a repo that is tied to a mostly-dormant github account. This is based on my own personal opinion that in 2021, a healthy-looking GitHub organization is a more sustainable place to host, collaborate on, and release software than in a forum. But I didn't get very rapid responses from the people I tried to contact, and then later the pandemic hit.

Can I add you as an admin on the emaculation github org?

@RonaldPR
Copy link

Emaculation.com is not the owner of te code. It is a community of users of various Mac emulators, some of which also contribute to the source. New builds of BasiliskII and SheepShaver from source are posted in the forum by more experienced users, like myself.

The last regular BII/SS developer, Gwenole Beauchesne, stopped working on the source around 2006. Many different developers have contributed since. The original source code was moved from sourceforge to GitHub cebix/macemu in 2012. The owner is Alexei Svitkine (asvitkine).

Various forks have been split off, each with its own advantages. A couple of years ago kanjitalk755 merged some of the more interesting forks together in his fork on kanjitalk755/macemu
As that fork was then more advanced than the original source, we switched around 2018 from cebix to kanjitalk755 source for the builds posted on emaculation forum. Improvements are made by kanjitalk755 himself, but also others contribute.

Both kanjitalk755 and asvitkine have emaculation forum accounts, asvitkine under a different name.

No, I am not interested in being added as an admin on emaculation/macemu

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

7 participants