25jul21: MakeMyDay compiles and launches. Was painless, just needed to enable a DrawBitmapAsync() variant in class BView and clean up a hack re. BApp.CountWindows().
So what now ? I'll have to recompute my 'roadmap', but it's already clear I should turn my attention especially towards the Storage Kit, connect nuts and bolts to enable BFile handling, the works.
And yes that was quite a few weeks elapsed with not all that much to show for it. Been working away from home with a long commute time, quite tired when getting back home and not anxious to get on the keyboard... I'll be making slow progress for a while more. In August I'll get a break though. See you then.
30jun21: started working on AK.
Needed to work on the build system first, so that it would start compiling at all (need to provide for clean "out of tree" app building, without using the hacks I made for AutoCast), Then had to add missing symbols in haiku lib etc. Got AK compiling-and-almost-linking in a short time. To be clear, compiling it can be done "out of the box" with virtually zero changes (I just commented out the code for customizing keyboard shortcuts, is all, as there is not support for that in HoG).
2jul21: AK links into an executable, but LD fails to load it, looking into it.
3jul21: Was caused by build confusion between "foo.abi.so" and "foo.lib.so", AK runs now. The screenshot (right) looks almost like it was taken on Haiku, kinda proud of that. Of course I need to implement all the back-end code (e.g. Storage) that is stubbed out. But let's finish the set of TTS applications first.
We're pulling down the tunetrackersystems.com website in the near future as it misleads people into thinking we're still offering the old CC5 product line... We'll setup something again once AutoCast-on-Genode is ready.
But as of today he reports it works, yay!
As of this afternoon, HoG builds against Genode 21.05, including our flagship app AutoCast 184.108.40.206 -- didn't hit any significant snag, despite that version being coded for GCC 10.3/binutils 2.36, it all seems fine. Took me no more than ca. three weeks, or about one week per year of "lateness" :-).
In the coming days I'll clean up and commit the updated haiku-kinda-kernel (it's a big "tweak" that makes it use pthreads as required by the new Genode revs), and then I can get in touch with Norman again.
Then I'll return to porting our stuff, back to the salt mines.
> (will the new system work on existing station hardware?)Thinking about this also prodded me into publishing this updated timeline to neocities, instead of it gathering dust in the dark corners of my hard-drive. So there.
Well could be. (..) I've prioritized ugprading my work copy of Genode. It was 3 years old, so I'm migrating to 2021 code, which has a newer audio driver, which might work on the AMD based systems we've been producing for years.
Lots of those out there, so big incentive to make audio work on existing station hardware, even if it means pausing my work on higher-level AutoCast code. Though worst case, if I can't get things to work on AMD systems, we'll find cheap Intel-style micro-computers for stations that don't want to spend much on hardware. Intel makes "NUC" micro units that are industrial strength (reliable) and very cheap, among other options.
Now that I'm reading/writing this exchange, I'm thinking again of publishing my "blog" by the way. It's very technical in nature, much more than I ever thought it would be, as every time I open it I feel the need to document my findings of the day, down to the compiler options I've used to solve such and such problem.
But technical mumbo-jumbo or not, in matters of public relations, something is better than nothing :-) Would be frustrating if people thought I was idle at the switch, and not working my butt off to get things done ^^
It would also give an idea of the scale of work involved, the number of tasks I still need to get done etc, so that people pray for me :grin: , plus the big perks we'll get with this new platform. Oh, and screenshots.
Build Genode 19.05 (git checkout etc, as documented):
PS - also "fixed" AutoCast transparency (the usual BBox hack, strange that it is still needed in this public branch). Added (uncommited for now) libroot stuff too, so that background.jpeg can be found with an entry_ref, without hacks, and so that beos.mp3 can be found ditto.
When rebooting to my USB stick tonight (that's when I generally test ISO images, right before ending my programming day), AC should produce audio. Turns out there was a missing "acpi..." statement in report_rom. That was fixed in my private branch, but I hadn't duplicated the fix in the chiselapp public branch that was forked from it, oops.
Until now I was relying on a year-old ISO image made from my private branch, to launch AC with audio. Now I'll be able to run fresh builds.
Got in touch with Norman this past week ; we agreed it would be interesting to integrate haiku.lib.so as a package for SculptOS, but there's a stumbling block : my code is built against the Genode 18.11 API, and GCC6 ; I'd need to upgrade to newer Genode code, and it's doubtful whether I can compile the newest Genode code with the old compiler. We'll see.
So, newest roadmap:
When that's done, I can look into extending the set of supported features : Network Kit, keyboard support, BFS attributes, yellow tabs, compile AK/Lightning/MMD, and so on.
Will also have to look into this Genode-only bug some day (maybe it was just lurking, when in Haiku, and gets revealed only now ?) :
A.C./minimalist-lib/etc: Thread exception/crash/whatever in AC, on HoG, Settings window, clicking on "button pad" items: Error: attempt to reserve zero sized block from heap The main window/thread remains responsive, but the Settings window thread is dead.
2) thought of this marketing pitch I could "sell" to Dane about Q.A.:
Just occured to me that with Genode, ISO images are so small that we can keep a copy of each ISO sent to each customer, for optimal tech support ; when a customer gets in touch with us, we can just dig up the ISO we sent them and replicate the issue (more) reliably.
3) ToDo: get in touch with Norman as well ?
4) ToDo: fix audio output in AC
It was easy getting the AutoCast code back in shape and compiling in HoG, took just a few hours to catch up...
Now as expected, I'm hitting tons of "missing symbols" errors, since AC has wider requirements than what I implemented for hog-demos (Media Kit, BSlider, BUrl, BMailAccount, BQuery, BSerialPort...) Just have to get in the saddle tomorrow and get on it.
UPD: 26 april: AutoCast shows up in qemu ! Had to tweak my "run" file and fix broken swap_float() for jpeg translator so that background pic shows up Flashes A LOT though, now that Pulse-driven clock invalidates are done.. Let's see if bare metal flashes less than qemu..
UPD: yep, wasn't all that much hard to optimize Invalidate/painting.
Making progress with my "demo" scenario/ISO. Ran the demo scenario bare metal for the first time (for my public branch I mean, the old "private branch" work was often done on bare metal too).
Things mostly work as expected, except for some menus :
A couple radio stations who use our (TuneTracker Systems) software are asking what's going on these days. That's "popular" enough demand (on our scale :-) to start micro-blogging about it, say, once a week. Plus it helps me sort my thoughts as well. Since this is targeted at our stations, I'll try to keep technical mumbo-jumbo to a minimum, or explain tech stuff in simple terms.
So what's up exactly ? If you're in touch with Dane or me you might have heard that I'm working on "merging" Haiku and Genode. This is long, tedious work, but it feels great to mix a super-smooth user experience (Haiku) and a fantastic operating system framework (Genode). Let's start by describing my planning, broken down into sub-parts.
When that's done, I'll make sure AutoCast compiles and runs as well, on a simple scenario (makeshift BFS partition, not a real file system).
Eventually, I'll reach a stage where I need to port the low-level part of Haiku that is actually responsible for file access (called "libroot") and add (extend ?) attribute support to Genode, for using in BFS or NTFS. I suspect NTFS might be good to us, with its extended attributes support.
In parallel with the above, I should upgrade Genode, since currently I'm still working with a version from 2018. Updating to 2019 and 2020 revs will require adapting to some Genode API changes, and more frighteningly :-) adapting to compiler (tool chain) change. This part of the project might not be top prioritary, but good-to-have, because newer Genode versions have better hardware support, which helps with TuneTracker software.
If all goes as planned, we'll need to "wrap up", i.e. not only support AutoCast but we'll also want as much as possible of its software suite to work in real-world (not makeshift) scenarios. Not to mention the Haiku "desktop". It's unlikely I will be able to port the whole Haiku desktop (called "Deskbar" and "Tracker"), so we'll need to make our apps flexible enough to deal with their absence, e.g. use a more austere "launcher".
In parallel with the above: it might be possible to compile something of use to fellow Genodians, to build community interest. Maybe a simple Mail client ? Or more likely, since it's much less dependant on BFS file system features, an IRC client (Vision's source code) ? Genode has a great port of the "Qt" library; it seems to me this allows Genode to natively run a huge library of software out there, but maybe there's interest in apps with a smaller footprint, rather than the comparatively bigger Qt apps ? Let's hear from fellow Genodians.
Currently I'm getting close to the end of the "Pulse" phase. And I know from last year's experience that once I'm there, it does not take much more to run AutoCast "bare bones". The rest is another can of worms though. Not quite terra incognita, but still hard to evaluate yet.
Back to the current "Pulse" phase: that phase is itself sub-divided into the "baseline commit" and "patch" tasks. I'm mostly done with baseline commits, but need to fix a couple bugs (ETA unknown) before I commit my big "patch" on Haiku's baseline code to make it Genode compatible. The patch itself is divided into the "90%" part, and the "plat de résistance" (BView, BWindow, and posix headers). It should take at least a couple days to do each of BView/BWindow/posix. Then I'll create an ISO deliverable. Then say, about a week for the bare-bones AutoCast part. So there you go, I gave you the traditional "just a few more weeks !", but in sophisticated format *g*.
I have a rough idea of the "deliverables" I'm planning on in the future: 1) prep an ISO with Pulse/Mandelbrot, email fellow Genodians and propose to try it out 2) AutoCast: put something in Dane's hands for him to test 3) AutoCast again: get closer to production and/or base it on a newer Genode with better hardware support.
My next micro-blog entry will hopefully conclude on the current phase and introduce the AutoCast phase.