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

Find linapple ∀(linapple) and use it! #37

Open
knghtbrd opened this issue May 3, 2018 · 14 comments
Open

Find linapple ∀(linapple) and use it! #37

knghtbrd opened this issue May 3, 2018 · 14 comments
Labels
help wanted priority:normal Things that need doing

Comments

@knghtbrd
Copy link
Member

knghtbrd commented May 3, 2018

Trivia: Read ∀ as "for all".

Linapple's upstream developer released version 2b, but never put it into any SCM that I know of. However sometime perhaps before or after that was done, maxolasersquad/linapple was created from version 2a. There are 14 forks of this repository, and these do not encompass all versions of linapple on Github—and none of them have the 2b changes. Here's the hierarchy as best I can sort it:

  • maxolasersquad/linapple 1 commit ahead of 2a, 2b applies cleanly, no other changes
    • arloduff/linapple old changes found in most other forks (hereafter "just ahead")
    • blinkdog/linapple just ahead
    • bpiq/linapple just ahead
    • brentjohnson/linapple just ahead
    • catseye/linapple 53 commits ahead of maxolasersquad
    • fisher/linapple just ahead
    • ghedger/linapple 49 commits ahead of maxolasersquad
      • jvernet/linapple 6 commits ahead, 36 commits behind ghedger
        • LasDesu/linapple 5 commits ahead, 1 commit behind jvernet
          • stanhuff/linapple even with LasDesu
  • LaurentMarchelli/linapple just ahead
  • mecolosimo/linapple just ahead
  • moneytech/linapple even with maxolasersquad
  • taotetek/linapple just ahead

Of these, @cpressey (catseye tech) and @ghedger are the ones to be watching because they've both been actively working on this codebase. Looks like ghedger has called it 2.1 at this point, but cpressey has important stuff like … a fix to the 777 problem. A merge is needed here.

And that's just one fork tree!

  • dabonetn/linapple-pie is 2b based with changes for launching from a frontend like EmulationStation, has the ability to insert disks into drive 2 from CLI, can read linapple.conf from ~, uses XPM files rather than bmps (via SDL_image) so it need not install/find BMP files. (I like the idea of XPM for GitHub, not 100% sold on baking them in…) @dabonetn is probably unaware that new development on linapple exists, but might rebase changes off a newer fork if one fork becomes "the" fork.
  • dabonetn/linapple-tb is the above modified for the Asus TinkerBoard. Didn't diff this against linapple-pie, but it might be worth doing.
  • gungwald/applelin seems pre-2a even. @gungwald made a couple of bugfixes and stopped. If any of those are still bugs we should at least look. :)
  • jmparis/linapple is mostly minor makefile changes to get it to build. I am not sure quite what @jmparis started with because he doesn't appear to have started with a 2b readme file, but added those changes later. Because of the terse commit logs, I scanned each diff since there weren't many. As with most changes, there's an effort to try and make the handling of required supporting assets better.

There you have it. That's what I was able to find easily. Several sites redistribute these or the original in various states from 2 to 2b. Two major forks. Which one do we use or do we try to encourage work toward a merge? AppleWin has had massive development since these trees and a fresh port to SDL2 could be a path of low resistance but that further fractures things and it's way beyond the scope of a2cloud and beyond my free time to even begin thinking about actively maintaining an emulator.

None of these projects is blessed by the initial creator to my knowledge who did not respond to email on the subject, so I'm inclined to assume that if someone wants claim to the successor of linapple, those others who want to see linapple still be a thing can declare by acclamation that the title is theirs. Ideally we would rebase some forks at that point.

@knghtbrd knghtbrd added help wanted priority:normal Things that need doing labels May 3, 2018
@knghtbrd
Copy link
Member Author

knghtbrd commented May 3, 2018

If y'all think this is fun, you should see what the state of KEGS-derived emulators looks like. Hoo boy. Fortunately a dominant successor HAS emerged in GSPort, and GSPlus has not diverged from it too much—though likely primarily because GSPort development is fairly stagnant rather than because @digarok necessarily wants to track GSPort changes. Now that it has moved to GitHub, GSPort is not the ancestor of GSPlus, but it could be in about 20 minutes and I'll personally do all of the work that I can do to make it happen if @digarok will let me. :) It's unfortunately not a trivial rebase because gsplus is full of mixed line-endings. If you know where the fork happened (and I do, it's it's david-schmidt/gsport@1462ff), you can do this song and dance where you fork that on GitHub, branch off there, merge in gsplus, make the new fork look identical to gsplus, and then swap them. The trick is to do it without rewriting history (git replace is how you do that.)

It's easier for all the repos that are forked off maxolasersquad/linapple since all you need to do is clone them, delete the fork on github, re-fork from your new base, and push your cloned state to the server unconditionally. GitHub will figure it out.

@ghedger
Copy link

ghedger commented May 3, 2018

Yes, I did change the label. Fixed an off-by-one cycle count problem for the Mockingboard emulation (that was fun) - eliminates the choppiness in games that play MB music and sound, and a few other little things, cannot remember. Something to do with loading config files and Windows Registry emulation... I think I'd added scanline emulation to emulate the composite color monitors somewhere along the line too. The codebase is a bit of mess...

Oh yes, I remember: I made a proper Makefile for the thing and a more conventional development directory structure (src/ include/ obj/ bin/), and believe I'd created an Ubuntu package.

Not sure where Tom Charlesworth is these days - I had worked with him in 2004 on the Mockingboard speech emulation (263 chip) because I have an actual Mockingboard in an Apple IIe. Don't have time at the moment and so few programs actually used it, but it would be a cool achievement nonetheless.

The next big spate of work will involve updating from the the SDL it's using to the next major version. I recall looking into the scope of that; it's rather robust and I'd need a significant block of uninterrupted time.

@cpressey
Copy link

cpressey commented May 4, 2018

Just in case it helps clarify things for anyone trying to untangle the history, I forked https://github.com/catseye/linapple from https://github.com/timob/linapple originally - it seems that as some point, that repository was deleted, and Github "reparented" my fork (and possibly other forks) to https://github.com/maxolasersquad/linapple .

I mainly made my fork to support launching a Funicular to run Apple Befunge; that is, I wanted an emulator you could start simply by running linapple foo.dsk in any directory. Much of that functionality comes from a branch in @arloduff's fork, which I merged into master in my fork. If there was a "more official" version of linapple that supported this mode of operation, I probably wouldn't bother to maintain a fork at all.

I wasn't aware there was a version 2b before today.

@iKarith May I ask, what does "the 777 problem" refer to? (fixing the file-permission bits?)

@gungwald
Copy link

gungwald commented May 4, 2018 via email

@dabonetn
Copy link

dabonetn commented May 4, 2018 via email

@ghedger
Copy link

ghedger commented May 4, 2018

I don't have time to do anything right now as I'm embroiled in another project, but do have some thoughts on the subject.

Rambling thoughts:

I focused mostly on the audio aspects of systems. Note there is some challenge in GS vs. the 8-bit Apples. On real hardware back in the day I did have a Mockingboard in the GS, and it was hit or miss depending on how the individual program detected MB. The thinking then was that, because the GS was so much more capable there was no real need for full support of the add-ons for 8-bit software. Actually, the thinking was all over the map because unified desktop-based environments were still so new (which, BTW, lends to the charm of the early 8-bit software, how different developers solved problems.)

What would be super duper cool is a Super ][ emulator that consolidates the capabilities of the 8- and 16- bit Apple II platforms, even beyond the IIGS's modest 8-bit emulation capabilities. A "mode select", for example, could select the model of Apple II you wish to emulate, including the IIGS. Some of the 8-bit emulators had this for 8-bit Apples. The IIGS's native 8-bit emulation, while good, didn't quite get all the way there...

Again, just musings...

@knghtbrd
Copy link
Member Author

knghtbrd commented May 5, 2018

I never addressed the 777 problem: It's that linapple installs a bunch of stuff into the filesystem with mode 777 (NEVER a good idea, that's like posting your root passwd on a billboard along with your address and how to get into your local wifi…) It does that because it needs to be able to read and write the directory it's run from. It can't use ~/.local/share or ~/.config or read a system config out of /etc or /usr/local/etc … These things are fixable, but linapple was based on AppleWin which didn't know how to do that. And the easy way to fix them in SDL2 isn't available to us unless or until linapple is ported to SDL2. (And arguably SDL2's approach is a little hamfisted—I get why Sam did it that way, but I disagree with his lack of granularity in a purely Comic Book Guy sort of way.)

Regarding 2b and moving toward a master repository, I submitted a PR maxolasersquad/linapple#1 to bring it up to 2b, but perhaps one of you might prefer to apply the changes from that as necessary to your own branches. It's not a massive diff, after all and I'm happy to provide it if you'd like to start cherrypicking hunks and reimplementing others as necessary.

Sounds like none of you is 100% eager to become the linapple maintainer. As a guy who has my own projects myself (maintaining an emulator has very little to do with a2cloud), I totally get that! :D But I'd be happy to create a linapple/linapple either from 2b or from some point in your perhaps shared histories (maybe merging in the @timob tree changes?) and invite you all to the party. It won't be an entirely automated process because at least one of you has done pretty extensive moving of files. Git can follow that, but diff gets confused.

Anyway, if you're all (for all interested) part of the linapple/linapple repository you can PR your own changes into it as you feel is necessary. It'd be trivial to create a channel on the apple2 slack server to discuss this stuff. And if it's done by the group, nobody's really solely responsible for it by themselves.

@knghtbrd
Copy link
Member Author

knghtbrd commented May 8, 2018

I haven't forgotten about this—I've just had a bit higher priorities the past few days. @maxolasersquad just merged the 2b changes (thank you!), so there's our starting point.

David, TL;DR: Original LinApple creator seems totally MIA, many patches and improvements scattered across repos. I propose collecting them into a linapple/linapple and inviting these fine folks to join the party so none of them are "responsible for it" individually. Dunno if you'd want any part of that.

After timob's tree was deleted, GitHub rehomed the repos to all be forks of yours. My intent is to recreate timob's tree (which can be found in many shallow forks) along with with maxolasersquad/linapple#1 as the starting point for properly having any of us interested adopting LinApple together, pulling in changes oldest to newest. Might be a bit of a slow process as a2cloud and a2server need to be my priorities for now.

@maxolasersquad
Copy link

My C skills aren't great, I mostly do web development, but if there's anything I can do to help let me know. I would even be willing to transfer the project to another namespace if that's helpful. I originally put the code up here for a project I was going to work on that's similar to Emulation Station, but I never got it off the ground.

@knghtbrd
Copy link
Member Author

Thanks David, that might make things easier. If you wind up interested in something, please feel free to contribute or not as you can. We might need a new website at some point in the near future, but I don't think it needs to be anything impressive. I figured a GH org page would suffice unless someone has a mind for something better.

Would you believe that both linapple and applelin are taken? :) The former appears to use GitHub, the latter not so much. So I registered linappleii for that. @dabonetn, do you want to hang around this effort until it's behaving well under EmulationStation? Didn't seem like you're interested much beyond that, but happy to invite you along.

@dabonetn
Copy link

dabonetn commented May 12, 2018 via email

@knghtbrd
Copy link
Member Author

Okay, it's pretty much settled at this point: linappleii/linapple is our ∀(linapple), quite literally as I have just spent the past few weeks getting it all merged together. That doesn't yet close this issue as I don't think the merged tree is quite ready for us to use in a2cloud, but at this point it's a matter of cleaning up make install, making use of SDL_GetBasePath and SDL_GetPrefPath (which I've just backported from SDL2 into a shim), and redoing the Debian package stuff @ghedger has started.

@knghtbrd
Copy link
Member Author

Hey @jmparis, do you want to join this little party? TL;DR: I've kinda adopted LinApple since it's been abandoned for so long along with these other folks as linappleii/linapple. We all have varying skills and time availability, but anyone who wants to work on it is welcome to contribute where they can.

@ghedger
Copy link

ghedger commented Dec 28, 2018 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted priority:normal Things that need doing
Projects
None yet
Development

No branches or pull requests

6 participants