From nobody Tue Sep 03 19:36:07 2024 X-Original-To: freebsd-hackers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Wywps74Wdz52NYX for ; Tue, 03 Sep 2024 19:36:21 +0000 (UTC) (envelope-from dcrosstech@gmail.com) Received: from mail-ot1-x32e.google.com (mail-ot1-x32e.google.com [IPv6:2607:f8b0:4864:20::32e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "WR4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Wywps5LNpz4Zvj for ; Tue, 3 Sep 2024 19:36:21 +0000 (UTC) (envelope-from dcrosstech@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: by mail-ot1-x32e.google.com with SMTP id 46e09a7af769-70f79f75da6so1454966a34.0 for ; Tue, 03 Sep 2024 12:36:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725392180; x=1725996980; darn=freebsd.org; h=to:in-reply-to:cc:references:message-id:date:subject:mime-version :from:content-transfer-encoding:from:to:cc:subject:date:message-id :reply-to; bh=7bx6p5zUL8SQLPPg7DxkI1Rk9qM8yAyVekoQsg5qpFY=; b=FN1tQ9kbZBf/PiCGREqL3G+4VofUrcjnmsf6jnQ1o9oae6Jm1eVEvtGUADJQCVdmZk iWmLQzuV5Q+9yah8j4lwqKdgDCO0mm9jvgbEHrkqlZBUCUu3NiFgnTaI0iQ94v0peSFa pYtwid4cXMRYhAKQibh+tyc5F+mE0q95jDLES/Fg90xo+8t/EWSO6foYwJcAVRPDunwh TY6TgZFcnT7o3ReRPnVgsUIteURMIhIcBCrftKu5qqWbbzD/jdw8JUeRYB2Q6D/7HihN VDRslIO8yRVF4QlNMkf754IeRP+RnhylIpZy6xmaP8nU3vtbiuLOIdo/7nDJlxBy5MvX KbeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725392180; x=1725996980; h=to:in-reply-to:cc:references:message-id:date:subject:mime-version :from:content-transfer-encoding:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7bx6p5zUL8SQLPPg7DxkI1Rk9qM8yAyVekoQsg5qpFY=; b=kPYPaodm+yTzwqfADXdHE9OWNqTLRVXn0dBRZBQYmrCTLHu+flv9oZj6IQ7wyeKPxE TrWSsGR18yDaE86nS9vWQK/kBVpH429516TQpDI2bGoMaN5vNxerDwRh/BBXdx22DyLU o8L81vRPgYEZMEkBsqQDN5Z9gDhtMORUW6TxBkYjElXgVAws1ABPnXl3mPeVJe50Kyfg MvLXbOA682Om+Z2ehnDSF1V4VuOxzbAhBKJZuF6ep+UO8aIgEBXPy350DGAWyIlDrUCh bTBPtzdUxpw1rzuRkjsUn9910VWHI3ORbCBHgjaeTu0R1/t3NEtoV3Iugn1Hq26zfDFW D/5Q== X-Gm-Message-State: AOJu0YzfjieTLbH9jcomum3pxNcprfU+dsGKg4Bcx+qY40o+VdDAHl9X +pgVpwWNJDLnyssibSsfA5wEYJS8cqUTi0QW3H5hPQVpbGnNMpz1 X-Google-Smtp-Source: AGHT+IGczfV59HLHELwZLp8exf+7OmazZfma41h77lmLRTKY6E4twX2x6GL454rp2gz5STVC3y4Tsg== X-Received: by 2002:a05:6830:6e18:b0:708:f1ad:c4bf with SMTP id 46e09a7af769-70f7072d55bmr13972114a34.27.1725392179581; Tue, 03 Sep 2024 12:36:19 -0700 (PDT) Received: from smtpclient.apple (syn-024-097-005-251.biz.spectrum.com. [24.97.5.251]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6c3640804e4sm27694966d6.44.2024.09.03.12.36.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 03 Sep 2024 12:36:19 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable From: David Cross List-Id: Technical discussions relating to FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-hackers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-hackers@FreeBSD.org Mime-Version: 1.0 (1.0) Subject: Re: It's not Rust, it's FreeBSD (and LLVM) Date: Tue, 3 Sep 2024 15:36:07 -0400 Message-Id: <159D15FA-6235-484C-A54A-565E3CDEA690@gmail.com> References: <202409031532.483FW0If007252@critter.freebsd.dk> Cc: freebsd-hackers@freebsd.org In-Reply-To: <202409031532.483FW0If007252@critter.freebsd.dk> To: Poul-Henning Kamp X-Mailer: iPhone Mail (21G93) X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US] X-Rspamd-Queue-Id: 4Wywps5LNpz4Zvj > On Sep 3, 2024, at 11:32=E2=80=AFAM, Poul-Henning Kamp wrote: >=20 > =EF=BB=BFWhat is FreeBSD ? > ----------------- >=20 > Forget Rust for the moment, I promise I will come back to it. >=20 > FreeBSD as a project was created almost entirely as protest against > the incompetent "UNIX-industry" as it existed around 1990. >=20 > One of the stupidities we reacted against, was the unbundling of > the C-compiler: If you bought a UNIX system, the C-compiler would > cost you extra, even through everybody knew that the vendor got it > as part of their source license from AT&T. >=20 > So from the very start, FreeBSD decided to deliver "A complete UNIX > system with full source" and the only concession was that, hard > disks costing what they did, you could choose to not install the > manual pages and the source code on systems which did not need them. >=20 > ('make world' celebrated 30 years last month! See: 3540f0e14a8) >=20 > The only compiler we had source code for was GCC. We would have > preferred a different license, but we had no choice at the time. >=20 > There were people who, reasonably, thought that X11 was also part > of a "complete UNIX system", but the reality of 1.2MB "3D-printed > save icons" made that a total non-starter, and therefore the ports > collection is FreeBSD's barely younger twin. >=20 > The source tree became our citadel: "FreeBSD is src". If something > was not in src, it was not FreeBSD. >=20 > Buildworld or bust. >=20 > The fight at the gate was fierce at times. >=20 > Delivering a single consistent userland with the kernel has stood > us well for three decades, and we should stick with that. >=20 > But the world has changed, and we all know it, which is why ports, > pkg, freebsd-update and pkgbase exist. >=20 > A FreeBSD system with no installed ports is a rarity today. >=20 > Not even a FreeBSD developers test-machine can avoid git-lite, but > such machines do exist, typically in embedded applications. >=20 > But a FreeBSD system recompiling itself from source is even rarer. >=20 > And when it does, LLVM, source code we import verbatim from an > entirely different project, and which no sane person would call > "Related to FreeBSD", takes up more than three quarters of the > compile time. >=20 > That is objectively absurd. >=20 > The only reason we do that, is because we stil have that outdated > "FreeBSD is src" emotional hangup. >=20 > We need to find a contemporary and useful answer to "What is FreeBSD?" >=20 >=20 > The only answer I can think of > ------------------------------ >=20 > "FreeBSD is ports (some of those ports contain the kernel and userland)" >=20 > As part of the migration, we yank LLVM out of the src. >=20 > LLVM does not belong in src by any sane criteria, and any microscopic > benefits of "tight integration" can be delivered with a "toolchain-llvm" > (meta-)port. >=20 > Our minimal install images will contain: >=20 > The installer > The kernel package(s) > The userland package(s) >=20 > "pkg upgrade" also upgrade kernel and userland packages - Welcome to > the century of the fruitbat. >=20 > The "normal install images will also contain: >=20 > The src package(s) > the source code built into kernel and userland packages > The toolchain package(s) > the package used to build the kernel and userland packages > The ports package(s) > the ports tree used to build the toolchain package(s) > All distribution files necessary to build the toolchain package(s) >=20 > (The "toolchain-llvm" (meta-)port may have to be a short-cut, to > not have the llvm port drag in everything and the kitchen-sink, > which would be /precisely/ the same as the llvm which lives in src > today.) >=20 > This distribution format is neither more nor less perfect with > respect to reproducible builds and "Reflections on trusting trust" > than what we have today. >=20 > And yes, we have ports written in Rust, why do you ask? >=20 > Poul-Henning >=20 > PS: I overdosed on release work 25+ years ago, and have not been > paying them much attention since, but if this is what the pkgbase > crew has been pushing for more than a decade, we all owe them an > apology. As a quick note I constantly build freebsd from source. I do it for all of m= y systems for all updates, all patch releases.=20 I may be an outlier here, but my impression from email, forum posts, and red= it threads suggests it is at least somewhat common.=20 There are ways to marry both worlds (like poudriere, which I also use to man= age my empire), but I=E2=80=99d like to not completely discount the usecase;= at the very least the ease of buildworld is important for the releasee engi= neering process itself.=20=