From: Rob Landley <rob@landley.net>
To: musl@lists.openwall.com
Subject: Re: Summary of 1.0 marketing plan/scheme/nefarious plot from IRC.
Date: Fri, 30 Nov 2012 18:04:54 -0600 [thread overview]
Message-ID: <1354320294.2190.24@driftwood> (raw)
In-Reply-To: <20121130012701.GY20323@brightrain.aerifal.cx> (from dalias@aerifal.cx on Thu Nov 29 19:27:01 2012)
On 11/29/2012 07:27:01 PM, Rich Felker wrote:
> On Thu, Nov 29, 2012 at 02:50:03PM -0600, Rob Landley wrote:
> > Notes from the discussion we had on IRC, plus some further random
> > thoughts on telling the world about musl:
> >
> > - wait until 1.0 so it's most likely to works for them.
> > - People who take a look and wander off again are less likely to
> > take another look,
> > so try to make a spash when you're _ready_, not before.
>
> Agreed. I never really wrote down this principle before, but it's been
> in my mind for a long time. The main publicizing I've been doing so
> far has been in niche places (like mips and microblaze lists) and
> making sure musl is well-indexed in databases like freecode (formerly
> freshmeat) and ohloh. I suspect there are a lot more of the latter we
> should also hit.
Having a good 'elevator pitch' is nice too.
Musl is a brand new C library that bridges the gap between Linux and
Android.
It's BSD licensed and Posix-2008 compliant, written from scratch to
be small
simple and clean with no legacy baggage and good thread support. The
reason
you've never heard of it is the first git commit was February 2011.
> > - chroot for each target with native development tools
> > - system images for qemu maybe?
>
> It would be really cool if we had "system root trees" rather than
> "system images", with virtual 9p for booting qemu. By the way, getting
> qemu working on musl should probably be in our compatibility goals for
> 1.0.
It's slightly more complicated than that, or I'd already have done it.
:)
Making client side initramfs work is easy, but it needs a server. Last
time I looked into this (circa
http://landley.net/notes-2011.html#29-04-2011), it would require diod
on the host acting as a server to work on most targets. While this
isn't much different than qemu's cifs export mode launching samba,
people are much less likely to have diod already installed on the host.
QEMU does have a built-in 9p server, virtfs requiring a virtio
transport. Unfortunately, between qemu-system-blah and the kernel
virtio transport isn't supported equally on all targets. Specifically,
I couldn't get virtio to work on arm, which is kinda important.
I still have the "i686-virtio" and powerpc-virto targets Alessio Bogani
contributed last year, and they mostly work (just fixed minor bit rot
with qemu getting renamed to qemu-system-i386). That's actually using
virtio block device and virtio network, not virtfs, but the principle's
the same. (Think of virtio as a bus and then other things get
implemented on top of that bus; even though the bus is simpler than PCI
support for it may not exist in the target we want because nobody's
bothered yet.)
I also looked at getting virtio console working, but at the time the UI
for it was appalling:
http://lists.gnu.org/archive/html/qemu-devel/2011-05/msg00390.html
> > - launch x11 vnc server and display in tightvnc window?
> > - jslinux live image on website
>
> Love this idea. I'd like it even better if we could adapt jslinux to
> start with a preinitialized memory/machine-state image rather than
> having to spend 15-20 seconds booting. BTW I think we need to look
> into whether there are license issues with using jslinux...?
The actual javascript source says redistribution requires permission of
the author, so yeah. Somebody has to ping fabrice. (Or else reference
the files off his web page, which is hugely impolite.)
I wonder what the busybox guys did? Let's see, google for "jslinux
busybox" and bubble up through the archive a bit to find the commit
that added it to the website is here:
http://git.uclibc.org/busybox-website/commit?id=317871f1a85816e3c0f405f00b2f081978fa9caa
And the jslinux in that still says you need Fabrice's permission to
redistribute, commit comment is just that Denys added it and no further
details. Date is March 4 of this year so check the mailing list archive
on the website...
And this is the start of the thread about it:
http://lists.busybox.net/pipermail/busybox/2012-March/077498.html
Content of message, and I quote, "Hey guys, Check this out!". One
reply, "I saw it. Very cool." No mention of license or permission.
(These are the people who took over the project that's the poster child
for GPL enforcement. Wheee...)
Yes, by all means, let's ask Fabrice. (As musl maintainer, you should
probably do it.)
> By the way, somebody also mentioned a mips emulator in js we could use
> instead or in addition to jslinux, but I don't know if it emulates
> enough hardware to get linux up.
Yay!
> > - distro conversions
> > - leverage existing repositories, don't fall into the buildroot
> trap
>
> I think I've already avoided this trap without avoiding new distros,
> by building a community of people who like rolling their own distros
> but not getting involved in the distro/build stuff at all myself. This
> has been great for getting musl a lot of testing with lower entry
> barrier than large existing distros, but adding the latter now would
> be a good next step.
You've done great. My point here is just "how can we leverage the work
other people have done without distracting ourselves more than
necessary".
If we can come up with a musl chroot that debootstrap runs in (the
"compile packages" not just "install binaries from repo" variant), or a
musl chroot that emerge can build the world in, or koji:
http://opensource.com/life/11/7/free-sake-story-koji?sc_cid=70160000000IDmjAAG
Or whatever SuSE's variant is (blanking on the name), or buildroot, or
arch's pacman, or...
(I'd mentino Yocto's poky but after meego and tizen and such it's
really hard to _care_ about any of the Linux foundation's "look,
another not-android!" gyrations.)
I wandered aimlessly through this bit more than once over the years and
it's why I have the "bootstrap" stuff in my control-images. What I was
trying to do was extend the basic "simplest self-hosting build
environment" up to whatever the various distros needed and then let
them build themselves. It's a finite amount of work. But it's an
_undocumented_ finite amount of work and all these build systems have
DEEP assumptions that they are building under themselves. (Yes, even
gentoo. It's actually worse than Debian about it.)
Basically, I started researching gentoo bootstrapping in 2008:
http://landley.net/notes-2008.html#17-12-2008
My friend Mirell took a serious stab at getting it working in 2009:
http://web.archive.org/web/20090411155149/http://impactlinux.com/hg/gfs
I took my own stab at it in 2010:
http://landley.net/notes-2010.html#15-09-2010
And then tried a Funtoo version in 2011:
http://www.funtoo.org/wiki/ReBootstrap
And each time, when you try to create the base system from something
other than an existing gentoo system it just _melted_down_ and went off
on a tangent to fix something else.
I eventually went "ok, there are three problems here":
1) I'm trying to build a distro on something other than an existing
copy of that distro.
2) I'm trying to use a different libc (and different toolchain, but
that's less of an issue).
3) The existing system I'm providing uses busybox instead of the
specific versions of the gnu/dammit tools they expect (and boy were
they version-sensitive and configuration sensitive, things like python
requiring bzip2 shared libraries to exist on the host when it's built
or else package extraction won't work because portage doesn't know how
to pipe stuff through bzip2, just use the optional python shared
library wrapper).
So I went "if I build Linux From Scratch I can deal with 2 and 3
separately, and then rebootstrap portage under the resulting LFS system
on the target, and it's a huge digression but can be completely
automated, so..." (And that's before getting into trying to wean
portage off of the requirement of explicitly naming every supported
target in every single ebuild file in the entire tree, so that adding a
new target requires touching every file in the portage tree and the
idea of telling gentoo "just build whatever architecture the host is"
is fundamentally against the way they designed it... Yeah, that was me
going "funtoo, how does _that_ work"?)
You may have noticed that my todo list has archaeological strata. Right
now Toybox has put all this on hold, and the rise of Android has
probably rendered some of it moot...
An advantage YOU have is existing gentoo developers with interest who
you may be able to foist this off on. Plus you're just trying to swap
out _one_ component at a time, and only support a few specific
architectures.
> > - Write linux from scratch "musl hint", contribute it to LFS, then
> link
> > to it on LFS website from musl website.
>
> Can you elaborate on what a "musl hint" would be?
Basically they're standalone "or you could do it _this_ way"
explanations for alternatives or extensiosn to the way Linux From
Scratch does stuff:
http://hints.linuxfromscratch.org
http://www.linuxfromscratch.org/hints/read.html
They're referenced from time to time in the main Linux From Scratch
book, ala:
http://www.linuxfromscratch.org/lfs/view/stable/chapter08/kernel.html
And at the end it's one of the things they point you at:
http://www.linuxfromscratch.org/lfs/view/stable/chapter09/whatnow.html
The "Beyond Linux From Scratch" book more or less evolved out of the
pile of hints, trying to turn it into a bigger systematic sequel book
of additional stuff you can build. But the hints profide alternatives
to the base infrastructure, such as BSD-style init scripts instead of
SysV style:
http://www.linuxfromscratch.org/hints/downloads/files/bsd-init.txt
Or using uClibc instead of glibc in the base system:
http://www.linuxfromscratch.org/hints/downloads/files/uclibc.txt
(Of course BLFS has its own problems. Their last release was in 2008
and they went to one of those "everybody just use svn and ping us if
it's broken" things because their development model's become too
dysfunctional to cut releases anymore.)
Anyway, advantage of this: if they take it you can then link to it from
musl's website and go "hey build your own system guys, here's how you
do a musl based LFS". It's not _explicitly_ that LFS would be endorsing
you, but it feels that way a little bit. :)
> > - is userbase of glibc, uClibc, klibc, or dietlibc better served by
> > musl?
> > - contribute musl option to buildroot?
> > - contribute musl option to crosstool-ng?
>
> There's demand for musl in crosstool-ng at least; the maintainer has
> expressed this, but is largely unfamiliar with musl and waiting for a
> patch from someone willing to do it.
He's a good guy. I'm not a fan of the design of his project (driving it
makes The Tardis look user-friendly), but a lot of people find it
useful.
> > - Ask mentor graphics (formly code sourcery) to do a musl
> toolchain?
> > - LOTS of proprietary embedded devs use this one, it's
> > "professional".
>
> I suspect they might be particularly interested since their customers
> might need to avoid copyleft code.
Or at least the random threat of lawsuits even if they _try_ to conform.
Not gonna rant. Nope. Not gonna.
> > - windriver.com is now a wholly owned subsidiary of intel
> > - klibc guys are initramfs@vger or embedded@vger (see lists)
> > - ask clibc author Peter Anvin if musl serves his needs?
>
> I think musl essentially obsoletes klibc. The main added cost of musl
> over klibc for initrds, etc. is the soft-float code that will get
> linked in due to printf on archs with no hard-float. If this is a
> problem, we could eventually support an option with musl to inhibit
> printf float code from getting linked at static-link time.
A "./configure --disable-soft-float" would be nice just for bragging
rights.
> This is a
> bit nasty but could be done with weak symbol tricks. Of course, even
> with all the soft-float code, I think binaries linked to musl will be
> significantly smaller than all the kernel modules, firmware, etc.
> stored on an initrd.
>
> On the other side, the big advantage of musl over klibc is that you
> don't have to worry about whether the apps you need will be okay with
> the limited/non-conformant functionality provided by klibc.
> Well-written apps should "just work", and be small.
An _ideal_ situation would be to get Peter Anvin to end klibc
development, point his users at musl, and possibly even become a musl
user/developer. I admit the diplomacy to arrange such an outcome is
beyond me.
However, it would be nice to ask him what he gets out of klibc. If it's
providing a reference implementation or using it to test system call
generation or some such, possibly musl could fill this role. If there's
something specific klibc does, it would be nice if musl could also do
it.
> > - websites that might review musl if we ask nicely:
> > - linux
> > - lwn.net (submit via lwn@lwn.net)
> > - h-online (ping @codepope on twitter)
> > - Linux Journal
> > - Linux Today (they'll just link elsewhere)
>
> I think getting the 1.0 release on Reddit, Hacker News, etc. would be
> useful too. If for nothing else, as one step closer to the magic 7.
Obviously, none of these lists are exhaustive. :)
But if we add to them much, collating to create a master list sounds
like a job for a wiki.
> > - android
> > - not personally familiar, google for "android news" finds
> several.
> > - works well with android kernel, installs side-by-side with
> > bionic,
> > static links well, doesn't introduce any new licensing issues,
> > provides full posix environment, active and responsive dev
> > community.
>
> Yep. I'm not familiar with these sites either though.
Enthuse to the cyanogen mod guys, send them to enthuse to others?
http://www.homeonthestrange.com/view.php?ID=28
> > - ask people on mailing list and irc to blog/tweet about the 1.0
> > release when it
> > happens.
>
> Yes, this is definitely an under-utilized aspect of the (now rather
> large) community.
Word of mouth is the best asset, but buzz is all about combo bonuses.
The _other_ thing you might want to do is pull up the original BBC
"kitchen nightmares" on Netflix streaming and watch Gordon arrange a
full set of customers for each failing restaurant, at which point
hilarity inevitably ensues.
"OK, you've achieved basic competence. Now a thundering horde of a
gazillion people
show up wanting to try your thing. How do you avoid service melting
into a puddle
under the load?"
Lots of people are not prepared for _success_. You've got to acclimate
newbies. You've got to have a website that can handle the downloads.
Mailing list traffic spikes. I dunno if this will happen, but _if_ it
does, are you prepared?
Ideally you'd have not just a goot FAQ and web pages but "the book of
musl" which can act as both tutorial and reference (two different
functions), and designated hand-holders in the community fielding a
flood of newbies.
This is probably hashing your chickens before counting them, of course,
but I wanted to at least bring it up.
For example, if you put your musl porting guide online (p.s. put your
musl porting guide online) and you suddenly have three different people
submitting ports to different architectures, the testing burden's gonna
get nuts. The "why doesn't it work with this package" requests could
spike beyond the ability to field. Bug tracker. Translations, including
people translating the documentation and web pages themselves (with all
the version skew that entails). Triaging and merging forks. Patches
winding up in distro repositories and not necessarily making their way
back upstream promptly...
Yeah yeah, such problems we should have. Just don't be surprised by
them. :)
Rob
next prev parent reply other threads:[~2012-12-01 0:04 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-29 20:50 Rob Landley
2012-11-29 21:15 ` Justin Cormack
2012-11-29 21:51 ` Luca Barbato
2012-11-30 1:30 ` Rich Felker
2012-12-01 0:04 ` Rob Landley
2012-11-30 9:21 ` Rob Landley
2012-11-30 11:08 ` Szabolcs Nagy
2012-12-01 2:00 ` Rob Landley
2012-11-30 1:27 ` Rich Felker
2012-11-30 8:11 ` Truls Becken
2012-11-30 14:29 ` Luca Barbato
2012-11-30 19:05 ` Rich Felker
2012-11-30 20:16 ` nwmcsween
2012-11-30 20:20 ` Rich Felker
2012-11-30 20:32 ` nwmcsween
2012-11-30 20:25 ` Szabolcs Nagy
2012-11-30 20:26 ` Rich Felker
2012-11-30 21:14 ` Luca Barbato
2012-11-30 21:26 ` Rich Felker
2012-12-01 0:04 ` Rob Landley [this message]
2012-11-30 4:38 ` Jens Staal
2012-11-30 7:08 ` Daniel Bainton
2012-11-30 13:26 ` Hiltjo Posthuma
2012-11-30 2:21 idunham
2012-12-01 2:04 ` Rob Landley
2012-12-01 4:06 ` Rich Felker
2012-12-01 8:18 ` Isaac Dunham
2012-12-04 20:48 ` Rob Landley
2012-12-04 21:45 ` Rich Felker
2012-12-04 23:01 ` Isaac Dunham
2012-12-04 23:22 ` Rich Felker
2012-12-05 0:58 ` Rob Landley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1354320294.2190.24@driftwood \
--to=rob@landley.net \
--cc=musl@lists.openwall.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).