I’m taking my first steps in programming (I’m no longer a young man and I always have little time) and I’m very curious about porting.
It might be off-topic, but I’m interested in knowing what are the best features that simplify the process (libraries, languages, etc.).
I would like to know which types of graphical interface software are the easiest to port to Haiku, based on the languages or libraries already in use within the system. This way, I can explore potential candidates for my future porting experiments.
Qt applications are the best candidates for porting since Qt is supported very well on Haiku and is nearly perfectly integrated with the system.
You often need to look twice if something is a Qt application or a native one.
GTK applications do also work,but they don’t integrate as good (both design and feature-wise),yet I still think it’s viable to try porting them.
Other UI toolkits that aren’t as widely used may or may not work,don’t know if it’s worth the trouble.
Things that directly target MacOS or Windows can’t be ported without essentially rewriting the whole thing,but Windows applications may run in Wine.
We could always use an extra pair of hands at haikuports, the place were we keep the recipes (scripts) that are used by the buildmasters so the packages end up in the depot for installation.
One thing you could start with is just build sources from Terminal, if you have some fairly good knowlidge on how build systems work (cmake, autotools, qmake, cargo et all) it shouldn’t be too hard to get something build very quickly.
Just give a yell if you have some specific interest.
FYI you can mostly find us active (mostly* ) on IRC, OFTC #haiku channel.
Welcome to Haiku!
Tnx.
During the time I was using BeOS 5 daily (good memories), I used to compile the source code of some software (I still remember searching the web for missing .so files).
I imagine the biggest challenge in porting is finding compatible libraries, checking for already ported components, or even rewriting functions…
I fear this goes beyond my current knowledge (at least for now).
I hope to carve out some time to dedicate to all this in the near future.
With Haikuports,finding the needed libraries isn’t such a big problem anymore.
Most popular libraries are available as a package which is easy to find,and development headers are provided as _devel package.
It’s unlikely that ports exist that aren’t listed there.
If you don’t find it on Haikuports,it’s much more likely that you’ll have to port it yourself,then you can add it to Haikuports and make life easier for the next who needs the same library.
Don’t jump in at the deep end. First get your feet wet by porting a few command-line C or C++ utilities and figuring out how to construct an .HPKG. Even if it is just for your private use. Once you know your way around make and package it is not such a big jump to move on to porting QT and GTK applications.
I’ve successfully built a C++ app using FLTK on Haiku. Tcl/Tk apps also work fine. In the terminal, you can use ncurses with confidence, but the dialog utility isn’t in the repos for some reason(?!) Haven’t tried much else, but Perl and Python are preinstalled, though Tkinter is infamously still broken. Javascript is also an option, and so are niche languages like Nim or Vala.
Dunno, it’s just, dialog doesn’t seem to be preinstalled, and pkgman search dialog doesn’t help either. Maybe I’m missing something obvious, and it’s just a nitpick. Only mentioned it because this came up.
Builds straight out of the box, shouldn’t be fairly simple to add it to the depot if there is a need for it
/Opslag/wip/dialog-1.3-20240619> /boot/home/destdir/bin/dialog
cdialog (ComeOn Dialog!) version 1.3-20240619
Copyright 2000-2023,2024 Thomas E. Dickey
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
EDIT: should check first, it’s already in the tree dev-util/dialog-1.3_20170509.recipe
I could find it and install it this time, go figure. Not sure what I was doing wrong before. It works, too. just seems to misidentify the terminal size(?) Going to do more testing later, can’t right now. Thanks a lot!