WEBVTT 00:00.000 --> 00:05.000 Thank you. 00:05.000 --> 00:09.000 Thank you. 00:09.000 --> 00:12.000 Hi, everyone here, me. 00:12.000 --> 00:13.000 Great. 00:13.000 --> 00:15.000 So, thank you everyone for waiting. 00:15.000 --> 00:16.000 Good morning. 00:16.000 --> 00:21.000 So, today I'm so excited to give you a quick talk about Humbru on on 64 Linux. 00:21.000 --> 00:22.000 Yep. 00:22.000 --> 00:25.000 So, let me begin by introducing myself. 00:25.000 --> 00:29.000 My name is Roe U, and I'm currently a computer science student at School of Computing, 00:29.000 --> 00:33.000 and University of Singapore, and I specialize in income security. 00:33.000 --> 00:37.000 And I've been a Humbru user since I bought my first Mac in 2021. 00:37.000 --> 00:44.000 And before I even got my first Mac, I bought the Raspberry Pi 4 in 2020, 00:44.000 --> 00:48.000 which as we know has a little arm-based CPU on it. 00:48.000 --> 00:50.000 I became a Humbru maintainer since 2023, 00:50.000 --> 00:52.000 and ever since I became a Humbru maintainer, 00:52.000 --> 00:56.000 I've always been really tempted to install Humbru on it. 00:56.000 --> 01:00.000 One second. 01:00.000 --> 01:02.000 Yep, great. 01:02.000 --> 01:06.000 So, a quick introduction for those who need a little bit more of background. 01:06.000 --> 01:09.000 Humbru is a package manager for Mac OS and Linux, 01:09.000 --> 01:14.000 and currently supports Mac OS on both Intel and Apple Silicon architectures. 01:14.000 --> 01:17.000 And, although immediately, its primary user base is Mac users. 01:17.000 --> 01:23.000 Last year, first them, I was still quite surprised to find out that a lot of our users don't actually know 01:23.000 --> 01:27.000 that Humbru also supports Linux, it's called Linux Brew, 01:27.000 --> 01:31.000 or most specifically, X8664 Linux. 01:31.000 --> 01:35.000 And now here, you may notice that I didn't mention our main topic today, 01:35.000 --> 01:37.000 which is ARM64 Linux, 01:37.000 --> 01:42.000 and that is because this platform is not officially supported by Humbru at the moment. 01:42.000 --> 01:44.000 Okay, but now you may ask, 01:44.000 --> 01:47.000 why do I want to run Humbru on ARM64 Linux anyway, 01:47.000 --> 01:49.000 if it's not officially supported? 01:49.000 --> 01:53.000 Well, for me, speaking from a user's perspective, 01:53.000 --> 01:56.000 I guess we can just remove the ARM64 from the question, 01:56.000 --> 02:00.000 and ask, why do I want to use Humbru on Linux? 02:00.000 --> 02:03.000 Because if you already have a reason to use Humbru on your Linux machine, 02:03.000 --> 02:07.000 which may not necessarily be ARM64 based, 02:07.000 --> 02:10.000 the same reason probably also applies to ARM64 Linux. 02:10.000 --> 02:17.000 Firstly, you can install up-to-date software packages that may not be available from your distro package manager, 02:17.000 --> 02:22.000 because most Humbru packages are kept up-to-date with upstream releases. 02:22.000 --> 02:27.000 Secondly, you can use it to install software packages without rude privileges, 02:27.000 --> 02:31.000 which may be useful if you're on a shared machine like on a server. 02:31.000 --> 02:33.000 Or you could just be a fan of Humbru, 02:33.000 --> 02:35.000 and want to use it everywhere I like to, 02:35.000 --> 02:38.000 because I mean, why use something you don't like, 02:38.000 --> 02:41.000 and why don't you, why not use something you like. 02:41.000 --> 02:44.000 So cool, now that we have the motivation, 02:44.000 --> 02:48.000 but how do we make it possible to run Humbru on a platform? 02:48.000 --> 02:52.000 Well, the first thing we need to do is have the prerequisites available. 02:52.000 --> 02:55.000 You can find more about this on our documentation website, 02:55.000 --> 02:59.000 but basically here, that boils down to these important things. 02:59.000 --> 03:03.000 Firstly, curl and get which are used by Humbru to make network requests, 03:03.000 --> 03:05.000 and to keep itself up-to-date. 03:05.000 --> 03:08.000 Build tools that enable us to build software from source, 03:08.000 --> 03:11.000 like make and GCC, because as we'll see later, 03:11.000 --> 03:13.000 we do need to build some software from source. 03:14.000 --> 03:18.000 And most importantly here, so for those of you who don't know, 03:18.000 --> 03:22.000 Humbru is written in Ruby, we also need a Ruby runtime. 03:22.000 --> 03:26.000 So on most Linux systems, the first two are usually either present, 03:26.000 --> 03:30.000 or easily installable, like if you're on a dead end or one two, 03:30.000 --> 03:35.000 you can just do App install, curl, get, build essential, and that's it. 03:35.000 --> 03:39.000 The tricky thing is Ruby, which may not be as straightforward, 03:39.000 --> 03:43.000 because it's not as simple as to do App install Ruby. 03:43.000 --> 03:46.000 Since Ruby needs a very recent version of Ruby, 03:46.000 --> 03:51.000 and its Ruby version requirement now closely follows Ruby's release cycle. 03:51.000 --> 03:53.000 So on most systems to keep up with that, 03:53.000 --> 03:56.000 it's likely that we will need to build Ruby from source, 03:56.000 --> 04:01.000 probably using a Ruby version manager, like RPN, like I used to do. 04:01.000 --> 04:03.000 Now for the officially supported platforms, 04:03.000 --> 04:08.000 we save our users from this trouble by providing what we call portable Ruby. 04:09.000 --> 04:13.000 portable Ruby is our custom self-contained build of Ruby. 04:13.000 --> 04:18.000 That is the sign to be installed and run anywhere on the file system for its internal use. 04:18.000 --> 04:23.000 So we build and distribute portable Ruby for all our supported platforms. 04:23.000 --> 04:28.000 And since ARM64 Linux is not among them, it's not an officially supported platform. 04:28.000 --> 04:32.000 We haven't been able to build portable Ruby for it. 04:32.000 --> 04:37.000 But the good news is, thanks to GitHub's recent rollout of ARM64 Linux, 04:37.000 --> 04:42.000 we now have the capability to build portable Ruby for ARM64 Linux, 04:42.000 --> 04:49.000 and we expect to ship it in the next release of home-ruz portable Ruby in the near future. 04:49.000 --> 04:51.000 Okay, great. 04:51.000 --> 04:53.000 So now we have cleared the prerequisites. 04:53.000 --> 04:58.000 Does that mean that we can expect to see a fully functional home-ruz on ARM64 Linux? 04:58.000 --> 05:00.000 The answer is yes and no. 05:00.000 --> 05:05.000 So the good news is that indeed, you should be able to use home-ruz, 05:05.000 --> 05:10.000 mostly without issues like I have been doing this for quite a while already. 05:10.000 --> 05:15.000 However, one significant downside is that due to its unsupported status. 05:15.000 --> 05:17.000 What does this unsupported status even mean? 05:17.000 --> 05:24.000 It means that no rebuild binary packages or in home-ruz terminology photos are available. 05:24.000 --> 05:28.000 And that means you have to install every single package that you use from source, 05:28.000 --> 05:33.000 creating essentially a home-ruz scratch experience, 05:33.000 --> 05:35.000 which, admittedly, isn't that great? 05:35.000 --> 05:41.000 Not only that, it's very possible that you encounter build problems due to complexities and software environments. 05:41.000 --> 05:47.000 And by this, I mean that differences in compiler version, dependency version, 05:47.000 --> 05:52.000 installation directory, in other words, how you install home-ruz and where install it, et cetera, 05:52.000 --> 05:54.000 can all affect the build behavior. 05:54.000 --> 06:01.000 And it's very hard to make sure that every single package install in the exact same manner despite those differences. 06:02.000 --> 06:08.000 So even for the supported platforms, we still receive a lot of user issues complaining that building from source does not work. 06:08.000 --> 06:12.000 But unfortunately, that's like we cannot help to fix every single one of them. 06:12.000 --> 06:17.000 So maybe building from source work for your last week, but it's not working today, we can never tell. 06:17.000 --> 06:27.000 And despite that, if you have an idea how to fix those issues, we welcome poor requests that improve the robustness of our package build scripts, 06:27.000 --> 06:34.000 as long as the fix is reasonable, like it's not carrying a 10,000 line of patch for review, that's okay. 06:34.000 --> 06:42.000 So since we don't have the bottles, or in other words, pre-built binary packages for the platform, what's needed to make them available? 06:42.000 --> 06:48.000 So the first thing to make sure that the pre-built binary packages work for every system setup, 06:48.000 --> 06:55.000 perhaps the biggest thing is to make it possible to bootstrap, let's see, on every system, on Linux or new Linux. 06:55.000 --> 07:00.000 Homebrews bottles are created in its CI environment, which is relatively new. 07:00.000 --> 07:06.000 Currently, it's on 1222.04, which provides ClipC2.35. 07:06.000 --> 07:15.000 So building stops against such a comparatively new ClipC means that the binaries may not work on older systems, on systems with an older version of ClipC, 07:15.000 --> 07:18.000 because ClipC does not offer forward compatibility. 07:19.000 --> 07:25.000 In Homebrew, this problem is solved by automatically installing its own managed version of ClipC that matches the CI version, 07:25.000 --> 07:29.000 and when the system ClipC is older, this step is done automatically. 07:29.000 --> 07:39.000 And to make sure this works everywhere, we will need to support bootstraping that version of ClipC, meaning to be able to build it from source on every system we like to support. 07:39.000 --> 07:44.000 If you like to read more about that, you are free to consult our documentation website. 07:44.000 --> 07:54.000 But that said, such technical hurdles are not the biggest reasons why Homebrew does not officially support it and why the bottles are not there yet. 07:54.000 --> 08:05.000 The biggest challenge is to build and test every single package for the new platform, which requires more CI capacity than what we have right now, 08:05.000 --> 08:08.000 and likely even more maintainer efforts to fix issues. 08:09.000 --> 08:26.000 This is something we will revisit later, but with limited demand and both human and machine resources, the safest bet I can make for today is to say that it's not planned yet, but still, it may or may not eventually happen, and we will see. 08:26.000 --> 08:35.000 So yeah, with that said, what's next, at least currently, while Homebrew on ARM 64 links, it's still not officially supported, and it's not something that we promote officially. 08:35.000 --> 08:46.000 It's already very much possible. Here I wouldn't use the word usable, because it depends on whether you're enthusiastic enough, or maybe bored enough, to build your packages from source. 08:46.000 --> 08:57.000 So we have continuously working to improve its experience, and here I'd like to give a special shout out to Bo Anderson over here, who's been doing a lot of great work. 08:57.000 --> 09:17.000 Yeah, we have been continuously working to improve the experience, but to be safe, just as I said, please don't expect to have official first class support like 64bit x66 in the next or macOS anytime soon. 09:17.000 --> 09:25.000 It's something we're interested in, and we'll be discussed about soon, but we may disappoint you, so please don't have high expectations on this. 09:25.000 --> 09:39.000 Nevertheless, if you decide to try out Homebrew on ARM 64 links and have issues with it, you can use our discussion forum on GitHub, or even better, submit a poll request to propose a fix or an improvement. 09:39.000 --> 09:46.000 After all, we are an open source of reproject, and it's the thousands of contributors like you that keep our project alive. 09:47.000 --> 09:57.000 So with that, thank you for your time, I hope you have a great day and enjoy your first time, and I'll be here around to take questions, and please do come to us then at building K, and we look forward to having a discussion with you. 09:57.000 --> 09:58.000 Thank you.