Hi there!
I've been developing AmiModRadio for Amiga computers, to download and play music from the Internet, and I'd like to learn NeXT programming by writing a similar program for my NeXTStation :)
I'm completely new to NeXT programming and it seems that NeXTStep doesn't have something like ARexx so I wonder if there's a way to control another program programmatically? Or maybe to control the mouse to mimic a user clicking here and there?
Cheers!
Tygre
Hi
@tygre , please have a look at the freeware Journaler .app from 1994.
Attached are:
Journaler.NIHS.bs.tar.gz from next-ftp.peak.org
Journaler.NI.bs.tar.gz from Peanuts.
From their Journaler.README :
QuoteWhat does this program do?
This program records mouse and keystroke events that occur within any application (or applications) you want, allowing you to save these events, and play them back later, thus recreating the exact sequence of events you recorded.
Maybe you can find some inspiration from the included source code.
Thanks a lot, Marvin! :)
Let us know if you have any success. I would like to eventually get time to make a VNC server for OpenStep and capturing replicating mouse and keyboard input is one of the critical pieces.
Hi Jeffburg and Marvin!
Yes, some progress today: I downloaded and compiled Journaler successfully. Then, I duplicated it and started to work on my "NeXTModRadio" :).
(Yes, not a very original name!)
Is that okay if I follow up on my progress, and plenty more questions!, here?
My goal is to develop a program that can automatically download (Amiga) modules and play them on my NeXTStation.
I want to do that on my NeXT to learn more about it and how to use it: eat your own dog food! ;)
Actually, I already have a question: for coding, are there better editors than the standard "Edit.app"?
Cheers!
Tygre
On OpenStep, the editor built into Project Builder is pretty good. But yeah, I was surprised to learn that in NextStep, Project Builder just opens Text Edit. I have not looked for other editors.
But when I was making my OpenStep apps, I used Previous (on my M1 Mac) or VirtualBox (on my Intel Mac) and I used NFS to edit the files right in place on the host Mac. That way I could also edit and compile in normal old-fashioned Xcode.
Not totally sure, but think the editors of choice were Edit.app, vi, and Emacs.
Hi and thank you for your answers, both of you!
Do you think that it'd be possible to use the OpenStep editor on NeXTStep?
Best,
Tygre
PB's integrated editor was indeed a novelty in 4.x. (Pro-tip: it does have syntax highlighting, called syntax "coloring"; it's just disabled by default because it was a newfangled feature for them kids at the time.)
It is most definitely not possible to run on 3.x though, because the whole thing was rewritten against the OpenStep specification. I don't think you can even run it side-by-side with 3.3 dev tools on 4.2, as it has strong opinions about how your project's header files should be organized.
The current IDE renaissance started several years later—first Java and Linux needed an IDE on par with Visual Studio, and then competitors like JetBrains emerged out of discontent with NetBeans and Eclipse. Notepad++ (and successors—SubEthaEdit and Sublime Text) arrived around the same period as a band-aid for dealing with second-class languages that were highly popular in the late 2000s, most notably PHP.
There are third-party development tools for NeXTSTEP, like Joy and ActiveDeveloper, but most (if not all) of them were designed around finding a niche, like rapid/realtime testing, and the most of the useful ones came with a hefty price tag. Realistically, the hackers of the day swore by Emacs, as the vi of the day was considerably less capable than modern vim.
I'm so old school I preferred having my window hell in TextEdit when I was doing my work. The integration and demotion of interface builder felt like it lost something. I liked that back in the day you didnt "need" project builder to get an app going.
Hi all!
Thanks for your replies. I found ClassEditor, it's really for documenting, but it shows public methods nicely. I'll explore more the different archives...
BTW, how do you share files with other computers? I could make Rumba work with the Samba server of my RPI (https://chingu.asia/wiki/index.php?title=DaeumYeog+Software&from=Home#TOC_4), but not with my NAS. I'm currently using yftp, maybe there's better or a better way?
I also committed the very first version (https://codeberg.org/tygre/nextmodradio), which is really Journaler under a different name :)
Cheers!
Tygre
NFS is the way to go. Any Mac or Linux computer can be an NFS server and NextStep can mount the NFS share.
@Rhetorica probably knows exactly where a guide is.
Quote from: jeffburg on Feb 11, 2026, 02:42 AM
NFS is the way to go. Any Mac or Linux computer can be an NFS server and NextStep can mount the NFS share. @Rhetorica probably knows exactly where a guide is.
Where a guide is? To be honest I stumbled through it like a real programmer, squinting in confusion at NeXTanswers articles all the while. :'( Alas, that thread is gone. Here are some steps that should work:
1. Make sure your NFS server has every possible legacy connection option enabled. We need NFSv2, and possibly even NFSv1. Modern NFS servers will offer NFSv4 by default, and even systems from the late 90s will serve up the limit-removing NFSv3.
2. Open up NFSManager.app. Here's my configuration for sharing one directory from haneWIN's Windows NFS server (https://www.hanewin.net/doc/nfs/nfsd.htm):
uBJO17a.png
3. At this point you ask, "what the hell did you put in the server name field, I thought this was a Windows machine?!" — and the answer is that I faked an entry in HostManager.app:
HCK090T.png
MyxtVbf.png
(Just don't try to browse it by clicking the name in the "Domain:" browser control, or HostManager will freeze.)
This
should be adequate to get the share working without any trouble, though I found that my configuration (haneWIN nfsd + VirtualBox) can be extremely slow for accessing directory listings. I'm still not 100% certain these Expert Options settings for the mount are correct (or sane):
M8GTFSt.png
...but feel free to experiment if you have a surplus afternoon.
Here is NeXT's official documentation for all this: http://index.nextcommunity.net/docs/ns33admin/04_nfs/index.html — but I don't recommend relying on it too much unless you have NetInfo running on your NFS server also.
Whelp, now we have a guide :)
Also, thank goodness that
@andreas_g and Previous do this all automatically for you via NETINFO if you are emulating.
Hi there,
So, I continued my journey: I tried to make rumba work with my NAS, no luck. I also tried NSF as suggested by Rhetorica, and following their guide, no luck either ::)
But I'm learning and can still use yftpd! :)
Then, I decided to change focus: I installed GCC 2.95.3 (https://www.nextcomputers.org/NeXTfiles/Software/NEXTSTEP/Developer/Languages/C/) and tried to compile two simple client/server programs (https://www.geeksforgeeks.org/c/socket-programming-cc/).
GCC complains that the symbols _inet_pton (and _inet_aton when I used inet_aton() instead of inet_pton()) do not exist.
I read that NeXTStep is not fully POSIX-compliant (https://www.nextcomputers.org/forums/index.php?topic=4001.0) (?). Could that be the reason? If so, what can I do? ???
Cheers!
Tygre
Hi
@tygre ,
have you used the compiler like this: gcc -posix ... -lposix ?
Hi
@marvin !
I hadn't tried, but no luck with them.
First, I tried
gcc -o client -posix -lposix client.c, but I got dozens of errors: "multiple definitions of symbol".
Then, I tried
gcc -o client -posix -lposix -Xlinker -m client.c to change the errors into warnings, but I still got "undefined symbols... _inet_aton".
I grep'ed the libs on my system (like libiberty.a, libgcc.a...) and none contain anything "inet" anyway. I must be missing something ??? but where to find it? :(
Thanks in advance for any suggestions!
Tygre
Hi there,
I made some progress today! I managed to compile and run successfully the two simple client/server programs (https://www.geeksforgeeks.org/c/socket-programming-cc/) by replacing inet_aton() with inet_addr() and making a few other minor changes.
Let's see now if I can adapt the code of my FTP and HTTP clients... ::)
Cheers!
Tygre