Beginning of 'Packaging Infrastructure' Contract

Blog post by waddlesplash on Mon, 2015-06-01 13:14
Anyone following the "haiku-inc" ML will have noticed that I've been approved to spend 240 hours (around 6 weeks of full-time work) on Haiku's packaging infrastructure. This mostly means I'll be working on the package building system, which will manage the "HaikuPorts" package repository, ensuring it's up-to-date across architectures (and later, across both nightly & release builds).

As those who have been paying close attention to IRC may already know, Alexander already has created a prototype server & client in Ruby. However, in discussions with Alex, Oliver, and Axel, there is a consensus that the client (at least) needs to be rewritten in Python, as Ruby on Haiku is too unstable for our needs. The server may also be rewritten as well, as we determined that it doesn't support nearly enough of what it needs to, and a rewrite to Python may be easy enough. We'll see.

My contract officially starts today, but I'm going to be out for most of the day, so I won't start working full-time until tomorrow. For this week, I expect to get the Python client software into a "mostly working" state, and make a decision on what to do about the server and probably start working on that as well.

I'll be posting end-of-the-week progress reports just as Adrien did for the duration of my contract right here on my blog. Stay tuned!

Comments

Re: Beginning of 'Packaging Infrastructure' Contract

That's wonderful, waddlesplash! Working buildbots are essential for the beta, as well as for the 3rd party software availability. I suppose once the buildbots are churning through the haikuports repo, the adding of the resulting packages to HaikuDepot can/will be automated?

Looking forward to your regular reports!
Happy Haiku Hacking!
Humdinger

Re: Beginning of 'Packaging Infrastructure' Contract

Yep, with this, packages.haiku-os.org will be entirely machine-controlled. No more manually-built-and-uploaded packages!

Re: Beginning of 'Packaging Infrastructure' Contract

Good!
BTW, will you work on that buildbot infrastructure in some private branch? If so, or even if not so :), can that branch be added to the haiku-commit-ml? Same goes for any other work you may do in a branch. Makes it all that more transparent and informative.

Regards,
Humdinger

Re: Beginning of 'Packaging Infrastructure' Contract

The build software is supposed to be the "missing link" between HaikuPorts and packages.haiku-os.org, and as such I'm not quite sure where the Git repo belongs. ATM it's only on my HDD because I've only been working on it for 2 days, but I'll have it at least posted on my own GitHub account before the end of the week.

Re: Beginning of 'Packaging Infrastructure' Contract

Congratulation for your contract, it's a great news not just for the users but for the developers too. Hopefully it will open some new doors for Haiku.
Have fun and i'll waiting for your weekly report!

Re: Beginning of 'Packaging Infrastructure' Contract

why not c++?
I have been writing all kind of bots, servers (also https, iretc..) and clients (https, irc, etc..) and I see not at all why one would not do this in c++14 ! You get a lot more speed and efficiency, and you can be sure, it will compile and work also in the next 20 years from now.
And the other advantage is, that also the c++ developers (who might not be big scripting fans) can work on it and improve it later.

Re: Beginning of 'Packaging Infrastructure' Contract

Speed you don't get much more of; last I saw you might get an extra 20ms-100ms or so for I/O functions, and that's fast enough that I don't really care about it. And I highly doubt it will work 20 years from now with zero code changes; that's not really the point. Also, most of the Haiku devs already know Python or some other scripting language, so working with it won't be a problem.

Not to mention that Haiku doesn't have C++14 yet, and even if it did, C++14 still doesn't provide too much in the way of JSON or socket messaging...

Re: Beginning of 'Packaging Infrastructure' Contract

This is good news and I am glad to see this work going forward.

When this is completed, how far does that get us to resolving the package manager tasks for Beta?

Re: Beginning of 'Packaging Infrastructure' Contract

Practically done. There are still a few other minor nits open in Trac, but this is the last major roadblock.

Re: Beginning of 'Packaging Infrastructure' Contract

When you have time, do a performance test:
Simulate simultaneous connections: how many simultaneous connections can the server hold (even if the cpu per client is very slow)?

The main point is, that haiku is heavily based on c++, and it's the best supported language, and it's always very close to "up-to-date". C++ forces you to have often better designs.

C++14 doesn't have networking capabilities (but c++17 is likely to get them), but haiku has its own network kit anyway.

Since haiku is a small project, server-performance is perhaps not critical, but I would prefer to see haiku not being spread up with different languages. C++ has also a great backward compatibility, which means, that in feature, you just have to recompile, you can get speed improvements out of the box (exactly what happend when c++11/14 arrived). So far the most promising (to me) scripting language is swift.