Core BrainStorm
Bill Nottingham
notting at redhat.com
Sat Dec 10 05:23:09 UTC 2005
seth vidal (skvidal at phy.duke.edu) said:
> So if you have any ideas discuss them here and post criteria to the
> brainstorm page.
OK, time for a brain dump.
Stephen mentioned wondering who the Core architects were. Historically,
it's been a loose confederation that involved mainly myself, Elliot Lee,
and Jeremy Katz, with other people as necessary.
New packages would be proposed, generally by those who would be
maintaining them. They'd be asked to provide:
- package name (example recently: libosp)
- what it does (blah)
- why it's needed (it was split off from openjade. Required by various
things)
- whether or not it needed to be in the comps file (and if so, where)
A decision would then be made; sometimes it would be 'please put this
in Extras instead'. If it was decided to be fine for Core, it would be
added to some internal machinery, and the maintainer would check it
into CVS and build it.
A similar process would be followed for package removals. However,
general reviews of the package universe looking for likely candidates
for movement were only done when there was a space crunch, or as
occasional projects when bored (such as looking for libraries no longer
used by any apps.)
That's the general mechanics of it, anyway.
Now, as to criteria. I'm sure some of the interaction designers will
tell me we're going about it the wrong way, but we've historically
looked at the following usage cases:
- Internet-attached server
This means a server for the main internet protocols. This would
include a web server, a database server, name server, DHCP server,
etc. More esoteric things like gopher servers, IRC servers, or
game servers wouldn't really fall into this category, though.
- Knowledge worker desktop
This would include the base desktop shell and applications that
a typical knowledge worker would use - web browser, office suite,
e-mail client, chat/IM client.
- Technical workstation/desktop
This is a superset of the knowledge worker desktop; it would include
some basic development tools, and possibly things such as graphics
editors.
There are various usage cases we *haven't* focused on:
- Game machine, with all the various open source games
- Educational desktop for kids
On top of these various usage cases, we have technical constraints
that drive decisions:
1) Core must be self-hosting.
2) Extras must be self-hosting in conjunction with Core.
3) Subpackages cannot be split between Core and Extras, at least not
without building them in each instance separately.
Now, the question is, within Core, how do we apply these usage cases
and criteria to packages to determine what is and isn't appropriate?
Generally, we want to ship best-of-breed apps for any particular
functionality. While we release that multiple implementations of
various things exist and will need to be shipped (barring something
very unforseen, we'll always have both Perl and Python), we
want to limit the number of redundant apps - in nearly all cases,
Extras is the perfect place for them.
When determining what we'd consider best-of-breed, we have
the following criteria (not all of these would apply to every
package):
- should be localized, or at least localizeable
- should support internationalized input
- should function properly in UTF-8
- should be in a modern graphical toolkit, such as GTK+ or QT
- should not drag in an excess number of dependencies
Historically, we've erred on the side of adding software; there
has been a more-is-better approach, as the amount of things
people expect a distribution to do increases.
Now, how should this change in the future?
What needs to happen, in my opinion, is that the idea of functionality
being in packages in Extras shouldn't be seen as a bad thing, or
as a barrier to entry.
There are various ways to accomplish this:
- brand the universe of Core + Extras as Fedora, and generally refer
to that, as opposed to Fedora Core and Fedora Extras
This could have ramifications on other projects, though - as
how does this relate to things such as Fedora Directory Server,
or other future Fedora Projects?
- seamlessly allow Extras to be everywhere that Core is from an
installation path - anaconda, yum, pup, system-config-packages, etc.
This is done for yum and pup, but not yet for the others.
- allow functionality grouping of packages for download and ISO
creation, and potentially do this for Extras
I've posted about this before - I think it simplifies the user
experience if you have things like Fedora Office, Fedora Java -
plus, it allows people to easily see what they would need to
download for what they want.
Alternatively, we could push DVD isos everywhere. But then
we'd probably overflow those. (Fedora Blu-Ray!)
Once we accomplish these things, we can then reexamine the
package contents of Fedora Core as it stands now, and potentially
rearrange things significantly.
However, this does bring up issues:
- Extras and Core have differing release models, generally. Core
has a Release, plus Updates. Extras has a more rolling release
model.
It could be possible to move Extras to be released more like Core,
complete with Updates and advisorys. However, I don't know if
that's practical or wanted - it requires more discussion.
- With the more rolling release model of Extras, how does that fit
in with building CD images, or grouping of packages? Do we
offer services that build Extras CDs on-the-fly? Do we have
generated Extras isos at Core release time, and never afterwards?
Do we allow third-parties to make their own Extras isos with
scripts (or infrastructure) that we provide? (Cue the Trademark
policy!)
There are probably other issues I'm missing in this 20000 foot view.
While we're here, we could think of new criteria that we'd use,
and new polcies we could implement as part of this. Examples
would be:
- Compatibility libraries - All compatiblity libraries exist
solely in Extras (unless they are required by Core
packages - this should be minimized, of course.) Compatiblity
libraries could exist in Extras for a period of time that is
at the discretion of the maintainer, or we could have specific
policy (one release? two releases?)
This is something we could start implementing today.
- Support for languages not deemed as being fully supported (whether
by average translation percentage, or some other metric) would
exist solely in Extras.
Frankly, I think this is a bad idea, but I know that others
disagree with me.
I suspect we could come up with some significant reducutions in
Core if we tried hard. Looking over a report of all the leaf nodes
in the distribution would produce lists of smaller packages that
could be removed, while reexaming the entirety of Core based on
these criteria could remove various larger things. Examples
of the former could include things like privoxy or dtach; examples
of the latter could include larger things ranging from Jonas
to KDE to Ruby.
However, it's my opinion that a lot of implementation of the latter
category should wait until we have install-time support for multiple
repostiories, and potentially support for CD grouping of the same.
Perhaps we should go down this road and start listing such things
that we would move in the release notes, in preparation for FC6/FE6.
Or should that just be F6: And You Thought Twister Was Bad!
Comments? Flames? Not at all what you were looking for?
Bill
More information about the Fedora-maintainers
mailing list