Hi,
KemyLand wrote:
List of irrelevant threads in the View active topics page (not to offend anyone, BTW):
Let's analyze!
http://f.osdev.org/viewtopic.php?f=1&t=29271. Someone having trouble with an interface provided by firmware to the OS. An OS development question and not a "how to program" question.
http://f.osdev.org/viewtopic.php?f=1&t=29269. Someone having trouble with booting from USB using GRUB. An OS development question and not a "how to program" question.
http://f.osdev.org/viewtopic.php?f=1&t=29248. Someone having trouble with implementing paging. An OS development question and not a "how to program" question.
http://f.osdev.org/viewtopic.php?f=1&t=29265. Someone having trouble with an interface provided by firmware/hardware to the OS. An OS development question and not a "how to program" question.
http://f.osdev.org/viewtopic.php?f=1&t=29264. Someone having trouble understanding "virtual to physical" conversion and/or an interface provided by hardware. An OS development question and not a "how to program" question.
http://f.osdev.org/viewtopic.php?f=1&t=29260. Someone having trouble with hardware (PIC chips) and IRQ handling. An OS development question and not a "how to program" question.
http://f.osdev.org/viewtopic.php?f=1&t=29258. Someone having trouble with IRQ handling. An OS development question and not a "how to program" question.
http://f.osdev.org/viewtopic.php?f=1&t=29252. Someone having trouble with the character set provided by VGA (and how it relates to ASCII/UTF-8). An OS development question and not a "how to program" question.
http://f.osdev.org/viewtopic.php?f=1&t=29242. Someone having trouble with IRQ handling. An OS development question and not a "how to program" question.
http://f.osdev.org/viewtopic.php?f=13&t=29241. A question about ideas for getting Python programming experience. Not OS development question; but in the "General Programming" sub-forum that's explicitly intended for general programming questions.
http://f.osdev.org/viewtopic.php?f=15&t=29250. Someone exploring ideas on scheduler/OS design. An OS development question and not a "how to program" question.
Mostly; this site's purpose is to help OS developers. You can split OS developers (rather crudely) into 2 categories: experienced developers and beginners. The experienced developers rarely need any help; and if they post it's typically either helping others, high level theoretical pondering or showing off their work. Naturally; the vast majority of posts are beginners.
For beginners...
There has always been a kind of "culture shock" when someone moves from normal programming (with IDEs, nice debuggers, libraries, APIs that work, etc) into OS development. As time has passed "normal programming" has become higher and higher level (more abstractions, libraries, etc; and less focus on lower lever concepts like pointers, cache behaviour and the specifics of CPUs and hardware). For an example, I'd be very surprised if a modern experienced Java programmer (e.g. someone who's been programming in Java professionally for years) can figure out how to implement a basic linked list (not because they're bad programmers, but because Java has built in collections). Also over time, the hardware has been getting progressively more convoluted - the introduction of APICs, ACPI, multi-CPU, 64-bit, NUMA, UEFI, etc, have all added to the "burden of knowledge" needed. Finally, the goal has also shifted - once upon a time (a long long time ago) something like MS-DOS was all users really expected, but now they expect far more in terms of OS features and capabilities.
Putting all this together, that "culture shock" (that used to be more like a small hill) has become more like a tall mountain. I'd estimate that at least half of the beginner posts are effected by this. I mean, they do know they have to do things themselves and can't just (e.g.) include some standard library and have terminal input and output working, but the true nature of "bare metal" hasn't become ingrained yet. I'd also estimate that it takes an average of about 2 months for a good/experienced application developer to fully make the transition.
Let's have a look at one of these beginners. More specifically, let's look at
this forum topic. What do you see? I see an application developer who wanted to use relatively high level concept (garbage collection) in a very low level environment (kernel) using a very low level language (C). That is a reasonable example of the "culture shock" I'm talking about.
So, think of it like this: The forum's purpose is to help OS developers; most of the people that need help are beginners, and most of the beginners are suffering from (natural/inevitable) "culture shock".
Cheers,
Brendan