Do you also miss the good old instant messengers from the good old times,when the internet was a lot smaller,programs were more lightweight and good UX was still a thing?
I absolutely do,so I decided to pick BeAIM as my new toy project.
For the younger generation here: AIM was the Whatsapp of the 90s and the early 2000s,but different and optimized for computers rather than phones.
The last commits at the BeAIM repository were 6 years ago,and that was only build fixes,no new features.
With the current GGC 13,it didnāt compile anymore,after fixing that,it would crash in different situations and when it didnāt crash,it also didnāt connect to the server at all.
I already fixed this,resulting in a pretty stable app that provides basic chat functionality in a cool retro way.
In the future,I plan to add support for system colors (dark mode),make use of the LocaleKit to automatically use the system language rather than a custom translation class,add buttons to format your own chat messages (receiving formatted text from Windows clients already works) and laterā¦much laterā¦maybe voice calls?
I know the Windows clients theoretically support calls,but I didnāt even get it to work between two Windows computers,and itās probably a lot of work to implement,but would be a pretty cool feature also.
You can get the source from Codeberg: nikisoft/BeAIM: AIM chat client for Haiku - Codeberg.org
There are no precompiled binaries for now as itās a really early version,but compiling and running is easy:
git clone https://codeberg.org/nikisoft/BeAIM
cd BeAIM
make
BeAIM/BeAIM
Feel free to text me if you need someone to try it with,my username is nipos on AIM as well (on the preconfigured iwarg.ddns.net server).
Let me know what you think about the project
Oh,I must admit that I never tried it on 32bit,but that looks like a problem that I might have caused by fixing the compiler warnings on 64bit.
It seems that int32 is called ālong intā in your error log.
On 64bit,the long int type is int64,so I removed all the "long"s since it were normal ints for me (int = int32 on 64bit).
I will have a look at fixing this for 32bit without breaking 64bit again later,thanks for the detailled log.
Invalid screenname most likely means that you mistyped your name,or as @coolcoder613 said,you need to register first.
The user and password shown under Setup are irrelevant for this.
They belong to the proxy settings and are only used together with a HTTP or SOCKS5 proxy that requires authentification,therefore theyāre grayed out when Proxy Server is set to None (the default).
Also note that at least the SOCKS5 Proxy support is broken currently,so better keep the Proxy set to None for now.
What a coincidence, Iām the host of that server, I tried debugging BeAIM on haiku several years ago, I ran into some peculiar issues with its handling of parsing the contact list before my development machine died.
This is now fixed,building and running on 32bit does now work.
Surprisingly that error happened only on a single position,so it was easy to fix.
32bit still throws some warnings when using -Wall,but thatās not so important for now,it works and Iāll work on the remaining warnings when I have more free time.
I saw something related to the contact list in the release notes.
Looks like getting the contact list from the server works,but changing the order is only stored locally since thatās complicated to synchronize,or something like that.
Thatās of course one of the things Iād like to improve some day.
A lot of stuff was stored locally, especially in early AIM versions, in versions prior to AIM 4 even the contact list was stored locally. OSCAR was a lean protocol and it kept the data transfer sizes as small as possible.
A lean protocol and small transfer sizes are a good thing.
Thatās one part of what makes AIM so interesting for me.
My plan is to make the best possible use of what the protocol supports (feature parity with the Windows client would be cool),but still keep the application rather lightweight.
my server also supports an end-to-end encryption for encrypted messaging, since you-know-who sees fit these days to spy on everything people are doing. it only works with our in-house AIM clone but maybe we can shoe-horn it into BeAIM as well.
Thatās good to know and definitely interesting to also support some day.
My plan was to first support TLS-encrypted connections since thatās something the official AIM client also supports,and itās probably easier since existing libraries like OpenSSL can be used.
Unfortunately,your server doesnāt support TLS-encryption yet (as least the compatibility page tells to disable it in various clients),but maybe it can be added some day?
When implementing end-to-end encryption,I want to make sure not to break compatibility with other servers that strictly follow the OSCAR-specification without additions,and I want to make sure that chatting with users that have clients without end-to-end encryption support still works.
I think that should be possible without many problems,if done right.
Implementing a E2EE algorithm wonāt be as easy as TLS,however,so thatās one of the things Iāll do later when other,easier tasks are done.
What do you use for your end-to-end encryption?
All the OSCAR documentation we had access to for building the server was for AIM5 and older, the absolute newest to work is 6.1 which can still use the BUCP 5190 login, everything newer than that uses TLS through a new system called ClientLogin which we still havent been able to solve. there are still things in 6.0 we havenāt figured out, like 6 doesnāt use ICBM rendezvous SNACs for group chat invitations or direct connections.
Translations do not yet use the Haiku LocaleKit but an own implementation with a different file format.
I want to change it to use the LocaleKit,then it will also automatically use the system language instead of requiring its own setting.
After that is done,Iāll look into making translations easier.
For now,you can create a Pull Request on Codeberg that adds a new language file,or you can simply send me a new language file by email if you donāt have/want a Codeberg account.
Thanks for the detailed information on this
I somehow didnāt expect the documentation to be that much out of date,but well,last updated in 2005ā¦Changes list
Letās see what I can add to BeAIM with the existing documentation first.