For better compatibility?

Why not modify the kernel so that a small part communicates with the hardware and executes the rest of the kernel and the software. something similar to jnode, so that it is easier to port to other architectures without so many problems, and also all the programs are compatible with all architectures

Legacy and speed reasons.
As you can read on the main page …
… inspired by BeOS !

Even if it is not your taste (resolution) …
… this is our daily driver or fun project even learning curves
look at GSOC students.

Believe me … there are more stuff several members here desire what is missing for them … however it would be available that someone coding - packing - share it to use it.

Against that you may should use nightlies to play with those features, apps - so …
if you are on a relatively trustworthy Beta version if your architecture is among the supported ones - you must wait till next beta released.

If you browse the forum - you can find several ideas where to Haiku should turn or what should be added to have crowd of people who are using it.
There are some who simply addicted to use a popular OS - or the OS they use … just be more popular as actually - to belong a well supported and known community - so membership is also cool and trendy . :wink:
It is quite well – just in case Haiku it is not that situation right now.
Of course, if you have a 1-2 dozen developers in your talon … you can start new direction - as the devs here say so :
source code is available and can be used for a new fork :wink:

We, others … just gaily hoping in leaps … sometimes new guys who time-to-time toss a huge on the wheel of
Haiku development. sometimes existing devs have strange new ideas they dare to work on …
If you would have known how much improvent happened from R1B3 to R1B4 !..

First I think you should use the OS an apps … to see is it for you … or just search for an altgernative to something that you miss now.
Later on - after you read the forum threads – you may have a cool idea what you can contribute to Haiku
just as done even in last months - if you read offerings and started projects, ported apps, games, executed translations, etc.

Have fun with Haiku ! 8D

(Me myself would like to have a native hyperviser and OS virtualization, so I could install and start 32 and 64 bit Haiku altogether. It can be done by other SW (there are several hypervisors - described in the install docs) , I would have such chooce if I really want noone blocks me to do that. :slight_smile:
It’s just not what I’m hoping/expecting to have that way…
But I bear with it. :wink: )

Linux is an excellent example of how not to do kernels. It is a behemoth. Kernels should be as small as possible.

1 Like

I don’t understand what you want to achieve.

The job of the kernel is to provide access to the hardware in a generic way, so that applications can be recompiled without any changes on all architectures.

Porting to new architectures is already contained to only a few parts of the kernel. The difficult things are mainly in handling very low level things: context switches (switching the CPU from one thread to another), MMU (the hardware that makes memory available to each process), and several drivers to get USB and graphics working, for example. Everything else can “simply” be recompiled to the new architecture.

5 Likes

Well, I do understand that it is inspired by BeOs, but it just seems incoherent to me. That is to say, one of the most revolutionary operating systems of all time, ahead of its time, and now practically the project that tries to recover and improve this revolutionary operating system, will stagnate with all the limitations that the project has? I also think that to make it more popular and add more people, you simply have to be revolutionary and set trends… of course, it covers a lot, but it is tight, but I think this would be one of the most crucial things for the operating system to gain public, that is basically like doom, that you can run it everywhere, since even then it could be present on machines with few resources that are accessible to people with few resources, do more with less. Regarding the fact that I should first try haiku, well, yes, you are right, but I am here being crafty wanting to try to virtualize it no matter what on my raspberry pi. but since I don’t know how to install it in aqemu, and I don’t know how I can install Qtemu on my raspberry pi, well… I don’t know how to do it. Regarding making my own fork, I pull, I accept, well, there is only one small problem, I don’t even know how to program, can someone give me a little cat’s hand about it? and well, nothing, for everything else, understood, I suppose, although I won’t lie, it was very difficult for me to understand your comment, I don’t know if it’s because the translation was inaccurate or you speak in a somewhat strange way

Well, yes I agree, but we can’t limit ourselves that much either, I mean, if we make a 1-bit kernel it is literally of no use, a balance must be sought in my opinion

So make it even an even easier process. For example, this idea came to me when I wanted to try to install Haiku on my raspberry pi, and I think someone explained to me that so far only the operating system has been able to boot, but the operating system is still simply useless under these conditions, so I thought, wouldn’t it be easier if there was simply a part that is responsible for making it functional on the computer and from there everything else starts, so all the resources would be allocated to just making the operating system launchable, and then the rest It would serve for that very reason.

And from there, I just make it clear that I’m brand new and, practically, I don’t understand anything.

@DonMacro I am personally having a hard time understanding what you want. Operating Systems do abstract over the hardware so it’s more portable, that’s pretty much their main job. The entire idea of an OS and a driver stack is so that programs can run on an OS no matter the hardware underneath. This means you need to write code to support that hardware.

Speaking of Jnode and Java… the Java Virtual Machine does the same thing, except it does it on top of the OS. Java still needs to implement support for every Operating System just like an Operating System still needs to implement support for every hardware.

I honestly just want it to be as portable as possible. that’s my whole obsession

Well, sure, but in order to do that you need to port the low-level parts of the OS to the hardware. There is no way around this.

I don’t know, adaptations are always needed, in fact if I’m not wrong, there are many Java programs that cannot be used on other computers because they require inherent hardware dependencies. What I would like is that only those small adaptations need to be made and that most things work that way in a simple way, well, surely if you run it rough of course it will have errors, but I think that would be better and then we will take care of it later. polish the program and thus we save a lot of time

What you are describing is what all Operating Systems that are decently designed already do, which is abstract just enough that the high-level parts of the OS just work and the low-level parts are the only things needed to port to different hardware.

You can of course implement layers on top of other operating systems, but there always needs to be some translation layer. JVMs always have a translator to translate bytecode to the host system. This is how Java (and JavaScript, and other JIT-compiled langauges) work. To support a new platform, you would still need to write another translator to translate the bytecode to that platform. Indirection like this only helps those using and writing applications on top of the JVM, not the people who maintain the JVM themselves.

For high level programming languages, this translation layer happens to be the std library and the compiler, but the std library and compiler both still have to be ported to each platform that one wants to support.

1 Like

I always think it’s good when people have ideas to improve something, but designing something so simple that it runs everywhere is almost impossible because you don’t get any sources for a lot of things and you have to rely on someone spending a lot of time and money on it . Since Haiku does not have Windows or Linux as a basic framework, but is something independent, you cannot simply look it up or use its sources (if open).

We are lucky that there are people who are involved in porting QT and other frameworks, which is why we have such a large selection of programs for Haiku today. But it can’t be the job of the core haiku team to concentrate on all the possible platforms, because then nothing will ever get finished because everyone is just adapting. If you can’t program yourself, it’s difficult to understand all the dependencies and problems.

2 Likes

there are many Java programs that cannot be used on other computers because they require inherent hardware dependencies

I’m not very experienced in Java programs, but afaik, this shouldn’t be the case. Java abstracts over the hardware and the OS so that a program doesn’t touch the hardware directly. If a program cannot be used on another system, it could be because the JVM itself or the host Operating System doesn’t support that system’s hardware. Situations where I could see this happening is graphics. Otherwise, it’s actually the goal of JVM that one program just work on any platform that has the JVM.

Operating Systems, again, do a similar type of abstraction over hardware, although I’m simplifying here greatly.

1 Like

@DonMacro , I tried for a long time to make a WebAssembly bytecode for Haiku. The problem I ran into was that the API standards hadn’t been finalized and compilation was so slow. By the time it was translated into binary, it had taken almost as long to translate as a parallel build on the original programming language. If you are interested in starting where I left off, the bytecode translator I used is at https://github.com/turbolent/w2c2.

Dear @DonMacro ,

I’m terribly sorry my written english language had not hit the measure on your side.
Well from your answers to other members the reason of OS, a kernel in it, the interpreters and binary translated apps relation to them is not quite “grocked” by you (for english word to grock, please turn to sc-fi writer Heinlein - the Wikipedia may help you )
I suggest to study
OSI layers
to understand them better… before you suggest , khmm, the best politely : silly things.