Discussion:
FreeBSD problems and preliminary ways to solve
Vadim Goncharov
2011-08-17 23:10:19 UTC
Permalink
Hi,

I have bad news.

A month ago techlead of Rambler's Mail department declared in his blog
that they begin migration from FreeBSD to Debian/Ubuntu. Comments to the
blog entry (there was much flame) revealed that search department of
Russian search engine #1 Yandex.com also plans to migrate their
search cluster - about 30,000 servers in several DCs (~60% of total
their servers - to Linux. The problem here is that both big companies
were using FreeBSD from the beginning (~1997), so migration will be
rather expensive.

The official reasons (really semi-official, as these are individual
blogs), in short, were:
* inadequate package manager and huge monolithic base system
* lack of OpenVZ-like virtualization (need CPU limiting)
* a FreeBSD marketshare forecast for 5 years

Despite of several our committers working for them, the operating
expenses for FreeBSD are considered too high by these companies. They've
not confirmed, but the key problem is probably shortage of FreeBSD
specialists on the market to hire (e.g. Yandex has about 20 FreeBSD
admins and about 84 Linux admins, for all other their services and
40% of servers). So this is problem of FreeBSD's too low
userbase/marketshare, caused, in turn, by other FreeBSD's problems.

Given that they is just planning today, but not yet started, we have to
solve our problems or FreeBSD will effectively die[1]. Currently
https://ssl.netcraft.com/ssl-sample-report//CMatch/oscnt_all shows that
still 3% of servers are running FreeBSD. We are currently probably at
the tip of 'hype curve'[2] and then our userbase will begin to shrink,
and the task is to solve problems, so after hard time it will rise again
(hopefully more than it was before).

[1] 'Die' means shrinking userbase size to those of NetBSD/OpenBSD.
[2] http://www.metodolog.ru/01493/2.gif

Earlier this year in this list marcel@ have said about objective view:
http://lists.freebsd.org/pipermail/freebsd-arch/2011-January/010999.html
from the outside, not FreeBSD people. I have posted a call to Russian
community in my blog (http://nuclight.livejournal.com/128712.html) and
gathered a list of problems along with possible solutions to some of
them. The rest of this message is summary of them.

In general, people sympathizing FreeBSD agree that there are no fatal
technical problems and that FreeBSD could compete with mainstream Linux.
That said, the 80/20 principle is in effect and 80% losed users for
FreeBSD are caused by 20% problems. The trouble here is that what
"outside" people view as considerable problems, we here inside FreeBSD
view as something insignificant ("do it yourself"). Thus 80% could be
achieved by 20% of work. I have sorted them in order of decreased
importance (priority):

1. Social problems of community (and marketing, docs, ...)
2. Lack of drivers and virtualization.
3. Ports and packages.
4. Base system, closely related with packages.
5. Too short major releases' cycle.
6. Bug tracker, unicode and other less important trivia.
(bonus) FreeBSD strengths to be concentrated on.

Now all of them more detailed.

> 1. Social (psychologic) problems of community (marketing, docs, ...).

This is the most important one, because all technical problems are just
won't get solved because are even not viewed as problems. The FreeBSD
Project does not listen to users' needs. The typical response when poor
user want something is: "we don't need this, we won't change for you",
with "where are your patches?" at best. Then many users go out when see
such attitude toward them.

The key points are:

1) *The competent user is not zealot*.
2) The system is *for users, not for developers*.

With first: when user sees the system costs too much time for him, and
that those problems won't get fixed and even considered such - he will
switch to another OS. This may mean that he is able to follow our advice
hoe to do some or another thing (e.g. to recompile all ports), but this
is unacceptable to him because this is too much maintenance (another
system by objectivity requires less work). Many businesses fall into
this category. They will not with FreeBSD by any price just because they
love OS. Unlike ourselves.

With second: that's simple and not simple. It is simple in that by
nature each person don't make a work just for himself but for all
others, who are now "users" to him, too - just by induction that's not
for developers only. It is not simple due to question "Why do we need
those who don't contribute anything back to us?" which random committer
has right to ask. The answer, in short, is: there tasks which could be
only done by large groups of people, e.g. big corporations. For
corporations to invest and contribute back - the system must be popular
enough. To be popular enough means there must be a big amount of users
who is not contributing anything. It is useful in itself, though, that
some of those users, say 1%, will become contributors, that is, absolute
number of our developers will also benefit from FreeBSD being much more
popular.

There are opinions in our community like:

| > Personally I'd like to think that that we write an OS for users.
|
| We write an OS for the people who can and will use an OS written by
| us.

| FreeBSD is whatever its developers make it be

These are wrong and harmful nowadays. The world has changed. We have to
admit it or we will die. We have to admit mistakes and *change* some of
the ways we're doing things: any answer like "I don't agree, we don't
need these users/features/etc., we *won't* do this for someone" - is
just another step to grave.

Of course that doesn't mean to do everything - we often have not enough
time/resources to do. But that's another question and should not be
mixed with attitude - "it's good but we have no resources, will you do?"
vs "we don't need this, go away" (that's not only about features but
about keeping something too).

So ("system is for users") we need to (re)define who our user is. I view
the current situation as following:

100% .---------------. The stratification of overall
| Ubuntu | our userbase. Areas are:
| target | 6
| audience | 1 - official developers
expand -> |---------------|
to here | not our, but | 2 - actively participating and
| competent | 5 sending patches, contributors
| users | and other "zealots" (whose
|===============| "soul is with FreeBSD")
|announce@ only | 4
involved |---------------| 3 - not so active but discussing
| subscribed to | in mail lists, patches go
| our mailing | 3 sometimes
| lists |
committed |- - - - - - - -| 4 - busy with work to read lists
| | 2
|_______________| 5 - can use, but costs are now high
| *@freebsd.org | 1
0% `---------------' 6 - we'll never want them

The terms "involved" and "committed" were taken from
http://en.wikipedia.org/wiki/The_Chicken_and_the_Pig for those who are
"at the heart" of the community, at "periphery" and all others.
Currently, only those in (1) and partially (2) are listened to,
sometimes with "call for ..." in (3). Meanwhile, the most important of
our users, who are using FreeBSD in production, who are busy with real
work in real world, are in (4) and sometimes (5). Those are largely
ignored by the Project - even messages to announce@ last years are less
about important events and calls for volunteers/money.

The other social problem is lack of companies which offer commercial
support of FreeBSD like RedHat does.

As a possible solution to find out what user needs are, and to
compensate the fact that not all users in (4) and (5) care enough about
our principles and spirit, I propose a system for "weighted democracy".
This is a voting system (I could implement it), say, there is a mail
***@freebsd.org to which users send filled in vote forms, with
selected answers from a survey published in ***@.

The system has a database where users are recorded given their FreeBSD
activity in mail lists etc., and votes are summed as follows:

+ 1.00 vote for anyone not in database (not involved to FreeBSD)
+ a decimal logarithm of number of posts to mail lists (2 votes for 100
posts, 3 votes for 1000 posts)
+ a binary logarithm of num PRs in GNATS db (6 votes for 64 send-pr's)
+ a proportion (say, N/2) of entries for this person in "svn log" (e.g.
in "Submitted by:")
+ an assigned (by core@) number of votes in special exceptional DB (for
corporation and the like)

The system then presents results for each answer: 1) how many users
voted, 2) how many votes summed.

This is by no mean to measure "exact contribution", but to defend from
anonymous users and trolls who not care about amount of work developers
will need to. The results are viewed as a feedback to core team, not as
a final decision - that's all for what marketing is solely exist. There
no adequate feedback from users to developers currently at all -
individual posts in mail lists are too small for statistics (what about
ministat(1) for users, huh?..).

What is also in this part? Documentation. No, not in that sense. The
observations show that while there are described solutions to problems
in system, it's difficult for users to find it. It's somehow organized
or misorganized that solution is not intuitive for them (e.g. someone
migrating from Windows complained that it was difficult to find 'simply
how to format a flash drive' in Handbook). I don't know how to handle
this properly. May be catalogues with Best Practices howto's pointing to
exact sections of Handbook, FAQ, articles etc.? May be better search
mechanisms?..

And the last here about too much conservatism and rigidness in our camp.
As one of the opponents said (roughly translated):

| FreeBSD, historically, was good system, let's say, "valid system
| for solid people". Pureness, strictness, etc. The base system is
| consequence of this approach. The trouble is, that in 2011 nobody
| needs pureness and strictness. Customers need transparency and fast
| reaction to their requests. If there is no transparency and speed,
| you get CentOS 6 (just released, at last). Or FreeBSD (Gentoo,
| Solaris, you name it).

I don't agree that those certainly contradicts each other, but we
definitely need to change, er, something. And don't keep something just
because it is tradition, if that tradition has no more technical reasons
for our users. Let's shift conservatism to another field where it is
really needed (e.g. legacy support and other examples below).

Finally, two more quotes from the ***@freebsd.org archives of last
2 years:

| From: Cyrille Lefevre <cyrille.lefevre-***@laposte.net>
| [...] however, you answer remember me why I quit FreeBSD, cease
| fire, courtesy is the key

and

| From: Julian H. Stacey
| Though I & many others have sent lots of send-pr, contributing even
| a spelling correction to FreeBSD is much harder than to e.g.
| http://wikipedia.org

The threshold of entering to FreeBSD is too high and should be lowered.
I can confirm the last quote on my own example, 2 months ago. I've
submitted a patch to ipfw, adding call/return rule actions. It allows
to organize rules in somewhat like pf anchors, and, more importantly,
iptables chains, enabling FreeBSD ipfw to compete with Linux at least
partially in this sphere. The patch wasn't taken in maillists, I had
to push it in IRC, and push hard: the whole needed by many big users
thing was deferred (and still not MFCed to 8.x) just because some
#define's and printf's were Not So Proper & Right Way! F*cking shame.

> 2. Lack of drivers and poor guest virtualization.

It is known that FreeBSD supports less hardware than competitors. It is,
however, a matter of popularity - the more system will have users, the
more drivers will be created by 3rd parties, so we cannot directly
affect this. It's kind of exclusive circle.

But there is one area - virtualization - without supporting it the
FreeBSD niche will collapse very fast. It is necessary to say that it is
about guest (para-)virtualization only, not host mode. Host mode market
is already lost for FreeBSD for quite some time, may be something in the
future, but today it will waste of resources. What is needed here is
just analogue to OpenVZ (and jails/rctl already done more than half of
the work here).

And in guest mode FreeBSD *urgently needs* working drivers/utilities for
all common suits, Citrix XenServer, VMWare vSphere (ESXi), Xen*,
Microsoft Hyper-V, etc. This must be the primary direction for
developers' forces and FreeBSD Foundation's money. We have may be about
1 year here. Why? Because of cloud computing and VPS/VDS. It's no
matter what OS runs hoster if clients will use FreeBSD and we still have
users. I've been already asked by a customer for which I wrote
a non-portable kqueue-based daemon to rewrite for Linux because they
want to go for Amazon EC2 (it's cheaper as only used resources are
accounted) and FreeBSD there has still many in ISSUES scaring them...

> 3. Ports and packages.

What was the main problems with large-scale installations of FreeBSD in
that businesses? In short, that binary packages are not equal in rights
to ports, and that complicates things (i.e. requires too much work) when
one have many (> 10) servers. This was listed to me as:

1) No pkg and pkg-devel versions. The -devel version is headers, static
libs, programmer examples, etc. not needed in production (we could
say this part is what is actually depended on in B-deps).

2) Package name is dependent on options, so packages with another opts
don't work well when dependencies are rebuilt.

3) Conflicts: no way to have apache13 and apache22 the same time.

4) No dependence on base system. You may cut out something, recompile
world, deploy it on cluster and just then see that some packages are
now don't work.

5) Dependencies are badly designed. No version ranges in dependencies,
no alternative packages, no priorities in package search.

6) Update problems. The version is just coded into name of package, and
dependencies are on the entire name, so there are situations when
install/upgrade of just one package may require rebuild 3/4 of all
pkgs. You cannot easiy modify installed package without editing pkgdb
manually. It is impossible to upgrade/replace package by out of the
box tools.

7) Base system has no "out of the box" tools for package upgrade. Our
business opponents say this the least problem as one can always
install portupgrade, but conclude that overall base system concept
does not play well with full-featured packages (see also next part
about base system).

8) There is no -STABLE supported branches in ports.

All of this could be avoided (they know about tinderbox etc.) but just
requires too much work, for their basic tasks like automated upgrade of
entire system & packages or reinstall of needed packages.

That's problems. Next, possible (gathered) solutions.

It is obvious that current packages are not first-class citizens, in
comparison with ports. They want ba able to run most machines without
a compiling at all (BTW, our desktop users need the same), but setting
build farms when there are many machine roles is hard.

So packages need to be "equal in rights" in ports. The ports can have
things like this:

.if ${OSVERSION} < 700104 || ${OSVERSION} >= 900000

or this:

LIB_DEPENDS+= profiler.1:${PORTSDIR}/devel/google-perftools

but packages are not so flexible, all you have is:

@pkgdep perl-5.8.9_2

skv@ proposed the following changes:

* OPTIONS need radio-buttons (e.g. only one of MySQL, PostgreSQL,
SQLite) and dialog(1) supports it.

* Options must be included and installed to /var/db/ports/*/options
(this will allow to rebuild installed binary pkg as port)

* Info about options must be included to /var/db/pkg/*/+CONTENTS like:

@option WITH_SSL
@option WITHOUT_DEBUG

* Dependencies must be able to specify needed OPTIONS, both required to
set and required to be unset, somewaht like:

RUN_DEPENDS+= foobar:${PORTSDIR}/devel/foobar:+SSL:-SQLITE

This will allow to detect conflicts with installed packages with
incompatible options.

* For the package file names, introduce presets, e.g.:

OPTIONS_PRESETS= default "+SSL:-DEBUG" \
lite "-SSL:-DEBUG"

And preset name could be put to pkg name (may be "" for default).

* (internal) move away from CVS, rebalance to category-subcategory.

These ideas in later discussion evolved to another additions. Let say we
are able to use multiple repositories, where "repository" is a variant
of /usr/ports tree and packages built from it. Then, each port allows to
build several packages from it, with different options. Now, if we have
a port called "softina" and user does

pkg_add -r softina

then dependency search must be made given needed options. So @pkgdep
consists just of "softina" and versions like ">=1.1" and options. Also,
if packages are equal in rights to ports, they need integrity/security
check. So, package file name is now like:

softina-1.2.3_1:repo.id:1312929890.tbz # chars allowed by windows

Here is a repository id, just a hostname like "freebsd.org" for official
ports, and an unique build id in that repo, though it were suggested
that option preset name instead of that name will be better (because
human-readable). And `pkg_add -r' fetches a single file

softina.pkgmeta

consisting of sections for each actual package file. Each section has
a copy of what already is in .tbz file: name, comment, options,
dependencies (and their versions and options). And one thing not present
in .tbz - it's digital signature. Fetching pkg_add looks up local key
for given repository id to check. Fetching .pkgmeta beforehand also
allows to calculate if all needed dependencies are present in repo to
not fail in the middle of 100 packages as current pkg_add may do. The
signature is in another file and optional, so user could install the
plain .tbz file manually (it still contains all needed information,
.pkgmeta is only a copy except a signature).

The one other thing which is also optional to @pkgdep is again
repository id. This is to allow following situation:

* company has 10 it's own internal projects
* it also has 20 modified ports from original tree
* internal pkgs depend on modified ports, not original
* it's local port tree/pkg repo may hand only those, not full tree

Then internal pkgs may be depended on modified ports to be not
intermixed by mistake with original versions from official tree.
Repository IDs are used for that, this is optional mechanism, though.
End machines have two repositories in their config files, local and
offical, and all works correct, and local repo doesn't need to be a full
clone of ports tree.

The problem of -devel ports could be solved by using a global knob like
WITH_DEVEL (analogue of WITHOUT_X11), and options affect parts of
pkg-plist. The solved problem: glib has perl in R-deps, just for one
script, but this script is needed only for _build_ of dependent ports.
Now, if you install irssi, you will always have glib and perl, but you
don't need perl to run irssi. And irssi could have it's build dependence
of glib:+DEVEL and run of just plain glib.

Of course we don't want to split ports to perl, perl-base, perl-modules,
perl-doc, etc. like in Debian, and options could be solution here - one
port, several packages. Build farm may now build not one, but 2-3 common
option presets.

Here we go to another related problem, though - ports infrastructure.
I've read 16 chapters of http://www.netbsd.org/docs/pkgsrc/ and found
several interesting moments (let's concentrate on most close sibling of
our ports, though e.g. slots in Gentoo and Arch Linux system are also
worth looking too). They already have many of what we need, and since
pkg_install/ports by Jordan Hubbard is common ancestor, it may be easier
to port from them to us needed features.

For example, there is problem generating plist for our porters. And what
they have, a program to create port from distfile:

| Run the program url2pkg, which will ask you for a URL. Enter
| the URL of the distribution file (in most cases a .tar.gz file) and
| watch how the basic ingredients of your package are created
| automatically.

Just fix oddities later manually, but saves from all boilerplate work!

Next, skv@ said about radio-buttons, and thay also have it, in two
favors: first with one from group always set, second allowin all clear:
"Exactly one of the following gecko options is required"
"At most one of the following database options may be selected"

| PKG_OPTIONS_REQUIRED_GROUPS is like PKG_OPTIONS_OPTIONAL_GROUPS, but
| building the packages will fail if no option from the group is
| selected. PKG_OPTIONS_NONEMPTY_SETS is a list of names of sets of
| options. At least one option from each set must be selected.

The OPTIONS, however, are handled in different way:

$ grep "PKG.*OPTION" mk.conf
PKG_DEFAULT_OPTIONS= -arts -dvdread -esound
PKG_OPTIONS.kdebase= debug -sasl
PKG_OPTIONS.apache= suexec

Dependencies also allow versions:

BUILD_DEPENDS+= lua>=5.0:../../lang/lua
DEPENDS+= screen-[0-9]*:../../misc/screen
DEPENDS+= screen>=4.0:../../misc/screen

Checksum files for packages exist on their own, and only those may be
signed not the packages itself (an alternative to .pkgmeta approach
described above).

Another useful thing to borrow is patches/* separately from files/*

The most visible thing in pkgsrc superior to ports, is buildlink3
framework:

| Buildlink is a framework in pkgsrc that controls what headers and
| libraries are seen by a package's configure and build processes.
| [...] Please note that the normal system header and library paths,
| e.g. /usr/include, /usr/lib, etc., are always searched -- buildlink3
| is designed to insulate the package build from non-system-supplied
| software.
| [...]
| Some packages in pkgsrc install headers and libraries that coincide
| with headers and libraries present in the base system. Aside from
| a buildlink3.mk file, these packages should also include a
| builtin.mk file that includes the necessary checks to decide whether
| using the built-in software or the pkgsrc software is appropriate.
| [...] When building packages, it's possible to choose whether to set
| a global preference for using either the built-in (native) version
| or the pkgsrc version of software to satisfy a dependency. This is
| controlled by setting PREFER_PKGSRC and PREFER_NATIVE.
| PREFER_PKGSRC= yes
| PREFER_NATIVE= getopt skey tcp_wrappers

There are more automation:

| Up to now, the file PLIST, which contains a list of the files that
| are installed by the package, is nearly empty. Run
| bmake print-PLIST >PLIST
| to generate a probably correct list.

Yes, they rely on their derivative of BSD make, bmake, which it itself
worth merging deifferencies to our make (for example, there is a clean
and small alternative to autotools, mk-configure, using bmake and
written in style of .include <bsd.prog.mk>). There may be other examples
of userland tools worth porting from NetBSD to us instead of directly
upstream, e.g. awk... but that's another story, let's continue pkg.

Their developments of pkg_* tools contain facilities to implement a good
package manager out-of-the-box, e.g. pkg_add there has flags:

| -A Mark package as installed automatically, as dependency of
| another package. You can use
| pkg_admin set automatic=YES
| to mark packages this way after installation, and
| pkg_admin unset automatic
| to remove the mark. If you pkg_add a package without
| specifying -A after it had already been automatically
| installed, the mark is removed.
| -U Replace an already installed version from a package.
| Implies -u.
| -u If the package that's being installed is already installed,
| an update is performed.

These are crucial to effective binary package management.

> 4. Base system, closely related with packages.

The next in turn was concept of monolithic base system. The troubles
with base system were:

1. To change the components of the base you may only recompile it with
corresponding src.conf(5) options, but there is no track in base
system which are actually installed now. You cannot binary upgrade
a custom world, even if it is just unmodified -STABLE instead of
-RELEASE.

2. Consequently, there is no way to check integrity (MD5 etc.) of any
non-RELEASE variant (freebsd-update IDS is very limited).

3. No ties between base system and packages: who knows what previous
admin has installed, you may have compiler or may not have, etc.
Packages may silently broke if some part of base system SUDDENLY
disappears, as no dependency information is recorded.

4. Base system is monolithic, so there is no easy way to replace one
component with another - ports replacing base parts are hemorrhoids.

So, they conclude, the base system concept should be eliminated and be
split to bare kernel and gazillion of packages.

But we all know what benefits base system gives to us: it is actually
a *system* where all components are in concordance to each other, not
just a bunch of packages. Also, if it will be all split, this will
require *much more* efforts from our committers to keep everything in
sync. And our resources (efforts) are limited.

Actually, when you face two contradictory ways, all-or-nothing, both
with pros and cons - you should select neither of them, but try to find
something which will *synthesize* both of them. Such finding is an
interesting engineering (often inventor) task. And dougb@ already said
once that between base as-is and splitting all must be something middle.
It's Cathedral vs Bazaar, after all, and our Cathedral should be updated
and still use it's cathedral benefits. After all, NetBSD has proposal of
syspkg in 2004, and still has older format - just because it is not BSD
way, something new has to be invented.

The most obvious solution is to split base not to ~500 packages, but to,
say, ~50, and change boundaries. Why should freebsd.org developers place
boundaries in packages between themselves? So most natural solution is
to split packages out of base by the vendor criteria. Luckily, this work
is *already done* to some extent. So this will be minimal efforts
overhead, if any.

Looking at /usr/src/sontrib and http://wiki.freebsd.org/ContribSoftware
we can identify many of what could became a package. There can be
different approaches to criteria "what is in base system":

1. Only what is done on freebsd.org: all contrib must go to pkgs.

2. Whose effective vendor is now *@*bsd.org: contrib from other BSDs may
still live, and those with ceased upstream or renamed
(non-conflicting with ports) soft like libbsdxml, too.

3. Axe out only the most odious contrib parts: BIND (as Peter said in
archives, host/dig could be resurrected from Attic), sendmail (could
be replaced by dma) and several others, presumably GCC/binutils & CVS
(I've also heard about painful Kereberos interferencing with Samba).

The latter is most probable :-) given known conservatism and parts
inter-dependencies (openssl is required by freebsd-update, and it's not
*@*bsd.org - already an exception). But it still needs clear definition
of what base system is destined for.

A philosophical observation. The more "fat" base system is, the more
things are supposed about end user (the "WHEREs" in "SELECT"), so the
more narrow target audience is. The more thin base system is, the more
popular OS can be. You elitists may sleep well: FreeBSD will never be
as popular of Linux whose "rod" is just kernel, not base sys.

So each component of the base must be justified for the task, and for
task we may be should define to which user FreeBSD is targeted. Let it
be, say, task "the fresh setuped machine must be able to connect to
network to download and install binary packages". Then you don't need
GCC but you need editor to edit resolv.conf, less to view man pages,
tcpdump to debug network problems, send-pr to report a bug about
non-installed packages and thus a mail agent able to handle outgoing
report mail and daily periodic scripts to root while you have sex with
this (dma is suitable, sendmail is overkill). And so on.

Axing out GCC to packages has another benefit: the newer GCC could be
used, and base could be polished to be more compiler-agnostic (hello,
clang). But this requires binary packages to have equal rights with
ports, of course. A base without a compiler is not a dramatic - you
already need some ports to do "make release", and doc team already began
to split docs to packages, that's a right direction. For POLA reasons
all axed out packages (and sendmail too, respect traditions) should be
just packaged on CD1.

There may be another approach, not package one, but it is still in a fog
(and don't solve ports overriding base well). It's like the kernel and
modules: monolithic base system is just as monolithic kernel before
invention of modules - you the same way don't know what's in. Let's
dream a little - imagine we have our own DVCS, combining benefits of
centralized and distributed one, and not requiring splitting to multiple
repos like git, but allowing to use any given subset of files (not dirs
and subtrees as svn, *any* "inode"-based subset) from central repo
(this one "more equal" from all equal distributed repos). Such system
could be placed instead freebsd-update, binary updates of STABLE etc.
go to special branch, and user updates only those files which he have
on his system, VCS automatically tracks it.

> 5. Too short major releases' cycle.

I've once read a thread:

From: ***@FreeBSD.org
Subject: Schedule for releases
Date: Tue, 21 Dec 2010 09:47:08 -0800

where e.g. julian@ have said:

| Generally a company wouldn't want to go through the pain of an OS
| upgrade more than about once in three years and often it's longer..
| It IS a pain for them.

And many business people reported the same. And it is known many people
are doing backports, testing etc., they should be motivated to give work
back to FreeBSD. While it is more social problem, it is also a
DVCS/bugtracker problem, but more rare major releases would still help
on it's own.

It is known why the current scheme was adopted: the 4.11/5.3 case,
a horror. But between X.4 and X.11 there are even *several* intermediate
choices. What happens today: many conservative users (or builders of
products) consider -STABLE is really stable at the X.2 release. But just
after than an (X+1).0 is forked and all developers' attention goes to
new branch, X.3 and X.4 are not seriously developed. And due to
timelines described above, many users will then upgrade right away to
(X+2).Y, not (X+1). There are many 6.x and 7.x users in the wild, many
of 7.x users will upgrade directly to 9.x skipping 8.x. Is this good?
No.

Aside of many branches receive not enought production testing, our
committers must do MFCs to TWO branches, stable/7 and stable/8. While
usualy having no real possibility to test properly. Nonsense.

Is supporting two stable branches not using more efforts that it was in
4.x times? Not so? Still could be made better.

Proposed solution: prolonging major releases fork time a little. Just to
time so only one stable branch will exist. I hope increasing branch
lifetime to one minor release will help: last will be not .4, but .5,
and new .0 fork should occur at least after .3, not .2. We are not
Ubuntu. I understand that pace of changes is high, 3 years for each .0
may be unacceptable, but waht about at least 2.5 years? Not like 1.8
years currently. Rememeber, .5 and even .6 is still far from .11.

> 6. Bug tracker, unicode and other less important trivia.

GNATS is too old and unfriendly e.g. to user attachments. It has only
one adavantage: user is able to send report from CLI by mail without any
registration. This is essential. May be the good alternative will be RT
used at cpan.org (it also accepts by mail). Hopefully this will help
a little to solving problems. Not sure, though - and unsolved bugs are
also make users to go away from FreeBSD.

Users also want properly working UTF-8 out-of-the-box. Not only console,
but full collation support, etc.

There was suggestion about automatic kldloading of drivers, but this
work already began (for USB) in June - more matte of our documentation
and press relations, huh.

Installer. Must be more featureful and more user friendly :-) This is
often may give negative first impression if installer was unable to do
something even if system after this could work well.

Other problems, like broken cvsup, are exist, but are not critical to
Project's survival.

> FreeBSD strengths to be concentrated on.

The paragraph about virtualization above, as long as points below, are
roughly translated words of one small business representative in Russia,
who often acts as integrator.

1. BSD License. Very good for embedded vendors, we should be able to
compile and work both base and ports without licenses requiring to
open the sources. It would be good to not loose functionality without
them.

2. Kernel features for storage (ZFS, HAST, GEOM). We need to go to
NAS/SAN solutions niche while we have ability - it is still, because
Solaris etc. in unknown state with Oracle, BTRFS still beta. We have
about 1 year max. It would be nice to roll out "box" solution for a
failover iSCSI storage (2 PCs with ZFS raids replicated by HAST and
accessible by iSCSI with automatic role change).

3. Kernel features for complex network solutions (netgraph, carp, ipfw).
The niche for routers & traffic analysis is still ours. It would be
nice to take e.g. pfSense and agree with some vendor (Netgear,
D-Link, etc) to put on sale hardware with FreeBSD inside.

So these are main ways - embedded (NAS & routers). Other market is still
not our, e.g. not an application server until there will be a killer-app
for SCTP. May be also for a DB: Solaris was first recommended for
PostgreSQL, with some efforts we may become the first. Of course, the
main way - if some commercial company will offer FreeBSD.

We still have some time, but almost no time. We need to take decisions
right now.


That's all for today. Thanks to everyone who has patience to carefully
read this all entirely.

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight]
Baptiste Daroussin
2011-08-18 07:49:30 UTC
Permalink
Hi,

My reply only concerns package/ports management.
Most of what you are expecting from the ports tree is coming soon (new
option framework) and most of what you are expecting from binary
packages will be done with pkgng.

Just have a look https://github.com/pkgng/pkgng for pkgng it is still
experimental but works quite well :).

>
>> 3. Ports and packages.
>
> What was the main problems with large-scale installations of FreeBSD
> in
> that businesses? In short, that binary packages are not equal in
> rights
> to ports, and that complicates things (i.e. requires too much work)
> when
> one have many (> 10) servers. This was listed to me as:
>
> 2) Package name is dependent on options, so packages with another
> opts
> don't work well when dependencies are rebuilt.

They will with pkgng.

>
> 3) Conflicts: no way to have apache13 and apache22 the same time.
>

This is not a problem of the infrastructure nor of the package tools,
this has to deal with the said ports.
I'm pretty sure if you come with a path to solve this (for example
avoid file conflicts)

> 4) No dependence on base system. You may cut out something, recompile
> world, deploy it on cluster and just then see that some packages
> are
> now don't work.
>
> 6) Update problems. The version is just coded into name of package,
> and
> dependencies are on the entire name, so there are situations when
> install/upgrade of just one package may require rebuild 3/4 of all
> pkgs. You cannot easiy modify installed package without editing
> pkgdb
> manually. It is impossible to upgrade/replace package by out of
> the
> box tools.
>

This will be solve with pkgng

> 8) There is no -STABLE supported branches in ports.
>
> All of this could be avoided (they know about tinderbox etc.) but
> just
> requires too much work, for their basic tasks like automated upgrade
> of
> entire system & packages or reinstall of needed packages.
>
> That's problems. Next, possible (gathered) solutions.
>
> It is obvious that current packages are not first-class citizens, in
> comparison with ports. They want ba able to run most machines without
> a compiling at all (BTW, our desktop users need the same), but
> setting
> build farms when there are many machine roles is hard.
>
> So packages need to be "equal in rights" in ports. The ports can have
> things like this:
>
> .if ${OSVERSION} < 700104 || ${OSVERSION} >= 900000
>
> or this:
>
> LIB_DEPENDS+= profiler.1:${PORTSDIR}/devel/google-perftools
>
> but packages are not so flexible, all you have is:
>
> @pkgdep perl-5.8.9_2
>
> skv@ proposed the following changes:
>
> * OPTIONS need radio-buttons (e.g. only one of MySQL, PostgreSQL,
> SQLite) and dialog(1) supports it.
>

This is coming soon to the ports tree, time to do more testings

> * Options must be included and installed to /var/db/ports/*/options
> (this will allow to rebuild installed binary pkg as port)
>

This could be a good idea :) I'll keep it for pkgng

> * Info about options must be included to /var/db/pkg/*/+CONTENTS
> like:
>
> @option WITH_SSL
> @option WITHOUT_DEBUG
>

There is an equivalent of this in pkgng.

> * (internal) move away from CVS, rebalance to category-subcategory.
>
> These ideas in later discussion evolved to another additions. Let say
> we
> are able to use multiple repositories, where "repository" is a
> variant
> of /usr/ports tree and packages built from it. Then, each port allows
> to
> build several packages from it, with different options. Now, if we
> have
> a port called "softina" and user does
>
> pkg_add -r softina
>
> then dependency search must be made given needed options. So @pkgdep
> consists just of "softina" and versions like ">=1.1" and options.
> Also,
> if packages are equal in rights to ports, they need
> integrity/security
> check. So, package file name is now like:
>
> softina-1.2.3_1:repo.id:1312929890.tbz # chars allowed by
> windows
>

pkgng have an experimental multi repository support, even if we focus
on a clean single repository support.

> Next, skv@ said about radio-buttons, and thay also have it, in two
> favors: first with one from group always set, second allowin all
> clear:
> "Exactly one of the following gecko options is required"
> "At most one of the following database options may be selected"
>
> | PKG_OPTIONS_REQUIRED_GROUPS is like PKG_OPTIONS_OPTIONAL_GROUPS,
> but
> | building the packages will fail if no option from the group is
> | selected. PKG_OPTIONS_NONEMPTY_SETS is a list of names of sets of
> | options. At least one option from each set must be selected.
>
> The OPTIONS, however, are handled in different way:
>
> $ grep "PKG.*OPTION" mk.conf
> PKG_DEFAULT_OPTIONS= -arts -dvdread -esound
> PKG_OPTIONS.kdebase= debug -sasl
> PKG_OPTIONS.apache= suexec
>

This is coming along with the radio options.

>
> Their developments of pkg_* tools contain facilities to implement a
> good
> package manager out-of-the-box, e.g. pkg_add there has flags:
>
> | -A Mark package as installed automatically, as dependency of
> | another package. You can use
> | pkg_admin set automatic=YES
> | to mark packages this way after installation, and
> | pkg_admin unset automatic
> | to remove the mark. If you pkg_add a package without
> | specifying -A after it had already been automatically
> | installed, the mark is removed.
> | -U Replace an already installed version from a package.
> | Implies -u.
> | -u If the package that's being installed is already
> installed,
> | an update is performed.
>
> These are crucial to effective binary package management.
>

All of this can be done a better way with pkgng


regars,
Bapt
Vadim Goncharov
2011-08-18 21:45:23 UTC
Permalink
Hi Baptiste Daroussin!

On Thu, 18 Aug 2011 07:49:30 +0000; Baptiste Daroussin wrote about 'Re: FreeBSD problems and preliminary ways to solve':

> My reply only concerns package/ports management.
> Most of what you are expecting from the ports tree is coming soon (new
> option framework) and most of what you are expecting from binary
> packages will be done with pkgng.

Good news!

> Just have a look https://github.com/pkgng/pkgng for pkgng it is still
> experimental but works quite well :).

I've looked to wiki.freebsd.org before that and there was almost empty page.
An illustration of another social problem - more should be known to the user
in the first place...

>> 3) Conflicts: no way to have apache13 and apache22 the same time.
> This is not a problem of the infrastructure nor of the package tools,
> this has to deal with the said ports.
> I'm pretty sure if you come with a path to solve this (for example
> avoid file conflicts)

Separate PREFIX? How is it solved on another systems?

>> 4) No dependence on base system. You may cut out something, recompile
>> world, deploy it on cluster and just then see that some packages are
>> now don't work.
>>
>> 6) Update problems. The version is just coded into name of package, and
>> dependencies are on the entire name, so there are situations when
>> install/upgrade of just one package may require rebuild 3/4 of all
>> pkgs. You cannot easiy modify installed package without editing pkgdb
>> manually. It is impossible to upgrade/replace package by out of the
>> box tools.
>>

> This will be solve with pkgng

And base system too? I've forgotten to write another idea in previous letter:
the kernel nowadays has FEATURE() macros which application could check, so
for packages something may be deployed, e.g. @basefeature GCC etc.
Same with $OSVERSION.

>> * OPTIONS need radio-buttons (e.g. only one of MySQL, PostgreSQL,
>> SQLite) and dialog(1) supports it.
>>
> This is coming soon to the ports tree, time to do more testings

The both versions "exactly one must be set" & "zero or one must be set" ?

>> Also, if packages are equal in rights to ports, they need
>> integrity/security check. So, package file name is now like:
>>
>> softina-1.2.3_1:repo.id:1312929890.tbz # chars allowed by windows

> pkgng have an experimental multi repository support, even if we focus
> on a clean single repository support.

Are there digital signatures for them in TODO ? :)

>> Their developments of pkg_* tools contain facilities to implement a
>> good package manager out-of-the-box, e.g. pkg_add there has flags:
>>
>> | -A Mark package as installed automatically, as dependency of
>> | another package. You can use
>> | pkg_admin set automatic=YES
>> | to mark packages this way after installation, and
>> | pkg_admin unset automatic
>> | to remove the mark. If you pkg_add a package without
>> | specifying -A after it had already been automatically
>> | installed, the mark is removed.
>> | -U Replace an already installed version from a package.
>> | Implies -u.
>> | -u If the package that's being installed is already installed,
>> | an update is performed.
>>
>> These are crucial to effective binary package management.
>>
> All of this can be done a better way with pkgng



--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight]
Marcin Wisnicki
2011-08-22 17:04:54 UTC
Permalink
On Thu, 18 Aug 2011 07:49:30 +0000, Baptiste Daroussin wrote:
>>
>> * Options must be included and installed to /var/db/ports/*/options
>> (this will allow to rebuild installed binary pkg as port)
>>
>>
> This could be a good idea :) I'll keep it for pkgng
>

See also +BUILD_INFO and other metadata files in pkgsrc.
I couldn't find documentation but you can grab random binary package and
inspect its contents.

<rant>
It's a shame that pkgsrc is so often ignored here. It solves so many
problems of ports and is so far ahead that any effort to improve ports
will never match what is already available from pkgsrc.
</rant>
Vadim Goncharov
2011-08-24 22:20:40 UTC
Permalink
Hi Marcin Wisnicki!

On Mon, 22 Aug 2011 17:04:54 +0000 (UTC); Marcin Wisnicki wrote about 'Re: FreeBSD problems and preliminary ways to solve':

>>> * Options must be included and installed to /var/db/ports/*/options
>>> (this will allow to rebuild installed binary pkg as port)
>>>
>>>
>> This could be a good idea :) I'll keep it for pkgng

> See also +BUILD_INFO and other metadata files in pkgsrc.
> I couldn't find documentation but you can grab random binary package and
> inspect its contents.

><rant>
> It's a shame that pkgsrc is so often ignored here. It solves so many
> problems of ports and is so far ahead that any effort to improve ports
> will never match what is already available from pkgsrc.
> </rant>

That's even more strange given that early years, pkg_* tools in NetBSD
(pkgsrc) and FreeBSD got active code exchange. Why has it stopped later?..

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]
Robert Watson
2011-08-18 15:42:15 UTC
Permalink
On Wed, 17 Aug 2011, Vadim Goncharov wrote:

>> 2. Lack of drivers and poor guest virtualization.
>
> It is known that FreeBSD supports less hardware than competitors. It is,
> however, a matter of popularity - the more system will have users, the more
> drivers will be created by 3rd parties, so we cannot directly affect this.
> It's kind of exclusive circle.
>
> But there is one area - virtualization - without supporting it the FreeBSD
> niche will collapse very fast. It is necessary to say that it is about guest
> (para-)virtualization only, not host mode. Host mode market is already lost
> for FreeBSD for quite some time, may be something in the future, but today
> it will waste of resources. What is needed here is just analogue to OpenVZ
> (and jails/rctl already done more than half of the work here).
>
> And in guest mode FreeBSD *urgently needs* working drivers/utilities for all
> common suits, Citrix XenServer, VMWare vSphere (ESXi), Xen*, Microsoft
> Hyper-V, etc. This must be the primary direction for developers' forces and
> FreeBSD Foundation's money. We have may be about 1 year here. Why? Because
> of cloud computing and VPS/VDS. It's no matter what OS runs hoster if
> clients will use FreeBSD and we still have users. I've been already asked by
> a customer for which I wrote a non-portable kqueue-based daemon to rewrite
> for Linux because they want to go for Amazon EC2 (it's cheaper as only used
> resources are accounted) and FreeBSD there has still many in ISSUES scaring
> them...

Thanks for your post -- it has made a very interesting read!

I'd also agree that failurely to rapidly adopt full-machine virtualisation
(especially in light of our early jail success in the OS virtualisation space)
has been a big problem. However, I think it's worth observing why we're now
improving that support even though it took a while to do it: as embedded "grew
up" into the MMU-capable CPU space, increasing numbers of FreeBSD developers
were employed by embedded and appliance companies. It's only as those
companies begin to realise that they want virtualisation in their products
that we're seeing dramatic improvements in Xen support, the arrival of bHyve,
etc. This is unfortunate in two senses: first of all, it would have been
great to provide those features that our ISP users really wanted, and second,
the features would have been much more mature by the time the
embedded/appliance space got to them. I think we now are running in the right
direction but could use a more focused effort targeted more at EC2 and the ISP
space to supplement the appliance world.

(Case in point: for appliances, limiting Xen support to guest HVM with amd64,
but with a nice set of both front and back drivers, meets most needs. EC2
requires full PV, which we don't support on amd64, but not back drivers.)

One potential direction to think about here is improved distributed system
support -- integrated OpenAFS, easy-to-deploy Kerberos, a distributed shared
memory scheme of some sort, large-scale management tools, improved support for
caching distributed credentials, and easy-to-install distributed computation
frameworks. Provide EC2 images that make it really easy to manage a large
number -- not just because EC2 makes it easy to clone VMs, but also by
providing OS-side management tools that DTRT.

Robert
Maxim Ignatenko
2011-08-18 18:10:03 UTC
Permalink
Hi,

pkgng looks great, but I suggest to add in-place upgrade feature. Now packages
upgraded with just deleting and installing new version, which is not so fast
and requires some "dirty" tricks with config files to correctly delete
unmodified configs on pkg_delete and keep modified.

Instead, we can simply overwrite only those files, that differs with previous
version and even keep any user-modified files without any special tricks in
port's Makefile and package metadata. Also, in this case upgrading package
between minor versions will generate much less write requests to FS.

But this requires to make some changes in ports infrastructure. Each port need
to be installed to some temporary location first, and only then changed files
should be moved in place. Using tmpfs as temporary location will slightly
reduce "make upgrade" time, comparing to "make deinstall install". Another way
is to create binary package directly and leave all upgrading logic in pkgng.
Lev Serebryakov
2011-08-18 19:50:11 UTC
Permalink
Hello, Vadim.
You wrote 18 августа 2011 г., 3:10:19:

> 8) There is no -STABLE supported branches in ports.
I want to be more precise here: not -STABLE, but all -RELEASE
branches, where "upstream" version of ports/packages never changes,
and only security bugfixes are backported.

--
// Black Lion AKA Lev Serebryakov <***@FreeBSD.org>
Vadim Goncharov
2011-08-18 21:59:37 UTC
Permalink
Hi Lev Serebryakov!

On Thu, 18 Aug 2011 23:50:11 +0400; Lev Serebryakov wrote about 'Re: FreeBSD problems and preliminary ways to solve':

>> 8) There is no -STABLE supported branches in ports.
> I want to be more precise here: not -STABLE, but all -RELEASE
> branches, where "upstream" version of ports/packages never changes,
> and only security bugfixes are backported.

To be even more precise, they need a guarantee that automatic updates
will not break anything so that it could be put to cron like "apt-cron".
This goal could be satisfied by another means, I hope: FreeBSD developers
unlikely to have enough time/efforts to keep it for *all* -RELEASE branches,
but for only chosen ones (e.g. extended security support) - may be.

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight]
Julian Elischer
2011-08-19 02:54:17 UTC
Permalink
On 8/18/11 2:59 PM, Vadim Goncharov wrote:
> Hi Lev Serebryakov!
>
> On Thu, 18 Aug 2011 23:50:11 +0400; Lev Serebryakov wrote about 'Re: FreeBSD problems and preliminary ways to solve':
>
>>> 8) There is no -STABLE supported branches in ports.
>> I want to be more precise here: not -STABLE, but all -RELEASE
>> branches, where "upstream" version of ports/packages never changes,
>> and only security bugfixes are backported.
> To be even more precise, they need a guarantee that automatic updates
> will not break anything so that it could be put to cron like "apt-cron".
> This goal could be satisfied by another means, I hope: FreeBSD developers
> unlikely to have enough time/efforts to keep it for *all* -RELEASE branches,
> but for only chosen ones (e.g. extended security support) - may be.
>
while all the talk about new ports frameworks etc is nice, it is
still annoying that the ports and FreeBSD crews don't take
the *new* PBI infrastructure that is being pused out with PCBSD-9
as an important move. The new PBI infrastructure should be taken
into the ports system as an important factor. For those who do not
know it, it give a facility somewhat like the what that APPLE
applications work. At the potential (not always) for having redundant
libraries, every PBI package comes with EVERYTHING IT NEEDS.
there are no 'dependnet packages' as such. On install a
survey is made so that if anything is found to be truly duplicated
(different versions of the same library are NOT considered a duplicate)
then they share, but if not then each package installs and ONLY USES
the stuff that came with it.

The ramifications of this (in this era of large disks) are immense.
If you unstall all your main applications using PBI, then if you screw
up your ports installed libraries and development environment when you
install some new version of the XXX runtime, *your applications keep
working*.

A case of "it just works". For the life of me I don't understand WHY
there
is this resistance to taking it into the fold. Especially when all the
work has already been done. It won't replace pkgng and it it won't
replace
ports because it actually uses ports to generate the PBI packages.
But it should be teh default delivery mechanism for binary basic packages.


As I said.. go run an apple for a while and see what it is supposed to
be like.
Lars Engels
2011-08-19 05:56:13 UTC
Permalink
On Thu, 18 Aug 2011 19:54:17 -0700, Julian Elischer wrote:
> On 8/18/11 2:59 PM, Vadim Goncharov wrote:
>> Hi Lev Serebryakov!
>>
>> On Thu, 18 Aug 2011 23:50:11 +0400; Lev Serebryakov wrote about 'Re:
>> FreeBSD problems and preliminary ways to solve':
>>
>>>> 8) There is no -STABLE supported branches in ports.
>>> I want to be more precise here: not -STABLE, but all -RELEASE
>>> branches, where "upstream" version of ports/packages never changes,
>>> and only security bugfixes are backported.
>> To be even more precise, they need a guarantee that automatic
>> updates
>> will not break anything so that it could be put to cron like
>> "apt-cron".
>> This goal could be satisfied by another means, I hope: FreeBSD
>> developers
>> unlikely to have enough time/efforts to keep it for *all* -RELEASE
>> branches,
>> but for only chosen ones (e.g. extended security support) - may be.
>>
> while all the talk about new ports frameworks etc is nice, it is
> still annoying that the ports and FreeBSD crews don't take
> the *new* PBI infrastructure that is being pused out with PCBSD-9
> as an important move. The new PBI infrastructure should be taken
> into the ports system as an important factor. For those who do not
> know it, it give a facility somewhat like the what that APPLE
> applications work. At the potential (not always) for having redundant
> libraries, every PBI package comes with EVERYTHING IT NEEDS.
> there are no 'dependnet packages' as such. On install a
> survey is made so that if anything is found to be truly duplicated
> (different versions of the same library are NOT considered a
> duplicate)
> then they share, but if not then each package installs and ONLY USES
> the stuff that came with it.
>
> The ramifications of this (in this era of large disks) are immense.
> If you unstall all your main applications using PBI, then if you
> screw
> up your ports installed libraries and development environment when
> you
> install some new version of the XXX runtime, *your applications keep
> working*.
>
> A case of "it just works". For the life of me I don't understand WHY
> there
> is this resistance to taking it into the fold. Especially when all
> the
> work has already been done. It won't replace pkgng and it it won't
> replace
> ports because it actually uses ports to generate the PBI packages.
> But it should be teh default delivery mechanism for binary basic
> packages.
>
>
> As I said.. go run an apple for a while and see what it is supposed
> to be like.
>

PBIs are a nice thing but....

The thing that sucked about PBIs at least in PCBSD 8.x is that the PBIs
are
too big to download. We may all have big disks but there are many
people around
who don't have fast internet access. E.g. the Firefox PBI is about 100
MB of size
and there's a new version of it every few days. Add Thunderbird, VLC
and OpenOffice
to that list and your're downloading some GBs per month just to get
your security
holes closed.
What is the situation like in PCBSD 9.x? I heard that it was planned to
offer
update deltas which should be much smaller. If that's so, I'm all for
PBIs.
Kris Moore
2011-08-19 12:21:14 UTC
Permalink
Lars Engels <***@FreeBSD.org> wrote:

>On Thu, 18 Aug 2011 19:54:17 -0700, Julian Elischer wrote:
>> On 8/18/11 2:59 PM, Vadim Goncharov wrote:
>>> Hi Lev Serebryakov!
>>>
>>> On Thu, 18 Aug 2011 23:50:11 +0400; Lev Serebryakov wrote about 'Re:
>
>>> FreeBSD problems and preliminary ways to solve':
>>>
>>>>> 8) There is no -STABLE supported branches in ports.
>>>> I want to be more precise here: not -STABLE, but all -RELEASE
>>>> branches, where "upstream" version of ports/packages never changes,
>>>> and only security bugfixes are backported.
>>> To be even more precise, they need a guarantee that automatic
>>> updates
>>> will not break anything so that it could be put to cron like
>>> "apt-cron".
>>> This goal could be satisfied by another means, I hope: FreeBSD
>>> developers
>>> unlikely to have enough time/efforts to keep it for *all* -RELEASE
>>> branches,
>>> but for only chosen ones (e.g. extended security support) - may be.
>>>
>> while all the talk about new ports frameworks etc is nice, it is
>> still annoying that the ports and FreeBSD crews don't take
>> the *new* PBI infrastructure that is being pused out with PCBSD-9
>> as an important move. The new PBI infrastructure should be taken
>> into the ports system as an important factor. For those who do not
>> know it, it give a facility somewhat like the what that APPLE
>> applications work. At the potential (not always) for having redundant
>> libraries, every PBI package comes with EVERYTHING IT NEEDS.
>> there are no 'dependnet packages' as such. On install a
>> survey is made so that if anything is found to be truly duplicated
>> (different versions of the same library are NOT considered a
>> duplicate)
>> then they share, but if not then each package installs and ONLY USES
>> the stuff that came with it.
>>
>> The ramifications of this (in this era of large disks) are immense.
>> If you unstall all your main applications using PBI, then if you
>> screw
>> up your ports installed libraries and development environment when
>> you
>> install some new version of the XXX runtime, *your applications keep
>> working*.
>>
>> A case of "it just works". For the life of me I don't understand WHY
>
>> there
>> is this resistance to taking it into the fold. Especially when all
>> the
>> work has already been done. It won't replace pkgng and it it won't
>> replace
>> ports because it actually uses ports to generate the PBI packages.
>> But it should be teh default delivery mechanism for binary basic
>> packages.
>>
>>
>> As I said.. go run an apple for a while and see what it is supposed
>> to be like.
>>
>
>PBIs are a nice thing but....
>
>The thing that sucked about PBIs at least in PCBSD 8.x is that the PBIs
>
>are
>too big to download. We may all have big disks but there are many
>people around
>who don't have fast internet access. E.g. the Firefox PBI is about 100
>MB of size
>and there's a new version of it every few days. Add Thunderbird, VLC
>and OpenOffice
>to that list and your're downloading some GBs per month just to get
>your security
>holes closed.
>What is the situation like in PCBSD 9.x? I heard that it was planned to
>
>offer
>update deltas which should be much smaller. If that's so, I'm all for
>PBIs.

FYI, in 9 updates are done via deltas, or more specifically bsdiff, which often makes the download file a fraction of the size. The update to a 100mb firefox pbi may only be 5-6 mb, just depends on the size of the changes.


--
Kris Moore
Slawa Olhovchenkov
2011-08-19 09:36:54 UTC
Permalink
On Thu, Aug 18, 2011 at 11:50:11PM +0400, Lev Serebryakov wrote:

> > 8) There is no -STABLE supported branches in ports.
> I want to be more precise here: not -STABLE, but all -RELEASE
> branches, where "upstream" version of ports/packages never changes,
> and only security bugfixes are backported.

But when?
"Soft" version depend is best, IMHO.

--
Slawa Olhovchenkov
Lev Serebryakov
2011-08-18 21:24:21 UTC
Permalink
Hello, Vadim.
You wrote 18 августа 2011 г., 3:10:19:

> The other social problem is lack of companies which offer commercial
> support of FreeBSD like RedHat does.
Main social problem, IMHO, that there WAS NOT (I forgot Linux
history and don't rememberfirst uf-distributive) and, later,
Ubuntu-like versions of FeeBSD. Even if these doen;t replace Windows
on many desktops (1% now?), they prepare Linux-aware users, and some
of these users becomes admins or people, who decide which OS should be
used in their business.

And, I think, it is too late. Why somebody should now choose FreeBSD
when here is fancy Linux with bells and whistles? :( Yes, I'm
pessimistic :(

I don't say, that people need all these B&W on servers, for example.
No.

It works like this: user choose to try something fancy and trendy,
and even if he don't start to use it now, after evaluation, he'll
return to this system later, if he need to choose something for real
task.

Of course, system should be suitable for this task. But almost
everything is ``suitable'' for common tasks. And it is NOT ENOUGH
to be technically better. System should be far more superior to be
chosen, if it is not fancy/trendy. Yes, I belive, that FreeBSD is
better than Linux (at least on supported hardware) in server tasks,
more clear, more solid, etc. But it is ``only'' better, and is not
enough.

Other factors are hardware certification and hosting providers.
And, yes, commercial software. I mean Oracle and (not-so-commercial
but very important) Java :)

BTW, I belive that Solaris is better than FreeBSD and much, much
better that Linux for many server tasks. Now Solaris future is
unclear, but before Sun/Oracle acquisition it looks TECHNICALLY very
good. But it was not fancy... Ooops... And, even more, I've worked
with "small" Sun's servers (like SunFire X4xxx), and with
Supermicro-based servers and with Dell servers in same class. Sun's
was TECHNICALLY much better, and cost was almost the same. But many
of my friends buy Dell or Supermicro for their businesses. Why?!
Because ``Sun makes very expensive stuff for very big companies''.
And it was Sun, with all marketing money, etc!

I don't think, that last paragraph is off-topic -- it is example of
system with exactly same non-techincal problems.

And even best-in-class or best-in-world package management system
and streamlined base system DON'T SOLVE non-technical problems. They
could help don't lose current users, but they can not help find new
ones!

--
// Black Lion AKA Lev Serebryakov <***@FreeBSD.org>
Hans Petter Selasky
2011-08-18 21:46:19 UTC
Permalink
On Thursday 18 August 2011 23:24:21 Lev Serebryakov wrote:
> And, I think, it is too late. Why somebody should now choose FreeBSD
> when here is fancy Linux with bells and whistles? :( Yes, I'm
> pessimistic :(

Hi,

I think, that we now have a chance to make a better bells and whistles
solution than in Linux. I personally have big plans to enhance the multimedia
framework under FreeBSD, like /dev/dsp, /dev/midi, /dev/video0, /dev/dvb by
using the recently invented cuse4bsd. For example I want to make a system
global Audio daemon that can do more advanced audio processing and not at
least echo cancelling for audio devices, seamless and transparent to the
client applications, using standard /dev/dspX nodes, which eventually will
support Bluetooth Audio headsets aswell and 3G modems. The only part which is
missing is time and a good sponsor for this project.

--HPS
Vadim Goncharov
2011-08-18 22:17:25 UTC
Permalink
Hi Lev Serebryakov!

On Fri, 19 Aug 2011 01:24:21 +0400; Lev Serebryakov wrote about 'Re: FreeBSD problems and preliminary ways to solve':

>> The other social problem is lack of companies which offer commercial
>> support of FreeBSD like RedHat does.
> Main social problem, IMHO, that there WAS NOT (I forgot Linux
> history and don't rememberfirst uf-distributive) and, later,
> Ubuntu-like versions of FeeBSD. Even if these doen;t replace Windows
> on many desktops (1% now?), they prepare Linux-aware users, and some
> of these users becomes admins or people, who decide which OS should be
> used in their business.

PC-BSD is exactly for that.

> And, I think, it is too late. Why somebody should now choose FreeBSD
> when here is fancy Linux with bells and whistles? :( Yes, I'm
> pessimistic :(
[...]
> better that Linux for many server tasks. Now Solaris future is
> unclear, but before Sun/Oracle acquisition it looks TECHNICALLY very

It's wrong and harmful to be pessimistic these days, as FreeBSD has
prospects just exactly because of what happened to Sun. And because
Linux /feels itself a winner/ now - and you know what happens with
monopolies which stop to develop. But FreeBSD needs to invest efforts
(and serious efforts) to use the opportunities, of course.

> everything is ``suitable'' for common tasks. And it is NOT ENOUGH
> to be technically better. System should be far more superior to be
> chosen, if it is not fancy/trendy. Yes, I belive, that FreeBSD is
> better than Linux (at least on supported hardware) in server tasks,
> more clear, more solid, etc. But it is ``only'' better, and is not
> enough.

No. The whole message was about that FreeBSD is worse in several areas,
which masks out areas where it is better. If that will get fixed, we
could talk about is it needing to be "far more" superior or not. But
not before that as excuse to do nothing - no such excuse exists.

> Other factors are hardware certification and hosting providers.
> And, yes, commercial software. I mean Oracle and (not-so-commercial
> but very important) Java :)

True.

> And even best-in-class or best-in-world package management system
> and streamlined base system DON'T SOLVE non-technical problems. They
> could help don't lose current users, but they can not help find new
> ones!

Yes, that's the first task - to not lose current users, the second - to
dig in our rock solid niche, and only then - to attack and find new ones.

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight]
Lars Engels
2011-08-19 07:38:21 UTC
Permalink
On Thu, 18 Aug 2011 22:17:25 +0000 (UTC), Vadim Goncharov wrote:
> Hi Lev Serebryakov!
>
> On Fri, 19 Aug 2011 01:24:21 +0400; Lev Serebryakov wrote about 'Re:
> FreeBSD problems and preliminary ways to solve':
>
>>> The other social problem is lack of companies which offer
>>> commercial
>>> support of FreeBSD like RedHat does.
>> Main social problem, IMHO, that there WAS NOT (I forgot Linux
>> history and don't rememberfirst uf-distributive) and, later,
>> Ubuntu-like versions of FeeBSD. Even if these doen;t replace Windows
>> on many desktops (1% now?), they prepare Linux-aware users, and some
>> of these users becomes admins or people, who decide which OS should
>> be
>> used in their business.
>
> PC-BSD is exactly for that.
>

And IMHO PC-BSD should get pushed more. The changes in 9.0 are a great
opportunity for this. We should write mails to PC magazines and ask
them
to include a version of PC-BSD on their DVD, ask IT websites to write
some
news about the release, tell the people that it's a system which is
actually
easy to use, has some unique features and is definitively worth a try.
To gain market share, PC-BSDand FreeBSD need to be known!
In my experience, maybe one out of ten IT admins have ever heard of
FreeBSD,
and one out of hundred has actually tried it. Of them, maybe 10 percent
actually used it for some time but for whatever reason eventually went
back
to Windows or Linux where they came from. So there's only a very small
amount
of fresh users with every release, while others go ahead and switch to
different
OSes because of the reasons Vadmin wrote about.
But that was only the situation of our fellow admins. What about their
bosses who
are the ones who decide which way to go and which OS is allowed to run
on their
servers? I know answers like "Free-what? Ah, some Linux-like OS. Never
heard of
it. Why don't we use Linux if it's similar? Everybody uses Linux, it's
standard!
Do you get support from Big Companies for FreeBSD? Who do we call if we
have a
problem with it on our servers? Doesn't HP hang up the phone if we tell
them
that we installed that Free.. what was it called? FreeBSD??? on it?"

So FreeBSD urgently needs a wider awareness level.
People have heard of FreeBSD -> People are more willing to try it ->
Some people
try it -> Some people stay with FreeBSD and like it -> Some people
spread the word
-> More people try it -> At the end of the chain we have some new
contributors, devs,
donors, and new installations

For the people who may say now: "We don't want Ubuntu-like users, they
only ask stupid
questions I don't want to answer again and again."
We need them! Everybody once started by asking dumb question but
eventually we began to
answer other people's question.
Take a look at FreeBSD Forums: 26,000 members, 137,000 posts in 20,000
threads. Only a
small fraction of theses posts are from FreeBSD developers, the others
are good and valid
answers to the questions you don't want to answer any more.
Robert Watson
2011-08-19 08:23:46 UTC
Permalink
On Thu, 18 Aug 2011, Vadim Goncharov wrote:

>> everything is ``suitable'' for common tasks. And it is NOT ENOUGH
>> to be technically better. System should be far more superior to be
>> chosen, if it is not fancy/trendy. Yes, I belive, that FreeBSD is
>> better than Linux (at least on supported hardware) in server tasks,
>> more clear, more solid, etc. But it is ``only'' better, and is not
>> enough.
>
> No. The whole message was about that FreeBSD is worse in several areas,
> which masks out areas where it is better. If that will get fixed, we could
> talk about is it needing to be "far more" superior or not. But not before
> that as excuse to do nothing - no such excuse exists.

I'd point out that the key thing here is to produce, distribute, and as you
rightly point out *make easy*, new technologies that are transformative in a
way that makes FreeBSD compelling. So compelling that you'd rather switch OS
than not have it.

It's worth observing that the success of Linux (and FreeBSD) to date comes out
of a few very basic but fundamental improvements in OS design:

- Tightly integrated networking
- Much cheaper than any competition
- Extremely stable compared to the competition

It's clear that Windows has long since caught up in the server world with
respect to these in every practical sense (not an invitation for discussion --
we could talk for days) in that it is now a viable server solution in all of
the above senses. Which isn't to say that my multi-year uptimes for FreeBSD
don't beat the competition, but it's clear FreeBSD/Linux no longer give you
orders of magnitude more uptime between crashes. I think people are also now
much more aware of the TCO issue with operating systems, and understand that
although open source is often better, and therefore cheaper, the lack of a
license fee isn't the biggest issue in cost. However, I think the lesson is
clear: compelling features required (including things like cost and
stability).

My own interests are largely in security, and this is what we're trying to do
with Capsicum: make it possible to sandbox applications in a way that simply
has never been done before, giving security that has never been had before.
This required a new solution (although if you read our USENIX Security or
forthcoming CACM paper, it is grounded in some quite old but promising ideas)
that you can't find anywhere else.

It will take several years for Capsicum to meet this promise, but the first
parts arrive in FreeBSD 9.0. FreeBSD 9.1 is where it should get really
exciting -- even (and especially) tools like tcpdump will run automatically
and easily in sandboxes, something that just isn't plausibe with other
existing sandboxing technologies. Obviously, we hope that the rest of the
world will adopt our APIs (and have spotted the OpenBSD folk working on this
already, and there's a Linux port out of Google), but I hope for a bit of a
run where you have to come to us to get this! And being the place APIs and
ideas like this come from is important.

There are lots of other exciting things in 9.x, and we need to make sure we
promote them well. I'd point out that this is an area where we also need to
do a lot of work. There was a lot of buzz around the release of FreeBSD 8
when Kris was running regular competitive SMP benchmarks and showing us
walking all over the competition. Buzz is a critical part of selling ideas in
open source (for better or worse), and there's no reason we can't play in that
game a bit while maintaining our boring and staid personalities :-).

Robert
Bob Bishop
2011-08-19 09:51:42 UTC
Permalink
Hi,

On 19 Aug 2011, at 09:23, Robert Watson wrote:

> ...it's clear FreeBSD/Linux no longer give you orders of magnitude more uptime between crashes. ...

Here's a data point that suggests otherwise:

http://www.networksolutions.com/web-hosting/popup-uptime.jsp

--
Bob Bishop
***@gid.co.uk
Vadim Goncharov
2011-08-24 22:09:07 UTC
Permalink
Hi Robert Watson!

On Fri, 19 Aug 2011 09:23:46 +0100 (BST); Robert Watson wrote about 'Re: FreeBSD problems and preliminary ways to solve':

>>> everything is ``suitable'' for common tasks. And it is NOT ENOUGH
>>> to be technically better. System should be far more superior to be
>>> chosen, if it is not fancy/trendy. Yes, I belive, that FreeBSD is
>>> better than Linux (at least on supported hardware) in server tasks,
>>> more clear, more solid, etc. But it is ``only'' better, and is not
>>> enough.
>>
>> No. The whole message was about that FreeBSD is worse in several areas,
>> which masks out areas where it is better. If that will get fixed, we could
>> talk about is it needing to be "far more" superior or not. But not before
>> that as excuse to do nothing - no such excuse exists.
> I'd point out that the key thing here is to produce, distribute, and as you
> rightly point out *make easy*, new technologies that are transformative in a
> way that makes FreeBSD compelling. So compelling that you'd rather switch OS
> than not have it.

Totally agreed. And:

> has never been done before, giving security that has never been had before.
> This required a new solution (although if you read our USENIX Security or
> forthcoming CACM paper, it is grounded in some quite old but promising ideas)
> that you can't find anywhere else.
[...]
> something that just isn't plausibe with other
> existing sandboxing technologies. Obviously, we hope that the rest of the
> world will adopt our APIs (and have spotted the OpenBSD folk working on this
> already, and there's a Linux port out of Google), but I hope for a bit of a
> run where you have to come to us to get this! And being the place APIs and
> ideas like this come from is important.

Absolutely right. I'll say more: the strength comes from having unique useful
features which are pioneered here, actually new to industry and born here.
Don't borrow from competitors but look at them and invent something better.
I can give an example in network stack: while there are voices to adapt for us
Linux' Netlink, we should get more usage of Netgraph here, rather adapting and
being always second (looser, outsider). I've always liked FreeBSD for
organicly synthesizing something new and "quite old but promising ideas".

> It's worth observing that the success of Linux (and FreeBSD) to date comes out
> of a few very basic but fundamental improvements in OS design:

> - Tightly integrated networking
> - Much cheaper than any competition
> - Extremely stable compared to the competition

There is one hidden, more fundamental fact: a compettion itself. The
competition makes industry to innovate, and there are more innovations
happening here (Linux and FreeBSD) than in Windows... or at least it looks
so, thus being more attractive to users.

> walking all over the competition. Buzz is a critical part of selling ideas in
> open source (for better or worse), and there's no reason we can't play in that
> game a bit while maintaining our boring and staid personalities :-).

Sure. And taking surveys into account, we could just simply summarize:
FreeBSD needs marketing :-)

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]
Milo Hyson
2011-08-25 02:42:23 UTC
Permalink
On Aug 24, 2011, at 3:09 PM, Vadim Goncharov wrote:

>> walking all over the competition. Buzz is a critical part of selling ideas in
>> open source (for better or worse), and there's no reason we can't play in that
>> game a bit while maintaining our boring and staid personalities :-).
>
> Sure. And taking surveys into account, we could just simply summarize:
> FreeBSD needs marketing :-)

That begs the question of to whom FreeBSD should be marketed. Home users? Small-office admins? Datacenter admins? Embedded developers?

- Milo Hyson
Chief Scientist
CyberLife Labs, Inc.
Alex Goncharov
2011-08-25 03:47:42 UTC
Permalink
,--- Milo Hyson (Wed, 24 Aug 2011 19:42:23 -0700) ----*
| On Aug 24, 2011, at 3:09 PM, Vadim Goncharov wrote:
| >> walking all over the competition. Buzz is a critical part of selling ideas in
| >> open source (for better or worse), and there's no reason we can't play in that
| >> game a bit while maintaining our boring and staid personalities :-).
| >
| > Sure. And taking surveys into account, we could just simply summarize:
| > FreeBSD needs marketing :-)
|
| That begs the question of to whom FreeBSD should be marketed. Home
| users? Small-office admins? Datacenter admins? Embedded developers?

Horror if a wrong decision is made here, and some critical user group
is under-marketed: the ideas will no longer sell, the volunteers stop
volunteering, and we, the freeloaders, stop freeloading.

A company in Russia starts using the free (imagine, they won't pay for
it!) Linux instead of FreeBSD: one more ports user is lost, oh my!...

Let's unite and find a company that backs FreeBSD commercially: it'll
surely make a good profit... doesn't matter if not, when the FreeBSD
fate is at stake... we only have a year left... Gotta win that
competition -- do something, quick, y'all!..

-- Alex -- alex-***@comcast.net --
Vadim Goncharov
2011-08-25 15:20:59 UTC
Permalink
Hi Milo Hyson!

On Wed, 24 Aug 2011 19:42:23 -0700; Milo Hyson wrote about 'Re: FreeBSD problems and preliminary ways to solve':

>>> walking all over the competition. Buzz is a critical part of selling ideas in
>>> open source (for better or worse), and there's no reason we can't play in that
>>> game a bit while maintaining our boring and staid personalities :-).
>>
>> Sure. And taking surveys into account, we could just simply summarize:
>> FreeBSD needs marketing :-)
>
> That begs the question of to whom FreeBSD should be marketed. Home users?
> Small-office admins? Datacenter admins? Embedded developers?

Not quite. I think there are two questions, though related to each other.

One is "who is FreeBSD target user". This influences "global" development
decisions, such as roadmaps, what should sit in the base system, etc.

The other is "which users to listen to and whom to advertise to", that is,
marketing. And this doesn't need clear boundaries: e.g. we should listen to
all our current users just to not lose the userbase. Later this will be
ponetntial users, and so on.

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]
Brandon Gooch
2011-08-26 00:12:37 UTC
Permalink
On Wed, Aug 24, 2011 at 9:42 PM, Milo Hyson <***@cyberlifelabs.com> wrote:
> On Aug 24, 2011, at 3:09 PM, Vadim Goncharov wrote:
>
>>> walking all over the competition.  Buzz is a critical part of selling ideas in
>>> open source (for better or worse), and there's no reason we can't play in that
>>> game a bit while maintaining our boring and staid personalities :-).
>>
>> Sure. And taking surveys into account, we could just simply summarize:
>> FreeBSD needs marketing :-)
>
> That begs the question of to whom FreeBSD should be marketed. Home users? Small-office admins? Datacenter admins? Embedded developers?
>
> - Milo Hyson
> Chief Scientist
> CyberLife Labs, Inc.
>

FreeBSD should be marketed to DEVELOPERS.

Users of all skill levels have needs, wants, and ideas. Developers are
the ones who implement these things in code. I think the question is
"how do we lure the developers?".

FreeBSD is well documented for an open source project. In particular,
the Handbook serves as an excellent guide and reference for FreeBSD
from an end-user's perspective. But is the documentation for
developers as well-structured? I'd like to hear stories from the devs
out there in this regard.

Perhaps the FreeBSD current developer community (see: decades of
experience and knowledge) should focus on the creation (or revision)
of solid, comprehensive documentation for developing software in the
FreeBSD environment. Even something as simple as this forum post is an
awesome place to start:

http://forums.freebsd.org/showthread.php?t=1566

Maybe a restructuring of the primary FreeBSD website is in order, with
an emphasis on marketing to developers, from the fresh (university
students) to the seasoned (industry minds involved in company
decision-making process).

I believe that a beneficial side-effect of being a developer-centric
OS will the eventual refinement of FreeBSD as a "first choice"
desktop operating system. Seems to me that developers are more likely
to use the operating system for day-to-day "desktop" tasks, fixing and
adding features they require (eventually moving away from running Mac
OS X or some Linux distro on their laptops to running FreeBSD
primarily). Eventually, enough development occurs in key areas such as
hardware support and features (reliable suspend/resume, Wireless N,
KMS/GEM, etc...), that it's feasible to imagine a group spinning their
own "distro" -- would that really be so bad? We don't seem to mind the
PC-BSD folks, who are doing a fine job as things stand :)

Imagine a horde of new college graduates, with FreeBSD under their
belts (instead of some Linux distribution), ready to deploy it as soon
as they have the chance in their new roles as system administrators
and engineers -- sounds great to me.

More bodies, more eyes, more minds -- this brings along with it more
energy. We should focus on making FreeBSD the most developer-friendly
OS out there.

-Brandon
Slawa Olhovchenkov
2011-08-26 09:38:27 UTC
Permalink
On Thu, Aug 25, 2011 at 07:12:37PM -0500, Brandon Gooch wrote:

> On Wed, Aug 24, 2011 at 9:42 PM, Milo Hyson <***@cyberlifelabs.com> wrote:
> > On Aug 24, 2011, at 3:09 PM, Vadim Goncharov wrote:
> >
> >>> walking all over the competition.  Buzz is a critical part of selling ideas in
> >>> open source (for better or worse), and there's no reason we can't play in that
> >>> game a bit while maintaining our boring and staid personalities :-).
> >>
> >> Sure. And taking surveys into account, we could just simply summarize:
> >> FreeBSD needs marketing :-)
> >
> > That begs the question of to whom FreeBSD should be marketed. Home users? Small-office admins? Datacenter admins? Embedded developers?
> >
> > - Milo Hyson
> > Chief Scientist
> > CyberLife Labs, Inc.
> >
>
> FreeBSD should be marketed to DEVELOPERS.
>
> Users of all skill levels have needs, wants, and ideas. Developers are
> the ones who implement these things in code. I think the question is
> "how do we lure the developers?".

Needs for developers: VTune, OpenCL, CUDA, Java sertification
platform, more stronge binary compatibility with older version.
Michael V. Buzuverov
2011-08-19 03:48:48 UTC
Permalink
Hello

18 August 2011, 22:38 Maxim Ignatenko <***@gmail.com> has written:
> Hi,
>
> Another way is to create binary package directly and leave all upgrading logic in pkgng.
>

I think next step in development of ports system should be building packages without installing ports.

Main idea is runtime dependencies should be checked at package (port) installation only. So, we can build some
conflicting packages (apache13, apache20 and apache22, for example) and choose which will be used at
installation time.

Now, package creation process is "build -> install -> package". I believe that sequence "build -> package -> install"
is more correct and efficient. It allows avoid conflicts between old and new packages, you may only build set of new
packages and install them later. Of cource, it can be done using chroot, but it is workaround, I believe it should be
standart possibility of ports system.

I think, technically it may be implemented as installation port into temporary directory and creation package
from there. Of course, we need solve some problems with dependencies, but I can't see unsolvable problems.

Do you think this feature could be useful?

Buzuverov Michael
Julian H. Stacey
2011-08-25 17:15:59 UTC
Permalink
Hi,
> From: =?UTF-8?B?TWljaGFlbCBWLiBCdXp1dmVyb3Y=?= <***@inbox.ru>
> Date: Fri, 19 Aug 2011 07:48:48 +0400

=?UTF-8?B?TWljaGFlbCBWLiBCdXp1dmVyb3Y=?= wrote:
> --===============1194597977==
> Content-Type: text/plain; charset=utf-8
> Content-Transfer-Encoding: base64

Please do not post Ascii text with Base 64 !
Though it works with
http://lists.freebsd.org/pipermail/freebsd-arch/2011-August/011424.html
It fails with
http://docs.freebsd.org/cgi/getmsg.cgi?fetch=92494+0+archive/2011/freebsd-arch/20110821.freebsd-arch
& fails with exmh-2.7.2
FreeBSD-8.2-RELEASE /usr/ports/mail/exmh2
& ptobably fails with search engines later.

I had to mouse copy:...

> Now, package creation process is "build -> install -> package". I believe that sequence "build -> package -> install"
> is more correct and efficient.

Yes, IMO that would sound an attractive capability.
I guess there'd be issues to solve though :-)

Maybe the attraction to ports architects not great though, as ports
on the cluster get built with individual clean chroots I recall.
So they may not see as high a percentage of breakage as end user
systems (like eg inc. mine) that struggle to build the many local
used ports not using chroots. I've long meant to find & read chroot
scripts to build ports. ... Cos basic /usr/ports has never been
coherently error free for me ( cd /var/db/pkg ; ls | wc -l # 1018 )

Cheers,
Julian
--
Julian Stacey, BSD Unix Linux C Sys Eng Consultants Munich http://berklix.com
Reply below, not above; Indent with "> "; Cumulative like a play script.
Format: Plain text. Not HTML, multipart/alternative, base64, quoted-printable.
Garrett Cooper
2011-08-25 18:16:01 UTC
Permalink
On Thu, Aug 25, 2011 at 10:15 AM, Julian H. Stacey <***@berklix.com> wrote:
> Hi,
>> From:         =?UTF-8?B?TWljaGFlbCBWLiBCdXp1dmVyb3Y=?= <***@inbox.ru>
>> Date:         Fri, 19 Aug 2011 07:48:48 +0400
>
> =?UTF-8?B?TWljaGFlbCBWLiBCdXp1dmVyb3Y=?= wrote:
>> --===============1194597977==
>> Content-Type: text/plain; charset=utf-8
>> Content-Transfer-Encoding: base64
>
> Please do not post Ascii text with Base 64 !
> Though it works with
>  http://lists.freebsd.org/pipermail/freebsd-arch/2011-August/011424.html
> It fails with
>  http://docs.freebsd.org/cgi/getmsg.cgi?fetch=92494+0+archive/2011/freebsd-arch/20110821.freebsd-arch
> & fails with exmh-2.7.2
>        FreeBSD-8.2-RELEASE /usr/ports/mail/exmh2
> & ptobably fails with search engines later.
>
> I had to mouse copy:...
>
>> Now, package creation process is "build -> install -> package". I believe that sequence "build -> package -> install"
>> is more correct and efficient.

The problem is that pkg_install wasn't properly designed to deal with
chrooted package environments, and instead everything is installed
directly to the target system and packaged from the target system
(chroot functionality is really broken in pkg_add // pkg_create
provided the right inputs, despite it being documented in the manpage
:)..).

If you do build -> package -> install, people that use ports will
grumble and moan about the additional overhead required copying and
installing things.

But we really need to get out of the building everything from scratch
business and into binary package installation, so yes.. I think the
above proposed workflow makes sense. Even though some might complain
that builds are now taking longer, it adds a minimal amount of
overhead to do the above flow and is just cleaner and saner than the
backwards way we currently do things in ports. And a lot of this can
be fixed externally if people add a minimum amount of intelligence to
their build systems to fine tune their build dependencies, instead of
hammer approaches like I've seen in some build systems where things
are nuked and rebuilt from scratch every time the build is run.

Thanks,
-Garrett
Lev Serebryakov
2011-08-19 08:37:00 UTC
Permalink
Hello, Vadim.
You wrote 18 августа 2011 г., 3:10:19:


> 3. Kernel features for complex network solutions (netgraph, carp, ipfw).
> The niche for routers & traffic analysis is still ours. It would be
> nice to take e.g. pfSense and agree with some vendor (Netgear,
> D-Link, etc) to put on sale hardware with FreeBSD inside.
What about 10G routing? Here are reports about full-bandwidth 10G routing on modern
Intel NICs with Linux (and multi-core server), but I didn't see any
such data for FreeBSD, and somebody says, that Intel drivers and
network stack is not so good parallel in FreeBSD.

--
// Black Lion AKA Lev Serebryakov <***@FreeBSD.org>
Robert Watson
2011-08-19 08:41:41 UTC
Permalink
On Fri, 19 Aug 2011, Lev Serebryakov wrote:

>> 3. Kernel features for complex network solutions (netgraph, carp, ipfw).
>> The niche for routers & traffic analysis is still ours. It would be
>> nice to take e.g. pfSense and agree with some vendor (Netgear,
>> D-Link, etc) to put on sale hardware with FreeBSD inside.
>
> What about 10G routing? Here are reports about full-bandwidth 10G routing
> on modern Intel NICs with Linux (and multi-core server), but I didn't see
> any such data for FreeBSD, and somebody says, that Intel drivers and network
> stack is not so good parallel in FreeBSD.

Our network stack is actually pretty parallel as such things go, and there are
a number of changes in FreeBSD 9.x that extend this work. Most of the
performance work is being done on edge nodes rather than middle nodes -- i.e.,
maxing out multiple 10gbps links serving content, etc, rather than in routing
configurations, though. We also have a strong and growing collection of
10gbps drivers. You'll find our drivers lifted for many other systems,
including Solaris :-).

There are a few known issues in terms of parallelism -- one is contention
between the ithread and user thread on per-TCP connection locks. Another is
that we still haven't managed to switch to per-CPU statistics for the network
stack (which is fairly straight forward in a specific sense, but we'd like a
proper abstraction for it so we can generalise).

Robert
Lev Serebryakov
2011-08-19 08:50:05 UTC
Permalink
Hello, Robert.
You wrote 19 августа 2011 г., 12:41:41:


> Our network stack is actually pretty parallel as such things go, and there are
> a number of changes in FreeBSD 9.x that extend this work. Most of the
> performance work is being done on edge nodes rather than middle nodes -- i.e.,
> maxing out multiple 10gbps links serving content, etc, rather than in routing
> configurations, though. We also have a strong and growing collection of
> 10gbps drivers. You'll find our drivers lifted for many other systems,
> including Solaris :-).
I need to bribe our admins (OPs) on my paid work to try FreeBSD
instead of Solaris on new servers :) We are processing huge amount of
multicast streams (up to 2.5-3Gbit/s with 500-1000 bytes packets) and
have difficulties not to lose any packets on Solaris :) They tried
Linux without success, but FreeBSD is unknown to them.

One problem for FreeBSD is that our applications are Java-based...
Problems are not in Java, but in Intel drivers (igb / ixgb in FreeBSD
terms), which sometimes lose packets with "buffer is not available"
diagnostics when consumer is heavily-multithreaded.

--
// Black Lion AKA Lev Serebryakov <***@serebryakov.spb.ru>
Robert Watson
2011-08-19 08:56:02 UTC
Permalink
On Fri, 19 Aug 2011, Lev Serebryakov wrote:

>> Our network stack is actually pretty parallel as such things go, and there are
>> a number of changes in FreeBSD 9.x that extend this work. Most of the
>> performance work is being done on edge nodes rather than middle nodes -- i.e.,
>> maxing out multiple 10gbps links serving content, etc, rather than in routing
>> configurations, though. We also have a strong and growing collection of
>> 10gbps drivers. You'll find our drivers lifted for many other systems,
>> including Solaris :-).
>
> I need to bribe our admins (OPs) on my paid work to try FreeBSD instead of
> Solaris on new servers :) We are processing huge amount of multicast streams
> (up to 2.5-3Gbit/s with 500-1000 bytes packets) and have difficulties not to
> lose any packets on Solaris :) They tried Linux without success, but FreeBSD
> is unknown to them.
>
> One problem for FreeBSD is that our applications are Java-based... Problems
> are not in Java, but in Intel drivers (igb / ixgb in FreeBSD terms), which
> sometimes lose packets with "buffer is not available" diagnostics when
> consumer is heavily-multithreaded.

Is the issue here that FreeBSD is dropping more packes, or just that FreeBSD
is reporting that it drops packets? Historically, we've returned ENOBUFS from
datagram sockets when the interface queue is overflowed, but some other
systems (most noticeably Linux) simply return success when they drop a packet
on an outgoing interface queue. You can debate which is the better model, but
one impact is that sometimes people report errors on FreeBSD that they don't
see on Linux -- when actually, the same failure is present, we just allow the
application to learn about it.

Robert
Lev Serebryakov
2011-08-19 09:05:41 UTC
Permalink
Hello, Robert.
You wrote 19 августа 2011 г., 12:56:02:


> Is the issue here that FreeBSD is dropping more packes, or just that FreeBSD
> is reporting that it drops packets? Historically, we've returned ENOBUFS from
I wasn't clear enough: we didn't try FreeBSD, as I'm developer in
this project, and our admins (ops) know nothing about FreeBSD and have
enough current tasks to don't have any spare time to try new system.

Maybe, I'll be able to "borrow" one of test servers in _my_ spare time
and try to play with FreeBSD in this environment.

--
// Black Lion AKA Lev Serebryakov <***@serebryakov.spb.ru>
Slawa Olhovchenkov
2011-08-19 09:05:36 UTC
Permalink
On Fri, Aug 19, 2011 at 09:56:02AM +0100, Robert Watson wrote:

>
> On Fri, 19 Aug 2011, Lev Serebryakov wrote:
>
> >> Our network stack is actually pretty parallel as such things go, and there are
> >> a number of changes in FreeBSD 9.x that extend this work. Most of the
> >> performance work is being done on edge nodes rather than middle nodes -- i.e.,
> >> maxing out multiple 10gbps links serving content, etc, rather than in routing
> >> configurations, though. We also have a strong and growing collection of
> >> 10gbps drivers. You'll find our drivers lifted for many other systems,
> >> including Solaris :-).
> >
> > I need to bribe our admins (OPs) on my paid work to try FreeBSD instead of
> > Solaris on new servers :) We are processing huge amount of multicast streams
> > (up to 2.5-3Gbit/s with 500-1000 bytes packets) and have difficulties not to
> > lose any packets on Solaris :) They tried Linux without success, but FreeBSD
> > is unknown to them.
> >
> > One problem for FreeBSD is that our applications are Java-based... Problems
> > are not in Java, but in Intel drivers (igb / ixgb in FreeBSD terms), which
> > sometimes lose packets with "buffer is not available" diagnostics when
> > consumer is heavily-multithreaded.
>
> Is the issue here that FreeBSD is dropping more packes, or just that FreeBSD
> is reporting that it drops packets? Historically, we've returned ENOBUFS from
> datagram sockets when the interface queue is overflowed, but some other
> systems (most noticeably Linux) simply return success when they drop a packet
> on an outgoing interface queue. You can debate which is the better model, but
> one impact is that sometimes people report errors on FreeBSD that they don't
> see on Linux -- when actually, the same failure is present, we just allow the
> application to learn about it.

Historically, Linux on datagram (UDP) socket allow use select, FreeBSD
-- don't allow. FreeBSD always report 'UDP socket ready to transmit'.
And after try to send packet -- 'oops, ENOBUFS'.




--
Slawa Olhovchenkov
Robert N. M. Watson
2011-08-19 09:36:29 UTC
Permalink
On 19 Aug 2011, at 10:05, Slawa Olhovchenkov wrote:

>> Is the issue here that FreeBSD is dropping more packes, or just that FreeBSD
>> is reporting that it drops packets? Historically, we've returned ENOBUFS from
>> datagram sockets when the interface queue is overflowed, but some other
>> systems (most noticeably Linux) simply return success when they drop a packet
>> on an outgoing interface queue. You can debate which is the better model, but
>> one impact is that sometimes people report errors on FreeBSD that they don't
>> see on Linux -- when actually, the same failure is present, we just allow the
>> application to learn about it.
>
> Historically, Linux on datagram (UDP) socket allow use select, FreeBSD
> -- don't allow. FreeBSD always report 'UDP socket ready to transmit'.
> And after try to send packet -- 'oops, ENOBUFS'.


And if you have two consumers sending UDP on Linux, they both get unreported 50% packet loss, to my understanding?

Robert_______________________________________________
freebsd-***@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "freebsd-arch-***@freebsd.org"
Slawa Olhovchenkov
2011-08-19 09:50:43 UTC
Permalink
On Fri, Aug 19, 2011 at 10:36:29AM +0100, Robert N. M. Watson wrote:

>
> On 19 Aug 2011, at 10:05, Slawa Olhovchenkov wrote:
>
> >> Is the issue here that FreeBSD is dropping more packes, or just that FreeBSD
> >> is reporting that it drops packets? Historically, we've returned ENOBUFS from
> >> datagram sockets when the interface queue is overflowed, but some other
> >> systems (most noticeably Linux) simply return success when they drop a packet
> >> on an outgoing interface queue. You can debate which is the better model, but
> >> one impact is that sometimes people report errors on FreeBSD that they don't
> >> see on Linux -- when actually, the same failure is present, we just allow the
> >> application to learn about it.
> >
> > Historically, Linux on datagram (UDP) socket allow use select, FreeBSD
> > -- don't allow. FreeBSD always report 'UDP socket ready to transmit'.
> > And after try to send packet -- 'oops, ENOBUFS'.
>
>
> And if you have two consumers sending UDP on Linux, they both get unreported 50% packet loss, to my understanding?

In my test I use netperf.
netperf/UDP on linux send only packets can be proccessed by box (and
NIC) and packets don't drop. netperf don't allocate all CPU cycles.

netperf/UDP on FreeBSD get all CPU, try to send HUGE UDP flow and
report about massive packets drop. select on UDP socket report 'ready' allways.
Slawa Olhovchenkov
2011-08-19 09:23:04 UTC
Permalink
On Fri, Aug 19, 2011 at 09:41:41AM +0100, Robert Watson wrote:

> There are a few known issues in terms of parallelism -- one is contention
> between the ithread and user thread on per-TCP connection locks. Another is
> that we still haven't managed to switch to per-CPU statistics for the network
> stack (which is fairly straight forward in a specific sense, but we'd like a
> proper abstraction for it so we can generalise).

After discussion in other place: may be perfomace improve if
application resheduling on the same core, as processing incoming
IP packet (hot CPU caсhe)?

--
Slawa Olhovchenkov
Lev Serebryakov
2011-08-19 09:28:19 UTC
Permalink
Hello, Slawa.
You wrote 19 августа 2011 г., 13:23:04:

>> There are a few known issues in terms of parallelism -- one is contention
>> between the ithread and user thread on per-TCP connection locks. Another is
>> that we still haven't managed to switch to per-CPU statistics for the network
>> stack (which is fairly straight forward in a specific sense, but we'd like a
>> proper abstraction for it so we can generalise).
> After discussion in other place: may be perfomace improve if
> application resheduling on the same core, as processing incoming
> IP packet (hot CPU caсhe)?
Yes, it is exactly what our admins done, and it helps, but if
streams will grow (and they WILL) here will be a little space to grow
up performance as well. But it is completely offtopic already.

--
// Black Lion AKA Lev Serebryakov <***@serebryakov.spb.ru>
Robert N. M. Watson
2011-08-19 09:37:59 UTC
Permalink
On 19 Aug 2011, at 10:23, Slawa Olhovchenkov wrote:

> On Fri, Aug 19, 2011 at 09:41:41AM +0100, Robert Watson wrote:
>
>> There are a few known issues in terms of parallelism -- one is contention
>> between the ithread and user thread on per-TCP connection locks. Another is
>> that we still haven't managed to switch to per-CPU statistics for the network
>> stack (which is fairly straight forward in a specific sense, but we'd like a
>> proper abstraction for it so we can generalise).
>
> After discussion in other place: may be perfomace improve if
> application resheduling on the same core, as processing incoming
> IP packet (hot CPU caсhe)?

We have a GSoC student working on this currently (measuring rough socket affinity for applications a la RPS and redirecting work on the software side). I also have some related work, which can supplement his, which will push those application affinities into programmable TCAMs/hardware hash tables in 10gbs cards. We do need some general improvements in scheduling to allow the scheduler to take into account notions of vertically aligning affinity, however.

Robert_______________________________________________
freebsd-***@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "freebsd-arch-***@freebsd.org"
Adrian Chadd
2011-08-19 09:06:27 UTC
Permalink
Like a lot of things, I think something that's sorely missing here
from this discussion is the users needs versus the developers needs.
You've given me a great example.

2011/8/19 Lev Serebryakov <***@freebsd.org>:
> Hello, Vadim.
> You wrote 18 августа 2011 г., 3:10:19:
>
>
>> 3. Kernel features for complex network solutions (netgraph, carp, ipfw).
>>    The niche for routers & traffic analysis is still ours. It would be
>>    nice to take e.g. pfSense and agree with some vendor (Netgear,
>>    D-Link, etc) to put on sale hardware with FreeBSD inside.
>  What about 10G routing? Here are reports about full-bandwidth 10G routing on modern
> Intel NICs with Linux (and multi-core server), but I didn't see any
> such data for FreeBSD, and somebody says, that Intel drivers and
> network stack is not so good parallel in FreeBSD.

Can freebsd do it now? Maybe not.
Do FreeBSD developers know what needs to occur? (eg someone like Kip?) Yes.

What's missing?

There's a lot of users that say "yes, I'd like X, but FreeBSD doesn't do it."
There's a lot of developers who know what to do, or could figure it
out, but it's not within their scope of work. There's only so much one
can do for fun.

Linux works here because of two things:

* there's a heavy following of -users- who are -developers-, and
* there's enough developers who want these features in Linux, so they get done.

FreeBSD suffers here because the developers are working on what
they're paid to or or what they'd like to do, and this doesn't at all
fit in with what some users (even large ones, like said large russian
ISPs) would like to see, right now.

Xen is a great example of how this failed.

Is there a lot of interest in Xen support for FreeBSD? Yes. The
companies that got it done internally made it work for their needs -
eg Yahoo! with Xen HVM support. They didn't need PVM, so it didn't get
done. Lots of people would pop up and ask about PVM support to run
FreeBSD in EC2 instances. But since there wasn't any developers
working on it, nothing happened.

The moment I started poking Xen PVM (just to see how much effort it'd
take to get -HEAD into shape), I had a whole lot of users ask me about
it, email me about how to build images, how to test images, why things
weren't working, etc. When it was obvious that it would need someone
to do VM surgery to fix things up, I stopped working on it. I wasn't
getting paid to do it, I'm a self-employed contractor who was also
finishing a degree, so "fix it up for fun" wasn't on my TODO list.

When Colin got involved, and managed to get Amazon's interest (yay!),
things moved along a bit more. I don't think -HEAD is stable in PVM
still. That again, needs developers.

Another example is 11n support. Lots of users would love 11n support.
I've had plenty of people ask me when it'll be ready. But where are
the 802.11 developers? All you see/hear are crickets. That big rush of
11n work that I've been doing lately? It's because a couple of
companies stood up and asked for the atheros and net80211 DFS support
to be improved - and they were willing to pay for it. Since there's
not enough (almost none) people hacking on it in public, the code
languished for years. Having lots of users email me privately (and a
couple of companies) is nice but it doesn't at all demonstrate to
people who can fund these things (eg the Foundation) what the users
are after.

If you'd like to see this feature in FreeBSD, and you can find a bunch
of like-minded companies, then please get together and talk to the
foundation about how to get this put on their agenda.
Chase it up, get it done. Find a developer, get him on board, get it
done. Be loud. Be supportive. But please, don't just say "but where's
X?" "X" is wherever the like-minded developer with the equipment
needed and the time/money needed is.

Finally - 10G line rate support isn't as easy as you think. Well, it
is, but it's costly. 11n hacking is (comparatively) cheap because
someone's already written mostly-working code, and the hardware is
cheap. I don't need a $20k spectrum analyser or a $80k signal
generator to get the basics done. But 10GE stuff requires 10GE NICs,
10GE switches. Those don't come cheap. So it's not going to be done by
someone who is bored and at home. It's going to be done by someone who
has access to the right kit. Luigi's netmap support shows what's
possible. The question is, can someone pick it up and run with it.
Note, he's also hit all those corner/edge cases with NICs because of
the sheer rate of transactions going on (and he's emailed questions
about it publicly.)

2c,



Adrian
Lev Serebryakov
2011-08-19 09:26:07 UTC
Permalink
Hello, Adrian.
You wrote 19 августа 2011 г., 13:06:27:

>>> 3. Kernel features for complex network solutions (netgraph, carp, ipfw).
>>>    The niche for routers & traffic analysis is still ours. It would be
>>>    nice to take e.g. pfSense and agree with some vendor (Netgear,
>>>    D-Link, etc) to put on sale hardware with FreeBSD inside.
>>  What about 10G routing? Here are reports about full-bandwidth 10G routing on modern
>> Intel NICs with Linux (and multi-core server), but I didn't see any
>> such data for FreeBSD, and somebody says, that Intel drivers and
>> network stack is not so good parallel in FreeBSD.

I could say, that I have nothing to object to your message, I agree
with you almost completely. Some notes below, but they are minor ones.

> Linux works here because of two things:

> * there's a heavy following of -users- who are -developers-, and
As far as I understand (I could be wrong), there's many COMPANIES,
which are USERS and hires (on-site, off-site -- it doesn't matter)
DEVELOPERS. It is not a situation when users are exactly same persons
as developers or vice versa, but they are linked together directly.

> * there's enough developers who want these features in Linux, so they get done.
And there is enough users, who want and can pay to these developers.

I don't think, that "independent (private, hobby, whatever)
developers to independent users" ratio is better for Linux, that for
FreeBSD :) But number of payed developers, of course, is much, much
larger for Linux now.

I have several FreeBSD users around me (they are not payed to be
DEVELOPERS, sometimes they are payed to be ADMINS, sometimes it is
their own non-profit systems, like mine), and everybody sent PR at
least once, often with patches to solve problem.

About 1/4 of my friends (yes, I have non-typical friends, I know)
uses Linux on desktops, notebooks or servers, and most of them didn't
send any bugreports, not to mention patches.

--
// Black Lion AKA Lev Serebryakov <***@freebsd.org>
Pieter de Goeje
2011-08-19 12:01:23 UTC
Permalink
On Friday, August 19, 2011 10:37:00 AM Lev Serebryakov wrote:
> Hello, Vadim.
>
> You wrote 18 августа 2011 г., 3:10:19:
> > 3. Kernel features for complex network solutions (netgraph, carp, ipfw).
> >
> > The niche for routers & traffic analysis is still ours. It would be
> > nice to take e.g. pfSense and agree with some vendor (Netgear,
> > D-Link, etc) to put on sale hardware with FreeBSD inside.
>
> What about 10G routing? Here are reports about full-bandwidth 10G routing
> on modern Intel NICs with Linux (and multi-core server), but I didn't see
> any such data for FreeBSD, and somebody says, that Intel drivers and
> network stack is not so good parallel in FreeBSD.

With regards to high speed packet forwarding and routing, check out this work
by Luigi Rizzo:
http://info.iet.unipi.it/~luigi/netmap/

- Pieter
Lev Serebryakov
2011-08-19 13:53:07 UTC
Permalink
Hello, Pieter.
You wrote 19 августа 2011 г., 16:01:23:

>> > 3. Kernel features for complex network solutions (netgraph, carp, ipfw).
>> >
>> > The niche for routers & traffic analysis is still ours. It would be
>> > nice to take e.g. pfSense and agree with some vendor (Netgear,
>> > D-Link, etc) to put on sale hardware with FreeBSD inside.
>>
>> What about 10G routing? Here are reports about full-bandwidth 10G routing
>> on modern Intel NICs with Linux (and multi-core server), but I didn't see
>> any such data for FreeBSD, and somebody says, that Intel drivers and
>> network stack is not so good parallel in FreeBSD.
> With regards to high speed packet forwarding and routing, check out this work
> by Luigi Rizzo:
> http://info.iet.unipi.it/~luigi/netmap/
Yep, I know this work, but it is rather special, not out-of-box (ok,
maybe with some changed tunables) routing solution with routing
tables, some firewall, etc.


--
// Black Lion AKA Lev Serebryakov <***@freebsd.org>
Adrian Chadd
2011-08-19 15:27:08 UTC
Permalink
2011/8/19 Lev Serebryakov <***@freebsd.org>:

>> With regards to high speed packet forwarding and routing, check out this work
>> by Luigi Rizzo:
>> http://info.iet.unipi.it/~luigi/netmap/
>  Yep, I know this work, but it is rather special, not out-of-box (ok,
> maybe with some changed tunables) routing solution with routing
> tables, some firewall, etc.

It proves the basic idea. It exposed Luigi (and others, hopefully) to
the realities of doing 10ge line rate (small packet!) forwarding. It
shows you CAN do it with FreeBSD; someone just needs to take it and
run with it. The tools are there to get the basic job done.



Adrian
Gary Palmer
2011-08-19 17:22:52 UTC
Permalink
On Fri, Aug 19, 2011 at 05:53:07PM +0400, Lev Serebryakov wrote:
> Hello, Pieter.
> You wrote 19 ??????? 2011 ?., 16:01:23:
>
> >> > 3. Kernel features for complex network solutions (netgraph, carp, ipfw).
> >> >
> >> > The niche for routers & traffic analysis is still ours. It would be
> >> > nice to take e.g. pfSense and agree with some vendor (Netgear,
> >> > D-Link, etc) to put on sale hardware with FreeBSD inside.
> >>
> >> What about 10G routing? Here are reports about full-bandwidth 10G routing
> >> on modern Intel NICs with Linux (and multi-core server), but I didn't see
> >> any such data for FreeBSD, and somebody says, that Intel drivers and
> >> network stack is not so good parallel in FreeBSD.
> > With regards to high speed packet forwarding and routing, check out this work
> > by Luigi Rizzo:
> > http://info.iet.unipi.it/~luigi/netmap/
> Yep, I know this work, but it is rather special, not out-of-box (ok,
> maybe with some changed tunables) routing solution with routing
> tables, some firewall, etc.

I think we need to refocus on what would give the most benefit. At least
as far as I can see:

- port/package management: most users would benefit
- improved virtualisation support: a lot of users would benefit
- improved driver support: a lot of users would benefit
- KMS/GEM for better graphics card support: a lot of users would benefit

Can you honestly say the same about handling line rate packet forwarding
for multiple 10G cards?

I suspect I would rank true multipath storage support above 10G routing,
for example.

Gary
Robert Watson
2011-08-19 18:49:37 UTC
Permalink
On Fri, 19 Aug 2011, Gary Palmer wrote:

> I think we need to refocus on what would give the most benefit. At least
> as far as I can see:
>
> - port/package management: most users would benefit

Definitely -- and there's active work going on here that is very exciting
indeed.

> - improved virtualisation support: a lot of users would benefit

This is an area of very active work as well, although I'd like to see more
going on. In particular, I'd like to see (a) significantly more mature Xen
HVM PV driver support -- and the ability to load them on a GENERIC kernel so
we don't break freebsd-update kernel updates by requiring custom kernels, and
(b) bHyve to be fleshed out, including support for suspend/resume and
migration. Cambridge may be able to help with non-i386/amd64 virtualisation;
I have a local TODO item relating to MIPS virtualisation, for example.

> - improved driver support: a lot of users would benefit

For server/appliance-centric devices, we're going quite well. For consumer
devices, less so. However, it's generally the case that things have
dramatically improved in the last ten years: companies come to us with drivers
now, asking how to get them merged, and frequently their developers get commit
bits and maintain them in-tree even. Compare this to 2000 when we had hacked
up Intel device drivers, and other than Adaptec, almost no storage vendors
closely involved in the project.

> - KMS/GEM for better graphics card support: a lot of users would benefit

The FreeBSD Foundation recently funded work on precisely this; it hasn't quite
made 9.0, but for Intel driver stuff it should make it for 9.1. Maybe Kostik
can say more about this.

Robert N M Watson
Computer Laboratory
University of Cambridge
Gary Palmer
2011-08-19 20:31:14 UTC
Permalink
On Fri, Aug 19, 2011 at 07:49:37PM +0100, Robert Watson wrote:
> >- improved driver support: a lot of users would benefit
>
> For server/appliance-centric devices, we're going quite well. For consumer
> devices, less so. However, it's generally the case that things have
> dramatically improved in the last ten years: companies come to us with
> drivers now, asking how to get them merged, and frequently their developers
> get commit bits and maintain them in-tree even. Compare this to 2000 when
> we had hacked up Intel device drivers, and other than Adaptec, almost no
> storage vendors closely involved in the project.

While on the most part I agree with the fact that a fair number of server
chips and chipsets are supported I think we are still missing key
components for truly reliable and scalable systems, including SAN
multipath support (yes, we have primitive support but it doesn't know about
limitations of different systems, e.g. HP EVA 5000s which do a LUN failover
if you query the LUN down the wrong path. Yes, the EVA 5000 is an EOL
system but its an example of the issues a proper multipath solution should
solve. I mean no offense to the authors of the current code either). IPMI
boards/interfaces seems to be a constant problem and I'm not entirely
sure we have a good handle on SERDES support for NICs in blade systems.

Does the project or the foundation make any effort to directly engage with
manufacturers to ensure we have robust support for their products?

Gary
Robert Watson
2011-08-19 22:57:49 UTC
Permalink
On Fri, 19 Aug 2011, Gary Palmer wrote:

>> For server/appliance-centric devices, we're going quite well. For consumer
>> devices, less so. However, it's generally the case that things have
>> dramatically improved in the last ten years: companies come to us with
>> drivers now, asking how to get them merged, and frequently their developers
>> get commit bits and maintain them in-tree even. Compare this to 2000 when
>> we had hacked up Intel device drivers, and other than Adaptec, almost no
>> storage vendors closely involved in the project.
>
> While on the most part I agree with the fact that a fair number of server
> chips and chipsets are supported I think we are still missing key components
> for truly reliable and scalable systems, including SAN multipath support
> (yes, we have primitive support but it doesn't know about limitations of
> different systems, e.g. HP EVA 5000s which do a LUN failover if you query
> the LUN down the wrong path. Yes, the EVA 5000 is an EOL system but its an
> example of the issues a proper multipath solution should solve. I mean no
> offense to the authors of the current code either). IPMI boards/interfaces
> seems to be a constant problem and I'm not entirely sure we have a good
> handle on SERDES support for NICs in blade systems.
>
> Does the project or the foundation make any effort to directly engage with
> manufacturers to ensure we have robust support for their products?

Those specific devices are well outside my area of expertise, so I'll have to
leave those to others to address.

Let me turn it around, however: have you approached the Foundation to bring
weak support there to the board's attention? As far as I'm aware, no one has
ever mentioned this to board@ before, and it's something the board would
surely work on actively if we realised it was a problem. More generally, yes,
we do chat with hardware vendors regularly, and have attempted to organise a
number of meetings on behalf of the FreeBSD Project when we're aware of gaps.
We also try to help vendors figure out how to get their drivers back into
FreeBSD. However, we can only be effective advocates for the project when
we're aware of gaps, and we rely on FreeBSD developers and consumers to help
us figure out what they are.

(We also try to meet with companies that use FreeBSD in their products to help
them figure out how to interact with the project better -- so if you're aware
of such companies, perhaps one that needs help working out what to do about
support for the storage systems you have in mind, do drop us an e-mail!)

Robert
Nathan Whitehorn
2011-08-19 20:18:19 UTC
Permalink
On 08/19/11 13:49, Robert Watson wrote:
> On Fri, 19 Aug 2011, Gary Palmer wrote:
>
>> I think we need to refocus on what would give the most benefit. At least
>> as far as I can see:
>>
>> - port/package management: most users would benefit
>
> Definitely -- and there's active work going on here that is very
> exciting indeed.
>
>> - improved virtualisation support: a lot of users would benefit
>
> This is an area of very active work as well, although I'd like to see
> more going on. In particular, I'd like to see (a) significantly more
> mature Xen HVM PV driver support -- and the ability to load them on a
> GENERIC kernel so we don't break freebsd-update kernel updates by
> requiring custom kernels, and (b) bHyve to be fleshed out, including
> support for suspend/resume and migration. Cambridge may be able to help
> with non-i386/amd64 virtualisation; I have a local TODO item relating to
> MIPS virtualisation, for example.

On this subject, we've had a lot of luck doing a
potentially-paravirtualized GENERIC on powerpc, where you can boot the
same GENERIC kernel on real hardware, on IBM's POWER hypervisor (in a
project branch) and under Sony's Cell hypervisor on the PS3. Perhaps
some of the infrastructure for that can be reused on x86.
-Nathan
Kostik Belousov
2011-08-19 21:26:26 UTC
Permalink
On Fri, Aug 19, 2011 at 07:49:37PM +0100, Robert Watson wrote:
> On Fri, 19 Aug 2011, Gary Palmer wrote:
> >- KMS/GEM for better graphics card support: a lot of users would benefit
>
> The FreeBSD Foundation recently funded work on precisely this; it hasn't
> quite made 9.0, but for Intel driver stuff it should make it for 9.1.
> Maybe Kostik can say more about this.

I am very sorry for ever answer in this thread at all.

Yes, my expectation is that the driver will be in 9.1. For now, you need
a published patch and the xorg-dev ports tree. Putting all the stuff into
the repositories without inducing a pain both on users and me is a hard
work. I am esp. feel for kwm who, I believe, leads the xorg-dev ports
efforts.
Lev Serebryakov
2011-08-20 06:15:06 UTC
Permalink
Hello, Gary.
You wrote 19 августа 2011 г., 21:22:52:


>> >> > The niche for routers & traffic analysis is still ours. It would be
>> >> > nice to take e.g. pfSense and agree with some vendor (Netgear,
>> >> > D-Link, etc) to put on sale hardware with FreeBSD inside.
>> >>
>> >> What about 10G routing? Here are reports about full-bandwidth 10G routing
>> >> on modern Intel NICs with Linux (and multi-core server), but I didn't see
>> >> any such data for FreeBSD, and somebody says, that Intel drivers and
>> >> network stack is not so good parallel in FreeBSD.
>> > With regards to high speed packet forwarding and routing, check out this work
>> > by Luigi Rizzo:
>> > http://info.iet.unipi.it/~luigi/netmap/
>> Yep, I know this work, but it is rather special, not out-of-box (ok,
>> maybe with some changed tunables) routing solution with routing
>> tables, some firewall, etc.

> I think we need to refocus on what would give the most benefit. At least
> as far as I can see:

> - port/package management: most users would benefit
> - improved virtualisation support: a lot of users would benefit
> - improved driver support: a lot of users would benefit
> - KMS/GEM for better graphics card support: a lot of users would benefit

> Can you honestly say the same about handling line rate packet forwarding
> for multiple 10G cards?
I agree with you. I've not say, that 10G routing is very important
for many users. My comment about 10G was answer to statement, that
"The niche for routers & traffic analysis is still ours.". I wanted
to say, that it is so may be now, but not for long.


--
// Black Lion AKA Lev Serebryakov <***@serebryakov.spb.ru>
Robert Watson
2011-08-20 11:38:26 UTC
Permalink
On Sat, 20 Aug 2011, Lev Serebryakov wrote:

>> Can you honestly say the same about handling line rate packet forwarding
>> for multiple 10G cards?
>
> I agree with you. I've not say, that 10G routing is very important for many
> users. My comment about 10G was answer to statement, that "The niche for
> routers & traffic analysis is still ours.". I wanted to say, that it is so
> may be now, but not for long.

Part of the key here will be reworking things like ipfw(4) and pf(4) to scale
better than they do currently. For pf(4), it's particularly important that we
align hardware work distribution via RSS with state management for TCP
connections. I've been working on this for the base system TCP implementation
over the last few years, and got most of it into 9.x (but not the actual RSS
driver interface, as I wasn't convinced it was a stable KPI in the form I
prototyped it in). Post-9.0, I'll try to get the RSS KPI cleaned up so that
we can merge it and get our device drivers updated.

There's also a related work-in-progress I have that teaches the network stack
how to program NIC filters, usually implemented as TCAMs (Chelsio) or hardware
hash tables (Solarflare) about network stack connection affinity. My plan is
to work on making this substantially more real once the RSS patches are in.
(Those are, themselves, fairly minor: we have connection groups already in
9.0, and the RSS changes simply cause existing software-side hash tables to
align with hardware-side hashing: the tricky bit is a sustainable KPI for
device driver writers).

These are closely related to the issue of userspace networking, which Luigi is
starting to explore with netmap. Ideally, you could use the same NIC for both
kernel network stack stuff and userspace applications, using hardware filters
to decide whether individual packets go to a descriptor ring in the kernel or
userspace. Solarflare's Open Onload is an interesting potential model there,
although perhaps not the exact model we want (they rely on shared network
stacks between kernel and userspace, and for most of our purposes, less
sharing is not only sufficient, but perhaps better).

Robert
Luigi Rizzo
2011-08-20 13:45:30 UTC
Permalink
On Sat, Aug 20, 2011 at 12:38:26PM +0100, Robert Watson wrote:
>
> On Sat, 20 Aug 2011, Lev Serebryakov wrote:
>
> >>Can you honestly say the same about handling line rate packet forwarding
> >>for multiple 10G cards?
> >
> >I agree with you. I've not say, that 10G routing is very important for
> >many users. My comment about 10G was answer to statement, that "The niche
> >for routers & traffic analysis is still ours.". I wanted to say, that it
> >is so may be now, but not for long.
>
> Part of the key here will be reworking things like ipfw(4) and pf(4) to
> scale better than they do currently. For pf(4), it's particularly
...
> These are closely related to the issue of userspace networking, which Luigi
> is starting to explore with netmap. Ideally, you could use the same NIC
> for both kernel network stack stuff and userspace applications, using
> hardware filters to decide whether individual packets go to a descriptor
> ring in the kernel or userspace. Solarflare's Open Onload is an
...

Thanks to Robert for changing the subject (because i believe that
10G operation is at the bottom of the list of issues that Vadim
brought up).

Regarding netmap i wanted to mention that, since the announce
at the beginning of june, we now have a lot more stuff:
- an initial libpcap library, so a number of apps can run at
much higher speed;
- OpenvSwitch support, which mean that you can do userspace
bridging much faster than
- the Click modular router now runs (in userspace) at up to 4Mpps
per core, which is faster than in-kernel linux;
A userspace version of ipfw should be available in a short time,
and i have some work in progress to bring the forwarding tables
in userspace (but of course you can do the same with Click).
I also see people start using it, which is a good thing because
i am getting useful feedback on features and bugs and patches
for more device drivers.

More (including a recently posted GoogleTechTalk) at
http://info.iet.unipi.it/~luigi/netmap/
http://www.youtube.com/watch?v=SPtoXNW9yEQ

I still think that it would have been nice (especially to compare
FreeBSD to Linux) to have netmap into 9.0, as it would have given
us the lead for sw packet processing solutions.

I understand that the timing of the netmap release was unfortunate
(due to the impending code freeze and summer and holidays), but
probably we could have given it a chance, since the code does not
make a single change to the kernel code except for device drivers,
and even those are small and #ifdef'ed out if you don't want
a netmap-enabled kernel.

Let's hope we find a way to import it into RELENG_9 and i will
do my best to distribute patches compatible with recent OS versions.

On the general issue of improving performance of the network stack,
I feel that to achieve significant speed improvements we should
really reconsider the way things are done in the network stack.
And that comes before support for special HW features.

In netmap at least, a large performance improvement came from getting
rid of mbufs. Per-packet allocation and deallocation are a huge
cost, and really an unnecessary one if the consumer of the packet
can do the processing inline instead of storing the packet and then
work on it a week after. Think for instance of TCP acks, which could
really be processed inline. Same goes for firewalled traffic.

For high speed TCP (i.e. sessions trying to stream data) we have a
lot of issues, two of which are below:
- we still have linear lists of buffers, which means
that the cost of out-of-order incoming segments is O(N) (with N large
at 1..10Gbps). Fixing that is way more important than improving
the locking.
- on the outgoing side, the code makes no assumption on what happens
on the MTU and incoming acks, so every transmission recomputes
the boundaries of the segment to be sent. Never mind that in the
real world the MTU is normally stable, and it would be a lot more
efficient to store (in the socket buffer) and manage (in the stack)
data as an array of MTU-sized buffers, optimize the fast path for that,
and trap to a slowpath if something changes.

cheers
luigi
Lev Serebryakov
2011-08-20 21:10:05 UTC
Permalink
Hello, Luigi.
You wrote 20 августа 2011 г., 17:45:30:

> - the Click modular router now runs (in userspace) at up to 4Mpps
> per core, which is faster than in-kernel linux;
> A userspace version of ipfw should be available in a short time,
> and i have some work in progress to bring the forwarding tables
> in userspace (but of course you can do the same with Click).
> I also see people start using it, which is a good thing because
> i am getting useful feedback on features and bugs and patches
> for more device drivers.
[SKIPPED]
> On the general issue of improving performance of the network stack,
> I feel that to achieve significant speed improvements we should
> really reconsider the way things are done in the network stack.
> And that comes before support for special HW features.
Could you please explain (I don't mean, that you are wrong, I really
don't understand), how netmap and other user-level processing could
help for ROUTING (with firewalling, different routes, etc) and
software switching? I understand very well, why this help user-level
applications, which need to process huge PPS rates. Less memcpy, less
allocations, less context switches (and TLB/cache flushes) -- all
these things is very clear to me. But why user-level software
swithcing is faster than in-kernel one, hwcih should wotk without
memory context switches AT ALL?!
Or netmap is used for prototyping code, which will be moved into
kernel later?


--
// Black Lion AKA Lev Serebryakov <***@freebsd.org>
Luigi Rizzo
2011-08-20 21:55:03 UTC
Permalink
On Sun, Aug 21, 2011 at 01:10:05AM +0400, Lev Serebryakov wrote:
> Hello, Luigi.
> You wrote 20 ??????? 2011 ?., 17:45:30:
>
> > - the Click modular router now runs (in userspace) at up to 4Mpps
> > per core, which is faster than in-kernel linux;
> > A userspace version of ipfw should be available in a short time,
> > and i have some work in progress to bring the forwarding tables
> > in userspace (but of course you can do the same with Click).
> > I also see people start using it, which is a good thing because
> > i am getting useful feedback on features and bugs and patches
> > for more device drivers.
> [SKIPPED]
> > On the general issue of improving performance of the network stack,
> > I feel that to achieve significant speed improvements we should
> > really reconsider the way things are done in the network stack.
> > And that comes before support for special HW features.
> Could you please explain (I don't mean, that you are wrong, I really
> don't understand), how netmap and other user-level processing could
> help for ROUTING (with firewalling, different routes, etc) and
> software switching? I understand very well, why this help user-level

i am working on the following now:
- routing daemons and the like still work as usual, adding and
modifying routes with the standard mechanisms (routing sockets etc.)
- the kernel updates its own forwarding tables (FIB) as usual

But:
- a netmap client (userspace) listens for FIB updates on a
routing socket, and builds its own copy of the FIB in userspace
(call it uFIB)
- the same process sets interfaces in netmap mode, and uses the
uFIB to do forwarding, injecting back into the kernel those
packets that have a local destination.

> applications, which need to process huge PPS rates. Less memcpy, less
> allocations, less context switches (and TLB/cache flushes) -- all
> these things is very clear to me. But why user-level software
> swithcing is faster than in-kernel one, hwcih should wotk without
> memory context switches AT ALL?!

essentially, the driver in netmap mode is way more efficient and
this offsets the cost of the few syscalls.
As an example, currently with netmap one core can forward
packets between interfaces at a rate between 3 and 10 Mpps depending
on the amount of processing on the packet, and there are significant
optimizations that are still possible especially at the lower speeds
(if 3 Mpps can be called so)

> Or netmap is used for prototyping code, which will be moved into
> kernel later?

Nothing prevents, of course, that kernel subsystems use the interface
directly in netmap mode. But i think that now that we have the option,
it makes sense to spend some time to experiment with newer solutions
(FIB data structures, firewalls, memory aligment,
possibly even tcp buffer management) in userspace and then move
stuff back into the kernel once we have a good solution.

i am using it for prototyping and testing subsystems in userspace,
whether it makes sense to move them depends on the performance we
manage to get.

cheers
luigi
Poul-Henning Kamp
2011-08-20 14:10:59 UTC
Permalink
In message <***@fledge.watson.org>, Robert Watso
n writes:

>Part of the key here will be reworking things like ipfw(4)

Here is how to do it:

Compile IPFW rules to C-code, compile C-code to KLD, load KLD and hook
the firewall rules.

If the C-code is designed smartly, the C-compiler can optimize to
insanely efficient code.

The same semantics as today can be preserved with respect to counters
and dynamic addition/removal of rules, with a little bit of creative
thinking about data structures.

Somebody[tm] did that long ago, but never contributed the patches back
once The Mgt[tm] realized what performance we were talking about.

--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
***@FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
Vadim Goncharov
2011-08-24 22:16:18 UTC
Permalink
Hi Lev Serebryakov!

On Fri, 19 Aug 2011 12:37:00 +0400; Lev Serebryakov wrote about 'Re: FreeBSD problems and preliminary ways to solve':

>> 3. Kernel features for complex network solutions (netgraph, carp, ipfw).
>> The niche for routers & traffic analysis is still ours. It would be
>> nice to take e.g. pfSense and agree with some vendor (Netgear,
>> D-Link, etc) to put on sale hardware with FreeBSD inside.
> What about 10G routing? Here are reports about full-bandwidth 10G routing on modern
> Intel NICs with Linux (and multi-core server), but I didn't see any
> such data for FreeBSD, and somebody says, that Intel drivers and
> network stack is not so good parallel in FreeBSD.

"Too narrow is their circle, so terribly far they are from people".

The 10G routing is definetely not a critical FreeBSD problem, actual
for broad user masses. What percentage of even Linux users do have it?

I am currently working as admin of small Linux HPC cluster - MPI,
Infiniband, you know, 10G/40G. That area is unknown to average Linux user:
all that they know is that Linux is used on such computers (Top-500), but
that's all, just a bit of proudness, not something real. When they come
to me try to use it there is little help for them that's Linux too :-)
Everyday needs are very different.

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]
Pedro F. Giffuni
2011-08-19 20:30:06 UTC
Permalink
First of all, thanks to Vadim for his initial post: it's
evident he spend a lot of time preparing it.

I just want to give my 0.02$ to this discussion:

FreeBSD 9.0 is a huge step in the right direction in many
ways. Perhaps what I like most is getting done with the
last GNU toolchain and ZFS updates and maintaining the well
known stability and performance along with the new features.

Unfortunately some necessary updates didn't make it in time,
in particular pkgng and the X.Org drivers. The new installer
is promising but lately installing and configuring XOrg has
become a nightmare so I find myself suggesting people to use
PC-BSD instead.

Some rather important changes that seem critical for the future
like ARM-EABI and a new toolchain seem to be lacking developers
and perhaps are going on too slowly to expect them to work in
the near future but, all in all, I should mention that FreeBSD
is still very influential and competitive. I've seen posts not
too long ago where linux developers praise FreeBSD for keeping
the development pace despite having a much smaller group.

What I think is that perhaps FreeBSD shouldn´t be expecting
to be a better linux than linux, simply because there is no
company related to any BSD in capacity to compete with, say,
Redhat. We still can do pretty much everything linux does
with a little extras, but we are a actually niche market and
it actually hasn't worked bad at all for us.

Concerning BSD sites moving to linux to reduce costs, as a
long time Yahoo user I have to say that doesn't seem to be
going very well for them. I am pretty sure such a process
is painful for them as it is for the end user.

IMHO, we need to focus on the two fields where people expect
FreeBSD to shine:

- Servers: performance has always been our strong point
  but perhaps we should be focusing on ease of use. Ohh...
  BTW, jails are awesome!

- Embedded devices: FreeBSD's license is key here.

I don't think the FreeBSD Foundation has been clueless at all
though, coordinating efforts in a voluntary project like this
*is* tough. Some people complain because we release too fast
but some also complain because the release cycle is too long.
We can't satisfy everyone and development just goes on.

Pedro.
Rick Macklem
2011-08-19 22:38:35 UTC
Permalink
Pedro F. Giffuni wrote:
> First of all, thanks to Vadim for his initial post: it's
> evident he spend a lot of time preparing it.
>
Yes, I'll second that. Being fairly new to FreeBSD, I've found
the discussion interesting.

One thing I thought I'd bring up (since I haven't seen it
mentioned yet) is Debian GNU/kFreeBSD. I haven't tried it,
so I'm talking through my hat a bunch, but...

It seems to me that FreeBSD should do what it can to support
this effort. Why? Well, I suspect a lot of why organizations
running servers might choose Linux over FreeBSD has to do with
the distros/applications and not the kernels. If they like the
style of a typical Linux distro and don't mind the GPL, this
could be a nice alternative for them.

In saying this, I don't mean to belittle the good work being
done on ports and packages and it sounds like more good things
are coming down the pipe. It's just that someone that is familiar
with a typical Linux distro may find Debian GNU/kFreeBSD less of
a transition for them. (And lets face it, everyone is biased
towards what they know vs what they don't know.)

> I just want to give my 0.02$ to this discussion:
>
> FreeBSD 9.0 is a huge step in the right direction in many
> ways. Perhaps what I like most is getting done with the
> last GNU toolchain and ZFS updates and maintaining the well
> known stability and performance along with the new features.
>
> Unfortunately some necessary updates didn't make it in time,
> in particular pkgng and the X.Org drivers. The new installer
> is promising but lately installing and configuring XOrg has
> become a nightmare so I find myself suggesting people to use
> PC-BSD instead.
>
> Some rather important changes that seem critical for the future
> like ARM-EABI and a new toolchain seem to be lacking developers
> and perhaps are going on too slowly to expect them to work in
> the near future but, all in all, I should mention that FreeBSD
> is still very influential and competitive. I've seen posts not
> too long ago where linux developers praise FreeBSD for keeping
> the development pace despite having a much smaller group.
>
> What I think is that perhaps FreeBSD shouldn´t be expecting
> to be a better linux than linux, simply because there is no
> company related to any BSD in capacity to compete with, say,
> Redhat. We still can do pretty much everything linux does
> with a little extras, but we are a actually niche market and
> it actually hasn't worked bad at all for us.
>
One of the reasons I brought up GNU/kFreeBSD is that I think
it would be nice if folks could easily compare kernels without
having to deal with all the userland differences.

However, I have no idea how similar GNU/kFreeBSD can come to
their Linux distro and whether it will allow users to switch
between them easily?

Just my $0.00 (not worth 2 cents), rick
Pedro F. Giffuni
2011-08-20 00:57:31 UTC
Permalink
--- On Fri, 8/19/11, Rick Macklem <***@uoguelph.ca> wrote:
...
>
> One thing I thought I'd bring up (since I haven't seen it
> mentioned yet) is Debian GNU/kFreeBSD. I haven't tried it,
> so I'm talking through my hat a bunch, but...
>

Oh, yes ... the "others" ... ;).

This kFreeBSD vs. Linux comparison is very interesting:

http://www.phoronix.com/scan.php?page=article&item=debian_kfreebsd_h210&num=1

They seem to be doing pretty well but they still have
some issues that are important for some debian packages:
- No alsa
- Still using the older userland linux threads.
- Systemd is becoming popular but is linux specific.

Having the kernel X.Org stuff would help them too.

The guys there are actually eager to work with us
but they don't know well the ways around our standards
and development process.

For some stuff I was working on, Robert Millan pointed
me to these patches for system headers:
http://anonscm.debian.org/viewvc/glibc-bsd/trunk/kfreebsd-kernel-headers/debian/patches/

They require a lot of cleaning but it would be a good
starting point.

Another possibility could be to work together on
a launchd port, but that's a completely different topic and I
am not sure there's interest.

cheers,

Pedro.
Vadim Goncharov
2011-08-24 22:30:09 UTC
Permalink
Hi Rick Macklem!

On Fri, 19 Aug 2011 18:38:35 -0400 (EDT); Rick Macklem wrote about 'Re: FreeBSD problems and preliminary ways to solve':

> One thing I thought I'd bring up (since I haven't seen it
> mentioned yet) is Debian GNU/kFreeBSD. I haven't tried it,
> so I'm talking through my hat a bunch, but...

> It seems to me that FreeBSD should do what it can to support
> this effort. Why? Well, I suspect a lot of why organizations

No. FreeBSD has limited resources. We need to:

a) fix our own problems
b) develop our own unique features (see my message to Robert Watson)

And supporting Debian will mean wasting resources which could be spent
to these. This will effectively kill FreeBSD as a separate entity if
our problems will stay unfixed and get worse due to this.

Leave this work to Debian: they already have a wide community and many
resources. Any Linux distro has more resources than BSD because they just
only pack someone's software, and we have to also actually *develop* those
software (most of all, kernel and libc).

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]
Xin LI
2011-08-25 18:20:42 UTC
Permalink
Hi, Vadim,

On Wed, Aug 24, 2011 at 3:30 PM, Vadim Goncharov <***@mail.ru> wrote:
> Hi Rick Macklem!
>
> On Fri, 19 Aug 2011 18:38:35 -0400 (EDT); Rick Macklem wrote about 'Re: FreeBSD problems and preliminary ways to solve':
>
>> One thing I thought I'd bring up (since I haven't seen it
>> mentioned yet) is Debian GNU/kFreeBSD. I haven't tried it,
>> so I'm talking through my hat a bunch, but...
>
>> It seems to me that FreeBSD should do what it can to support
>> this effort. Why? Well, I suspect a lot of why organizations
>
> No. FreeBSD has limited resources. We need to:
>
> a) fix our own problems
> b) develop our own unique features (see my message to Robert Watson)
>
> And supporting Debian will mean wasting resources which could be spent
> to these. This will effectively kill FreeBSD as a separate entity if
> our problems will stay unfixed and get worse due to this.
>
> Leave this work to Debian: they already have a wide community and many
> resources. Any Linux distro has more resources than BSD because they just
> only pack someone's software, and we have to also actually *develop* those
> software (most of all, kernel and libc).

I consider Debian GNU/kFreeBSD as a platform where we can see what the
actual {performance,functionality} difference between our code and GNU
ones, which is valuable. Supporting their effort might be time
consuming and maybe not our priority, but it's good not to make their
work harder because more importantly, their existence gives us more
exposure and more eyes on our codebase as well.

Cheers,
--
Xin LI <***@delphij.net> https://www.delphij.net/
FreeBSD - The Power to Serve! Live free or die
Vadim Goncharov
2011-08-25 20:29:37 UTC
Permalink
Hi Xin LI!

On Thu, 25 Aug 2011 11:20:42 -0700; Xin LI wrote about 'Re: FreeBSD problems and preliminary ways to solve':

>>> One thing I thought I'd bring up (since I haven't seen it
>>> mentioned yet) is Debian GNU/kFreeBSD. I haven't tried it,
>>> so I'm talking through my hat a bunch, but...
>>
>>> It seems to me that FreeBSD should do what it can to support
>>> this effort. Why? Well, I suspect a lot of why organizations
>>
>> No. FreeBSD has limited resources. We need to:
>>
>> a) fix our own problems
>> b) develop our own unique features (see my message to Robert Watson)
>>
>> And supporting Debian will mean wasting resources which could be spent
>> to these. This will effectively kill FreeBSD as a separate entity if
>> our problems will stay unfixed and get worse due to this.
>>
>> Leave this work to Debian: they already have a wide community and many
>> resources. Any Linux distro has more resources than BSD because they just
>> only pack someone's software, and we have to also actually *develop* those
>> software (most of all, kernel and libc).
> I consider Debian GNU/kFreeBSD as a platform where we can see what the
> actual {performance,functionality} difference between our code and GNU
> ones, which is valuable. Supporting their effort might be time
> consuming and maybe not our priority, but it's good not to make their
> work harder because more importantly, their existence gives us more
> exposure and more eyes on our codebase as well.

I agree that it's good not to make their work harder (you've pointed valid
reasons), but I do not agree that their support is a priority to FreeBSD
("should do what it can"). That's auxiliary, not primary.

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]
Robert Watson
2011-08-26 08:59:11 UTC
Permalink
On Thu, 25 Aug 2011, Xin LI wrote:

>>> It seems to me that FreeBSD should do what it can to support this effort.
>>> Why? Well, I suspect a lot of why organizations
>>
>> No. FreeBSD has limited resources. We need to:
>>
>> a) fix our own problems
>> b) develop our own unique features (see my message to Robert Watson)
>>
>> And supporting Debian will mean wasting resources which could be spent to
>> these. This will effectively kill FreeBSD as a separate entity if our
>> problems will stay unfixed and get worse due to this.
>>
>> Leave this work to Debian: they already have a wide community and many
>> resources. Any Linux distro has more resources than BSD because they just
>> only pack someone's software, and we have to also actually *develop* those
>> software (most of all, kernel and libc).
>
> I consider Debian GNU/kFreeBSD as a platform where we can see what the
> actual {performance,functionality} difference between our code and GNU ones,
> which is valuable. Supporting their effort might be time consuming and
> maybe not our priority, but it's good not to make their work harder because
> more importantly, their existence gives us more exposure and more eyes on
> our codebase as well.

Debian GNU/kFreeBSD offers a number of interesting prospects:

(1) Side-by-side comparison between FreeBSD and Linux kernels + features using
a mature and complete userspace

(2) Allow Debian users easy access to features hard to get with a stock Linux
kernel: pf, 802.11 stack, Netgraph, DTrace, ZFS, Capsicum, etc.

(3) Allow easier hosting of mature Linux environments on top of hybrid
FreeBSD/Linux hosting: provide Linux jails on FreeBSD ISPs but with the
many benefits of using the native ABI.

(4) Potential stepping stone on the path from Linux to FreeBSD (or, to be
fair, vice versa!).

(5) Increase exposure of FreeBSD kernel features and approaches in the broder
OS community.

(6) Provide another motivation for third-party application developers to
consider FreeBSD-specific kernel features viable for use. For example, if
Debian/kFreeBSD makes developing Capsicum-aware applications on a
Linux-like platform easy, then FreeBSD ports wins as well.

(7) Provide an additional set of interested hands when it comes to improving
the clarity of definition and robustness of our system call ABI. This is
something we've been increasing our focus on over time, and especially if
the Debian folk track our development HEAD, they can provide us much
earlier feedback either when we mess up, or when there's something we can
do to make things easier for them (and therefore, likely, us in the
future).

(8) Use of the Debian "brand" to promote FreeBSD as a vibrant and interesting
thing for the broader community of Linux users.

I think we should be supporting the Debian/kFreeBSD folks in their effort --
hence inviting them to join our developer summits, accepting patches, etc.
As both the FreeBSD and the Debian communities pride themselves in being a bit
persnickety about the spelling and details, there will inevitably be some
disagreements about approach. However, we may find that we can make their
lives a lot easier by making relatively small changes to our kernel, and that
they have extremely useful feedback to bring us on our kernel implementation.

Robert
Pedro F. Giffuni
2011-08-27 18:08:32 UTC
Permalink
Hmm...

I will admit quite frankly that the difference is not huge,
and perhaps that's the reason why it hasn't been done
before, but our bug reporting system is quite outdated.
It works for most needs but I think the only reason
we are stuck with it is because we can still file bugs
from a console.

I know this is not the first time someone brings the
subject, we even have a Wiki page about it:

http://wiki.freebsd.org/Bugzilla

I do find Bugzilla a lot more useful than GNATS: I
particularly like that it is possible to obsolete
attachments. Requiring an id serves to control the spam
a bit and develops some level of compromise with the
project.

In other projects (notably the Apache Foundation)
JIRA is also gaining popularity. These newer bug
tracking systems are very versatile and integrate
with SVN.

While here, some people have requested opengrok in
the past.

Just something to think, but delaying these changes
too much rarely proves beneficial for the Project.

Pedro.
Garrett Cooper
2011-08-27 18:12:08 UTC
Permalink
On Sat, Aug 27, 2011 at 11:08 AM, Pedro F. Giffuni <***@tutopia.com> wrote:
> Hmm...
>
> I will admit quite frankly that the difference is not huge,
> and perhaps that's the reason why it hasn't been done
> before, but our bug reporting system is quite outdated.
> It works for most needs but I think the only reason
> we are stuck with it is because we can still file bugs
> from a console.
>
> I know this is not the first time someone brings the
> subject, we even have a Wiki page about it:
>
> http://wiki.freebsd.org/Bugzilla
>
> I do find Bugzilla a lot more useful than GNATS: I
> particularly like that it is possible to obsolete
> attachments. Requiring an id serves to control the spam
> a bit and develops some level of compromise with the
> project.
>
> In other projects (notably the Apache Foundation)
> JIRA is also gaining popularity. These newer bug
> tracking systems are very versatile and integrate
> with SVN.
>
> While here, some people have requested opengrok in
> the past.
>
> Just something to think, but delaying these changes
> too much rarely proves beneficial for the Project.

There's also Trac as well, which has limited integration with some
VCEs from what I've seen.
Thanks,
-Garrett
Julien Laffaye
2011-08-27 18:36:34 UTC
Permalink
On 08/27/2011 20:08, Pedro F. Giffuni wrote:
> Hmm...
>
> I will admit quite frankly that the difference is not huge,
> and perhaps that's the reason why it hasn't been done
> before, but our bug reporting system is quite outdated.
> It works for most needs but I think the only reason
> we are stuck with it is because we can still file bugs
> from a console.
>
> I know this is not the first time someone brings the
> subject, we even have a Wiki page about it:
>
> http://wiki.freebsd.org/Bugzilla

We need someone to do the job. And it is not an "easy" migration in the
sene that we need to keep old PRs, and if you take more time than you
thought, everyone would yell at you (we need a bugtracker for releases
management, ...).

So, manpower, as usual :-)
Pedro F. Giffuni
2011-08-27 19:14:06 UTC
Permalink
--- On Sat, 8/27/11, Julien Laffaye <***@FreeBSD.org> wrote:

...

> >
> > I know this is not the first time someone brings the
> > subject, we even have a Wiki page about it:
> >
> > http://wiki.freebsd.org/Bugzilla
>
> We need someone to do the job. And it is not an "easy"
> migration in the sene that we need to keep old PRs,
> and if you take more time than you thought, everyone
> would yell at you (we need a bugtracker
> for releases management, ...).
>

Yes, this is a consequence of GNATS being "obsolete":
newer bug tracking systems have not kept the conversion
tools updated as there are not many users for it
anymore.

We can always make drastic workarounds if the migration
tools take too long or simply don't work. Here are two options:

1) Leave both systems running for a while: stop opening new PRs
in GNATS: but leave it running for reference. Kill GNATS after
two major releases.

2) Fix all bugs and make a perfect release (OK, not very
realistic but theoretically possible ;-) ).

> So, manpower, as usual :-)
>

Yes, and unfortunately the problem keeps growing :(.

Pedro.
Robert N. M. Watson
2011-08-20 14:21:33 UTC
Permalink
On 20 Aug 2011, at 15:10, Poul-Henning Kamp wrote:

> In message <***@fledge.watson.org>, Robert Watso
> n writes:
>
>> Part of the key here will be reworking things like ipfw(4)
>
> Here is how to do it:
>
> Compile IPFW rules to C-code, compile C-code to KLD, load KLD and hook
> the firewall rules.
>
> If the C-code is designed smartly, the C-compiler can optimize to
> insanely efficient code.
>
> The same semantics as today can be preserved with respect to counters
> and dynamic addition/removal of rules, with a little bit of creative
> thinking about data structures.
>
> Somebody[tm] did that long ago, but never contributed the patches back
> once The Mgt[tm] realized what performance we were talking about.


I'm actually slightly less concerned about this aspect of it, although some sort of JIT/etc, perhaps grounded in LLVM, would make sense. I'm more concerned with the management of firewall state in the presence of multiple network queues and SMP. We should be able to build substantially on the approaches we've been using higher in the network stack to align NIC-level work distribution with network stack processing and application process affinity. (These ideas are still coming to maturity, but there's useful stuff to be found there.)

Robert_______________________________________________
freebsd-***@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "freebsd-arch-***@freebsd.org"
Peter Jeremy
2011-08-21 11:05:21 UTC
Permalink
On 2011-Aug-17 23:10:19 +0000, Vadim Goncharov <***@mail.ru> wrote:
>A month ago techlead of Rambler's Mail department declared in his blog
>that they begin migration from FreeBSD to Debian/Ubuntu. Comments to the
>blog entry (there was much flame) revealed that search department of
>Russian search engine #1 Yandex.com also plans to migrate their
>search cluster - about 30,000 servers in several DCs (~60% of total
>their servers - to Linux.

This is unfortunate.

>The official reasons (really semi-official, as these are individual
>blogs), in short, were:
> * inadequate package manager and huge monolithic base system
> * lack of OpenVZ-like virtualization (need CPU limiting)
> * a FreeBSD marketshare forecast for 5 years

I'll accept that the package management could be better and the base
system is monolithic but it's hardly huge. It's not clear how
marketshare forecast is relevant (though if they are as large as you
imply, the marketshare forecast is circular). To take a devil's
advocate approach, they need to accept some of the responsibility
for what they perceive as FreeBSD shortcomings - they have chosen
to not fund the development of functionality that they require and
are now complaining that no-one else has either.

>specialists on the market to hire (e.g. Yandex has about 20 FreeBSD
>admins and about 84 Linux admins, for all other their services and
>40% of servers).

Based on this, a Linux system needs about 6.3 times as many admins as
a FreeBSD system. It's not clear how migrating to Linux is going to
save money here. And, again, they could always train people to meet
their needs instead of expecting someone else to do it.

> 1. Social (psychologic) problems of community (marketing, docs, ...).
>
>This is the most important one, because all technical problems are just
>won't get solved because are even not viewed as problems. The FreeBSD
>Project does not listen to users' needs. The typical response when poor
>user want something is: "we don't need this, we won't change for you",
>with "where are your patches?" at best. Then many users go out when see
>such attitude toward them.

I agree with this. The underlying problem is that most FreeBSD
committers and developers are volunteers who work on FreeBSD in their
spare time in areas that interest them. Even if they agree with the
issue that the user raised, they probably don't have all of the time,
expertise and motivation to work on it. Note that you can't tell a
volunteer what to work on. If he doesn't want to work on something,
he won't. If you push him, he'll just leave.

If someone (person or corporation) wants some functionality that
doesn't exist then they are going to need to either pay for it
themselves or convince someone else (eg FreeBSD Foundation) to pay
for it. Obviously, the FreeBSD Foundation is going to want to fund
areas where it perceives it will get the greatest benefit.

> 3. Ports and packages.
>
>What was the main problems with large-scale installations of FreeBSD in
>that businesses? In short, that binary packages are not equal in rights
>to ports, and that complicates things (i.e. requires too much work) when
>one have many (> 10) servers. This was listed to me as:
>
>1) No pkg and pkg-devel versions. The -devel version is headers, static
> libs, programmer examples, etc. not needed in production (we could
> say this part is what is actually depended on in B-deps).

Xorg is partially broken up in this way. In general, it is up to the
ports' maintainers to do this - the FreeBSD project just hosts the
ports infrastructure, it's up to maintainers to supply and maintain
the actual ports. Note that requiring both pkg and pkg-devel versions
of ports significantly increases maintainer effort for little (to
them) perceived value. Also, I find having separate pkg and pkg-devel
versions a real PITA - I regularly find that information i need is
missing from the pkg file and I have to dig out the missing files.

Out of interest, what is the rationale behind this requirement.

>2) Package name is dependent on options, so packages with another opts
> don't work well when dependencies are rebuilt.

This isn't always true and there are pros and cons to both approaches
- making the package name independent of the options makes it very
difficult to determine what options were used to build the package.
This _is_ an area where the higher-level management tools (eg
portmaster) can help.

>3) Conflicts: no way to have apache13 and apache22 the same time.

Because both install files with the same name. Again, this is an
issue for the maintainer to address.

>4) No dependence on base system. You may cut out something, recompile
> world, deploy it on cluster and just then see that some packages are
> now don't work.

Ports _must_ depend on the base system or there's no point in having a
base system. This is no different to changing any other port
dependency and expecting it not to have any impact. I agree that
there's no explicit tracking of base system dependencies and that is
a deficiency.

>5) Dependencies are badly designed. No version ranges in dependencies,
> no alternative packages, no priorities in package search.

I would dispute that dependencies are badly designed. There may be
scope for allowing more flexibility in some cases but you then run
the risk of running into subtle incompatibilities - especially since
the maintainer can't be expected to verify all possible combinations.

>6) Update problems. The version is just coded into name of package, and
> dependencies are on the entire name, so there are situations when
> install/upgrade of just one package may require rebuild 3/4 of all
> pkgs. You cannot easiy modify installed package without editing pkgdb
> manually. It is impossible to upgrade/replace package by out of the
> box tools.

Agreed. Tools like portmaster can assist here but it's not possible
to always avoid rebuilding packages: If portx-3.1 depends on liby.so.2
in porty-2.4. When porty-2.4 gets upgraded so it installs liby.so.3,
there is no alternative to rebuilding portx. It is unfortunate that
a number of widely-used "core" ports have very unstable ABIs which are
regularly changed but FreeBSD has no control over that. This is a no-
win situation - if the ports are not updated, people complain that the
ports are out of date. If the ports are updated, people complain about
having to recompile all the affected ports.

>7) Base system has no "out of the box" tools for package upgrade. Our
> business opponents say this the least problem as one can always
> install portupgrade, but conclude that overall base system concept
> does not play well with full-featured packages (see also next part
> about base system).

And later on, you complain that the base system is too large. You
can't have it both ways. Note that having the package upgrade system
as a port means it can be be updated independently of the base system
- which is a major benefit.

>8) There is no -STABLE supported branches in ports.

This issue comes up regularly. It's not clear how to achieve this
without a major increase in infrastructure and committer resources.

>It is obvious that current packages are not first-class citizens, in
>comparison with ports.

Source code is inherently more flexible than pre-compiled executables.
There is no way to avoid this.

>So packages need to be "equal in rights" in ports. The ports can have
>things like this:
>
> .if ${OSVERSION} < 700104 || ${OSVERSION} >= 900000

Different versions of FreeBSD have different functionality. Sometimes
this affects ports.

> * Options must be included and installed to /var/db/ports/*/options
> (this will allow to rebuild installed binary pkg as port)

This is already done.

> * Info about options must be included to /var/db/pkg/*/+CONTENTS like:
>
> @option WITH_SSL
> @option WITHOUT_DEBUG
>
> * Dependencies must be able to specify needed OPTIONS, both required to
> set and required to be unset, somewaht like:
>
> RUN_DEPENDS+= foobar:${PORTSDIR}/devel/foobar:+SSL:-SQLITE
>
> This will allow to detect conflicts with installed packages with
> incompatible options.
>
> * For the package file names, introduce presets, e.g.:
>
> OPTIONS_PRESETS= default "+SSL:-DEBUG" \
> lite "-SSL:-DEBUG"

These all seem like good ideas.

> * (internal) move away from CVS, rebalance to category-subcategory.

I don't believe the former point is relevant. There is probably
scope for improving port categorisation.

> 4. Base system, closely related with packages.
...
>2. Consequently, there is no way to check integrity (MD5 etc.) of any
> non-RELEASE variant (freebsd-update IDS is very limited).

If you have built a non-standard world, you need to generate/verify
your own checksums. mtree(8) can do this and there are a number of
other suitable tools in ports.

>3. No ties between base system and packages: who knows what previous
> admin has installed, you may have compiler or may not have, etc.
> Packages may silently broke if some part of base system SUDDENLY
> disappears, as no dependency information is recorded.

This _is_ a deficiency. It's not clear how to cleanly resolve this.

>4. Base system is monolithic, so there is no easy way to replace one
> component with another - ports replacing base parts are hemorrhoids.

OTOH, the base system is integrated together and works as a whole.
This is a major advantage over Sinux.

>Looking at /usr/src/sontrib and http://wiki.freebsd.org/ContribSoftware
>we can identify many of what could became a package. There can be
>different approaches to criteria "what is in base system":
>
>1. Only what is done on freebsd.org: all contrib must go to pkgs.

I don't believe this is currently practical due to dependencies from
core FreeBSD code on contrib code.

>2. Whose effective vendor is now *@*bsd.org: contrib from other BSDs may
> still live, and those with ceased upstream or renamed
> (non-conflicting with ports) soft like libbsdxml, too.

I'm not sure I follow this.

>3. Axe out only the most odious contrib parts: BIND (as Peter said in
> archives, host/dig could be resurrected from Attic), sendmail (could
> be replaced by dma) and several others, presumably GCC/binutils & CVS
> (I've also heard about painful Kereberos interferencing with Samba).

This would seem to be a lose-lose situation. The workload on FreeBSD
committers goes up as they take over all maintenance of local host/dig
etc and users need to do more work to build a functional system. And
you've already indicated you are opposed to having ports replace base
components.

>Axing out GCC to packages has another benefit: the newer GCC could be
>used, and base could be polished to be more compiler-agnostic (hello,
>clang).

Work is currently under way to replace gcc with clang for building
FreeBSD. I don't believe it's possible to build a truely compiler-
agnostic system - FreeBSD is large and complex enough that it's
highly likely to trigger compiler bugs. In order to deliver a
reliable base OS, the compiler needs to be defined.

>to split docs to packages, that's a right direction. For POLA reasons
>all axed out packages (and sendmail too, respect traditions) should be
>just packaged on CD1.

Agreed.

> 5. Too short major releases' cycle.
...
>It is known why the current scheme was adopted: the 4.11/5.3 case,
>a horror.

"Horror" is over-doing things. 3.x and 5.x both included major
changes which made migration relatively difficult, as well as making
it difficult to merge code back to the previous release.

>Proposed solution: prolonging major releases fork time a little. Just to
>time so only one stable branch will exist. I hope increasing branch
>lifetime to one minor release will help:

The difficulty of backporting fixes relates more to the magnitude of
change in the code base than the time. It's not clear that increasing
the longevity of major releases will really solve the problem -
however long the Project supports branches, there will always be
people complaining it's too short.

> 6. Bug tracker, unicode and other less important trivia.
>
>GNATS is too old and unfriendly e.g. to user attachments.

Agreed. But it's not clear what the solution is.

>That's all for today. Thanks to everyone who has patience to carefully
>read this all entirely.

Thanks for your mail. It has made thought-provoking reading.

--
Peter Jeremy
Slawa Olhovchenkov
2011-08-21 13:52:10 UTC
Permalink
On Sun, Aug 21, 2011 at 09:05:21PM +1000, Peter Jeremy wrote:

> >specialists on the market to hire (e.g. Yandex has about 20 FreeBSD
> >admins and about 84 Linux admins, for all other their services and
> >40% of servers).
>
> Based on this, a Linux system needs about 6.3 times as many admins as
> a FreeBSD system. It's not clear how migrating to Linux is going to
> save money here. And, again, they could always train people to meet
> their needs instead of expecting someone else to do it.

Yandex try to reduce count of servers.
Now [in Yandex] co-exist large set of productions servers and also
large set of servers for tests and labs purpose. Migrating to Linux
with virtualisation allow to drop tests and labs server and run on
production cluster in off-peak time.

> >5) Dependencies are badly designed. No version ranges in dependencies,
> > no alternative packages, no priorities in package search.
>
> I would dispute that dependencies are badly designed. There may be
> scope for allowing more flexibility in some cases but you then run
> the risk of running into subtle incompatibilities - especially since
> the maintainer can't be expected to verify all possible combinations.

In real word this is [no backward compatibility] rare case.

> >6) Update problems. The version is just coded into name of package, and
> > dependencies are on the entire name, so there are situations when
> > install/upgrade of just one package may require rebuild 3/4 of all
> > pkgs. You cannot easiy modify installed package without editing pkgdb
> > manually. It is impossible to upgrade/replace package by out of the
> > box tools.
>
> Agreed. Tools like portmaster can assist here but it's not possible
> to always avoid rebuilding packages: If portx-3.1 depends on liby.so.2
> in porty-2.4. When porty-2.4 gets upgraded so it installs liby.so.3,
> there is no alternative to rebuilding portx.

Also, this is rare case. More frequent liby.so.2 updated to
liby.so.2.1, liby.so.2.2, liby.so.2.2.1 etc.

> >7) Base system has no "out of the box" tools for package upgrade. Our
> > business opponents say this the least problem as one can always
> > install portupgrade, but conclude that overall base system concept
> > does not play well with full-featured packages (see also next part
> > about base system).
>
> And later on, you complain that the base system is too large. You
> can't have it both ways. Note that having the package upgrade system
> as a port means it can be be updated independently of the base system
> - which is a major benefit.

This is complain about missing pkg_update (since FreeBSD 3.x). Only
pkg_add and pkg_delete, this is not preserve +REQUIRED_BY, for example.

> > * Options must be included and installed to /var/db/ports/*/options
> > (this will allow to rebuild installed binary pkg as port)
>
> This is already done.

Realy?! I can install binary package by pkg_add and found build
options in /var/db/ports/*/options?

> >2. Consequently, there is no way to check integrity (MD5 etc.) of any
> > non-RELEASE variant (freebsd-update IDS is very limited).
>
> If you have built a non-standard world, you need to generate/verify
> your own checksums. mtree(8) can do this and there are a number of
> other suitable tools in ports.

Why is not done by installworld?

> >3. No ties between base system and packages: who knows what previous
> > admin has installed, you may have compiler or may not have, etc.
> > Packages may silently broke if some part of base system SUDDENLY
> > disappears, as no dependency information is recorded.
>
> This _is_ a deficiency. It's not clear how to cleanly resolve this.

Define base as virtual packae with options (BASE_SSL, BASE_SENDMAIL etc)

> >4. Base system is monolithic, so there is no easy way to replace one
> > component with another - ports replacing base parts are hemorrhoids.
>
> OTOH, the base system is integrated together and works as a whole.
> This is a major advantage over Sinux.

Define 'negative' package as package remove files from base systems or
other package.

Allow package to replace files from base systems or other package.

All this (removed or replaced files) must be preserved,
Marcin Wisnicki
2011-08-22 18:33:45 UTC
Permalink
On Sun, 21 Aug 2011 21:05:21 +1000, Peter Jeremy wrote:

> On 2011-Aug-17 23:10:19 +0000, Vadim Goncharov <***@mail.ru>
> wrote:
>>1) No pkg and pkg-devel versions. The -devel version is headers, static
>> libs, programmer examples, etc. not needed in production (we could
>> say this part is what is actually depended on in B-deps).
>
> Xorg is partially broken up in this way. In general, it is up to the
> ports' maintainers to do this - the FreeBSD project just hosts the ports
> infrastructure, it's up to maintainers to supply and maintain the actual
> ports. Note that requiring both pkg and pkg-devel versions of ports
> significantly increases maintainer effort for little (to them) perceived
> value. Also, I find having separate pkg and pkg-devel versions a real
> PITA - I regularly find that information i need is missing from the pkg
> file and I have to dig out the missing files.
>
> Out of interest, what is the rationale behind this requirement.
>

I too find lack of -devel packages as one of freebsd strengths not
weaknesses.
Such separation is also very specific to certain languages like C/C++.

However to provide a middle-ground solution I once proposed installation
filters based on patterns, which would give ability to not have unwanted
files essentially for free (just small changes in pkg_* and ports/Mk).

For example there could be a standard filter group called "devel" that
includes "include/**" and "lib/**.a".
Packages would have ability to exclude/include additional files to any
group if needed using pkg-plist directives.
Similar patterns could be defined for docs, localizations, etc.
User would set which groups of files he wants to exclude during
installation or after it.

Of course ideas don't write code :(
selven
2011-08-23 06:06:24 UTC
Permalink
Good post as well as pretty much scary. You mentionned about the purity of
FreeBSD at some point, that's one of the reasons why i prefer FreeBSD
(probably many of my friends who do work with it also), lately, with all
those ubuntu fans, trying to get the company to keep using FreeBSD has
become pretty much a hassle. Since in a technical board, with 10 people, 7
out of 10 are ubuntu users, with votes one always loses, and the funny thing
:s 7 out of 10 don't even know the difference between FreeBSD and linux,
they just voice out ubuntu because 'you will end up in trouble finding
people to maintain your stuffs if these 3 leaves' (weirdly we even fixes
there buntu bugs :s ). This user base is really a huge problem.

On Thu, Aug 18, 2011 at 3:10 AM, Vadim Goncharov <***@mail.ru>wrote:

> Hi,
>
> I have bad news.
>
> A month ago techlead of Rambler's Mail department declared in his blog
> that they begin migration from FreeBSD to Debian/Ubuntu. Comments to the
> blog entry (there was much flame) revealed that search department of
> Russian search engine #1 Yandex.com also plans to migrate their
> search cluster - about 30,000 servers in several DCs (~60% of total
> their servers - to Linux. The problem here is that both big companies
> were using FreeBSD from the beginning (~1997), so migration will be
> rather expensive.
>
> The official reasons (really semi-official, as these are individual
> blogs), in short, were:
> * inadequate package manager and huge monolithic base system
> * lack of OpenVZ-like virtualization (need CPU limiting)
> * a FreeBSD marketshare forecast for 5 years
>
> Despite of several our committers working for them, the operating
> expenses for FreeBSD are considered too high by these companies. They've
> not confirmed, but the key problem is probably shortage of FreeBSD
> specialists on the market to hire (e.g. Yandex has about 20 FreeBSD
> admins and about 84 Linux admins, for all other their services and
> 40% of servers). So this is problem of FreeBSD's too low
> userbase/marketshare, caused, in turn, by other FreeBSD's problems.
>
> Given that they is just planning today, but not yet started, we have to
> solve our problems or FreeBSD will effectively die[1]. Currently
> https://ssl.netcraft.com/ssl-sample-report//CMatch/oscnt_all shows that
> still 3% of servers are running FreeBSD. We are currently probably at
> the tip of 'hype curve'[2] and then our userbase will begin to shrink,
> and the task is to solve problems, so after hard time it will rise again
> (hopefully more than it was before).
>
> [1] 'Die' means shrinking userbase size to those of NetBSD/OpenBSD.
> [2] http://www.metodolog.ru/01493/2.gif
>
> Earlier this year in this list marcel@ have said about objective view:
> http://lists.freebsd.org/pipermail/freebsd-arch/2011-January/010999.html
> from the outside, not FreeBSD people. I have posted a call to Russian
> community in my blog (http://nuclight.livejournal.com/128712.html) and
> gathered a list of problems along with possible solutions to some of
> them. The rest of this message is summary of them.
>
> In general, people sympathizing FreeBSD agree that there are no fatal
> technical problems and that FreeBSD could compete with mainstream Linux.
> That said, the 80/20 principle is in effect and 80% losed users for
> FreeBSD are caused by 20% problems. The trouble here is that what
> "outside" people view as considerable problems, we here inside FreeBSD
> view as something insignificant ("do it yourself"). Thus 80% could be
> achieved by 20% of work. I have sorted them in order of decreased
> importance (priority):
>
> 1. Social problems of community (and marketing, docs, ...)
> 2. Lack of drivers and virtualization.
> 3. Ports and packages.
> 4. Base system, closely related with packages.
> 5. Too short major releases' cycle.
> 6. Bug tracker, unicode and other less important trivia.
> (bonus) FreeBSD strengths to be concentrated on.
>
> Now all of them more detailed.
>
> > 1. Social (psychologic) problems of community (marketing, docs, ...).
>
> This is the most important one, because all technical problems are just
> won't get solved because are even not viewed as problems. The FreeBSD
> Project does not listen to users' needs. The typical response when poor
> user want something is: "we don't need this, we won't change for you",
> with "where are your patches?" at best. Then many users go out when see
> such attitude toward them.
>
> The key points are:
>
> 1) *The competent user is not zealot*.
> 2) The system is *for users, not for developers*.
>
> With first: when user sees the system costs too much time for him, and
> that those problems won't get fixed and even considered such - he will
> switch to another OS. This may mean that he is able to follow our advice
> hoe to do some or another thing (e.g. to recompile all ports), but this
> is unacceptable to him because this is too much maintenance (another
> system by objectivity requires less work). Many businesses fall into
> this category. They will not with FreeBSD by any price just because they
> love OS. Unlike ourselves.
>
> With second: that's simple and not simple. It is simple in that by
> nature each person don't make a work just for himself but for all
> others, who are now "users" to him, too - just by induction that's not
> for developers only. It is not simple due to question "Why do we need
> those who don't contribute anything back to us?" which random committer
> has right to ask. The answer, in short, is: there tasks which could be
> only done by large groups of people, e.g. big corporations. For
> corporations to invest and contribute back - the system must be popular
> enough. To be popular enough means there must be a big amount of users
> who is not contributing anything. It is useful in itself, though, that
> some of those users, say 1%, will become contributors, that is, absolute
> number of our developers will also benefit from FreeBSD being much more
> popular.
>
> There are opinions in our community like:
>
> | > Personally I'd like to think that that we write an OS for users.
> |
> | We write an OS for the people who can and will use an OS written by
> | us.
>
> | FreeBSD is whatever its developers make it be
>
> These are wrong and harmful nowadays. The world has changed. We have to
> admit it or we will die. We have to admit mistakes and *change* some of
> the ways we're doing things: any answer like "I don't agree, we don't
> need these users/features/etc., we *won't* do this for someone" - is
> just another step to grave.
>
> Of course that doesn't mean to do everything - we often have not enough
> time/resources to do. But that's another question and should not be
> mixed with attitude - "it's good but we have no resources, will you do?"
> vs "we don't need this, go away" (that's not only about features but
> about keeping something too).
>
> So ("system is for users") we need to (re)define who our user is. I view
> the current situation as following:
>
> 100% .---------------. The stratification of overall
> | Ubuntu | our userbase. Areas are:
> | target | 6
> | audience | 1 - official developers
> expand -> |---------------|
> to here | not our, but | 2 - actively participating and
> | competent | 5 sending patches, contributors
> | users | and other "zealots" (whose
> |===============| "soul is with FreeBSD")
> |announce@ only | 4
> involved |---------------| 3 - not so active but discussing
> | subscribed to | in mail lists, patches go
> | our mailing | 3 sometimes
> | lists |
> committed |- - - - - - - -| 4 - busy with work to read lists
> | | 2
> |_______________| 5 - can use, but costs are now high
> | *@freebsd.org | 1
> 0% `---------------' 6 - we'll never want them
>
> The terms "involved" and "committed" were taken from
> http://en.wikipedia.org/wiki/The_Chicken_and_the_Pig for those who are
> "at the heart" of the community, at "periphery" and all others.
> Currently, only those in (1) and partially (2) are listened to,
> sometimes with "call for ..." in (3). Meanwhile, the most important of
> our users, who are using FreeBSD in production, who are busy with real
> work in real world, are in (4) and sometimes (5). Those are largely
> ignored by the Project - even messages to announce@ last years are less
> about important events and calls for volunteers/money.
>
> The other social problem is lack of companies which offer commercial
> support of FreeBSD like RedHat does.
>
> As a possible solution to find out what user needs are, and to
> compensate the fact that not all users in (4) and (5) care enough about
> our principles and spirit, I propose a system for "weighted democracy".
> This is a voting system (I could implement it), say, there is a mail
> ***@freebsd.org to which users send filled in vote forms, with
> selected answers from a survey published in ***@.
>
> The system has a database where users are recorded given their FreeBSD
> activity in mail lists etc., and votes are summed as follows:
>
> + 1.00 vote for anyone not in database (not involved to FreeBSD)
> + a decimal logarithm of number of posts to mail lists (2 votes for 100
> posts, 3 votes for 1000 posts)
> + a binary logarithm of num PRs in GNATS db (6 votes for 64 send-pr's)
> + a proportion (say, N/2) of entries for this person in "svn log" (e.g.
> in "Submitted by:")
> + an assigned (by core@) number of votes in special exceptional DB (for
> corporation and the like)
>
> The system then presents results for each answer: 1) how many users
> voted, 2) how many votes summed.
>
> This is by no mean to measure "exact contribution", but to defend from
> anonymous users and trolls who not care about amount of work developers
> will need to. The results are viewed as a feedback to core team, not as
> a final decision - that's all for what marketing is solely exist. There
> no adequate feedback from users to developers currently at all -
> individual posts in mail lists are too small for statistics (what about
> ministat(1) for users, huh?..).
>
> What is also in this part? Documentation. No, not in that sense. The
> observations show that while there are described solutions to problems
> in system, it's difficult for users to find it. It's somehow organized
> or misorganized that solution is not intuitive for them (e.g. someone
> migrating from Windows complained that it was difficult to find 'simply
> how to format a flash drive' in Handbook). I don't know how to handle
> this properly. May be catalogues with Best Practices howto's pointing to
> exact sections of Handbook, FAQ, articles etc.? May be better search
> mechanisms?..
>
> And the last here about too much conservatism and rigidness in our camp.
> As one of the opponents said (roughly translated):
>
> | FreeBSD, historically, was good system, let's say, "valid system
> | for solid people". Pureness, strictness, etc. The base system is
> | consequence of this approach. The trouble is, that in 2011 nobody
> | needs pureness and strictness. Customers need transparency and fast
> | reaction to their requests. If there is no transparency and speed,
> | you get CentOS 6 (just released, at last). Or FreeBSD (Gentoo,
> | Solaris, you name it).
>
> I don't agree that those certainly contradicts each other, but we
> definitely need to change, er, something. And don't keep something just
> because it is tradition, if that tradition has no more technical reasons
> for our users. Let's shift conservatism to another field where it is
> really needed (e.g. legacy support and other examples below).
>
> Finally, two more quotes from the ***@freebsd.org archives of last
> 2 years:
>
> | From: Cyrille Lefevre <cyrille.lefevre-***@laposte.net>
> | [...] however, you answer remember me why I quit FreeBSD, cease
> | fire, courtesy is the key
>
> and
>
> | From: Julian H. Stacey
> | Though I & many others have sent lots of send-pr, contributing even
> | a spelling correction to FreeBSD is much harder than to e.g.
> | http://wikipedia.org
>
> The threshold of entering to FreeBSD is too high and should be lowered.
> I can confirm the last quote on my own example, 2 months ago. I've
> submitted a patch to ipfw, adding call/return rule actions. It allows
> to organize rules in somewhat like pf anchors, and, more importantly,
> iptables chains, enabling FreeBSD ipfw to compete with Linux at least
> partially in this sphere. The patch wasn't taken in maillists, I had
> to push it in IRC, and push hard: the whole needed by many big users
> thing was deferred (and still not MFCed to 8.x) just because some
> #define's and printf's were Not So Proper & Right Way! F*cking shame.
>
> > 2. Lack of drivers and poor guest virtualization.
>
> It is known that FreeBSD supports less hardware than competitors. It is,
> however, a matter of popularity - the more system will have users, the
> more drivers will be created by 3rd parties, so we cannot directly
> affect this. It's kind of exclusive circle.
>
> But there is one area - virtualization - without supporting it the
> FreeBSD niche will collapse very fast. It is necessary to say that it is
> about guest (para-)virtualization only, not host mode. Host mode market
> is already lost for FreeBSD for quite some time, may be something in the
> future, but today it will waste of resources. What is needed here is
> just analogue to OpenVZ (and jails/rctl already done more than half of
> the work here).
>
> And in guest mode FreeBSD *urgently needs* working drivers/utilities for
> all common suits, Citrix XenServer, VMWare vSphere (ESXi), Xen*,
> Microsoft Hyper-V, etc. This must be the primary direction for
> developers' forces and FreeBSD Foundation's money. We have may be about
> 1 year here. Why? Because of cloud computing and VPS/VDS. It's no
> matter what OS runs hoster if clients will use FreeBSD and we still have
> users. I've been already asked by a customer for which I wrote
> a non-portable kqueue-based daemon to rewrite for Linux because they
> want to go for Amazon EC2 (it's cheaper as only used resources are
> accounted) and FreeBSD there has still many in ISSUES scaring them...
>
> > 3. Ports and packages.
>
> What was the main problems with large-scale installations of FreeBSD in
> that businesses? In short, that binary packages are not equal in rights
> to ports, and that complicates things (i.e. requires too much work) when
> one have many (> 10) servers. This was listed to me as:
>
> 1) No pkg and pkg-devel versions. The -devel version is headers, static
> libs, programmer examples, etc. not needed in production (we could
> say this part is what is actually depended on in B-deps).
>
> 2) Package name is dependent on options, so packages with another opts
> don't work well when dependencies are rebuilt.
>
> 3) Conflicts: no way to have apache13 and apache22 the same time.
>
> 4) No dependence on base system. You may cut out something, recompile
> world, deploy it on cluster and just then see that some packages are
> now don't work.
>
> 5) Dependencies are badly designed. No version ranges in dependencies,
> no alternative packages, no priorities in package search.
>
> 6) Update problems. The version is just coded into name of package, and
> dependencies are on the entire name, so there are situations when
> install/upgrade of just one package may require rebuild 3/4 of all
> pkgs. You cannot easiy modify installed package without editing pkgdb
> manually. It is impossible to upgrade/replace package by out of the
> box tools.
>
> 7) Base system has no "out of the box" tools for package upgrade. Our
> business opponents say this the least problem as one can always
> install portupgrade, but conclude that overall base system concept
> does not play well with full-featured packages (see also next part
> about base system).
>
> 8) There is no -STABLE supported branches in ports.
>
> All of this could be avoided (they know about tinderbox etc.) but just
> requires too much work, for their basic tasks like automated upgrade of
> entire system & packages or reinstall of needed packages.
>
> That's problems. Next, possible (gathered) solutions.
>
> It is obvious that current packages are not first-class citizens, in
> comparison with ports. They want ba able to run most machines without
> a compiling at all (BTW, our desktop users need the same), but setting
> build farms when there are many machine roles is hard.
>
> So packages need to be "equal in rights" in ports. The ports can have
> things like this:
>
> .if ${OSVERSION} < 700104 || ${OSVERSION} >= 900000
>
> or this:
>
> LIB_DEPENDS+= profiler.1:${PORTSDIR}/devel/google-perftools
>
> but packages are not so flexible, all you have is:
>
> @pkgdep perl-5.8.9_2
>
> skv@ proposed the following changes:
>
> * OPTIONS need radio-buttons (e.g. only one of MySQL, PostgreSQL,
> SQLite) and dialog(1) supports it.
>
> * Options must be included and installed to /var/db/ports/*/options
> (this will allow to rebuild installed binary pkg as port)
>
> * Info about options must be included to /var/db/pkg/*/+CONTENTS like:
>
> @option WITH_SSL
> @option WITHOUT_DEBUG
>
> * Dependencies must be able to specify needed OPTIONS, both required to
> set and required to be unset, somewaht like:
>
> RUN_DEPENDS+= foobar:${PORTSDIR}/devel/foobar:+SSL:-SQLITE
>
> This will allow to detect conflicts with installed packages with
> incompatible options.
>
> * For the package file names, introduce presets, e.g.:
>
> OPTIONS_PRESETS= default "+SSL:-DEBUG" \
> lite "-SSL:-DEBUG"
>
> And preset name could be put to pkg name (may be "" for default).
>
> * (internal) move away from CVS, rebalance to category-subcategory.
>
> These ideas in later discussion evolved to another additions. Let say we
> are able to use multiple repositories, where "repository" is a variant
> of /usr/ports tree and packages built from it. Then, each port allows to
> build several packages from it, with different options. Now, if we have
> a port called "softina" and user does
>
> pkg_add -r softina
>
> then dependency search must be made given needed options. So @pkgdep
> consists just of "softina" and versions like ">=1.1" and options. Also,
> if packages are equal in rights to ports, they need integrity/security
> check. So, package file name is now like:
>
> softina-1.2.3_1:repo.id:1312929890.tbz # chars allowed by windows
>
> Here is a repository id, just a hostname like "freebsd.org" for official
> ports, and an unique build id in that repo, though it were suggested
> that option preset name instead of that name will be better (because
> human-readable). And `pkg_add -r' fetches a single file
>
> softina.pkgmeta
>
> consisting of sections for each actual package file. Each section has
> a copy of what already is in .tbz file: name, comment, options,
> dependencies (and their versions and options). And one thing not present
> in .tbz - it's digital signature. Fetching pkg_add looks up local key
> for given repository id to check. Fetching .pkgmeta beforehand also
> allows to calculate if all needed dependencies are present in repo to
> not fail in the middle of 100 packages as current pkg_add may do. The
> signature is in another file and optional, so user could install the
> plain .tbz file manually (it still contains all needed information,
> .pkgmeta is only a copy except a signature).
>
> The one other thing which is also optional to @pkgdep is again
> repository id. This is to allow following situation:
>
> * company has 10 it's own internal projects
> * it also has 20 modified ports from original tree
> * internal pkgs depend on modified ports, not original
> * it's local port tree/pkg repo may hand only those, not full tree
>
> Then internal pkgs may be depended on modified ports to be not
> intermixed by mistake with original versions from official tree.
> Repository IDs are used for that, this is optional mechanism, though.
> End machines have two repositories in their config files, local and
> offical, and all works correct, and local repo doesn't need to be a full
> clone of ports tree.
>
> The problem of -devel ports could be solved by using a global knob like
> WITH_DEVEL (analogue of WITHOUT_X11), and options affect parts of
> pkg-plist. The solved problem: glib has perl in R-deps, just for one
> script, but this script is needed only for _build_ of dependent ports.
> Now, if you install irssi, you will always have glib and perl, but you
> don't need perl to run irssi. And irssi could have it's build dependence
> of glib:+DEVEL and run of just plain glib.
>
> Of course we don't want to split ports to perl, perl-base, perl-modules,
> perl-doc, etc. like in Debian, and options could be solution here - one
> port, several packages. Build farm may now build not one, but 2-3 common
> option presets.
>
> Here we go to another related problem, though - ports infrastructure.
> I've read 16 chapters of http://www.netbsd.org/docs/pkgsrc/ and found
> several interesting moments (let's concentrate on most close sibling of
> our ports, though e.g. slots in Gentoo and Arch Linux system are also
> worth looking too). They already have many of what we need, and since
> pkg_install/ports by Jordan Hubbard is common ancestor, it may be easier
> to port from them to us needed features.
>
> For example, there is problem generating plist for our porters. And what
> they have, a program to create port from distfile:
>
> | Run the program url2pkg, which will ask you for a URL. Enter
> | the URL of the distribution file (in most cases a .tar.gz file) and
> | watch how the basic ingredients of your package are created
> | automatically.
>
> Just fix oddities later manually, but saves from all boilerplate work!
>
> Next, skv@ said about radio-buttons, and thay also have it, in two
> favors: first with one from group always set, second allowin all clear:
> "Exactly one of the following gecko options is required"
> "At most one of the following database options may be selected"
>
> | PKG_OPTIONS_REQUIRED_GROUPS is like PKG_OPTIONS_OPTIONAL_GROUPS, but
> | building the packages will fail if no option from the group is
> | selected. PKG_OPTIONS_NONEMPTY_SETS is a list of names of sets of
> | options. At least one option from each set must be selected.
>
> The OPTIONS, however, are handled in different way:
>
> $ grep "PKG.*OPTION" mk.conf
> PKG_DEFAULT_OPTIONS= -arts -dvdread -esound
> PKG_OPTIONS.kdebase= debug -sasl
> PKG_OPTIONS.apache= suexec
>
> Dependencies also allow versions:
>
> BUILD_DEPENDS+= lua>=5.0:../../lang/lua
> DEPENDS+= screen-[0-9]*:../../misc/screen
> DEPENDS+= screen>=4.0:../../misc/screen
>
> Checksum files for packages exist on their own, and only those may be
> signed not the packages itself (an alternative to .pkgmeta approach
> described above).
>
> Another useful thing to borrow is patches/* separately from files/*
>
> The most visible thing in pkgsrc superior to ports, is buildlink3
> framework:
>
> | Buildlink is a framework in pkgsrc that controls what headers and
> | libraries are seen by a package's configure and build processes.
> | [...] Please note that the normal system header and library paths,
> | e.g. /usr/include, /usr/lib, etc., are always searched -- buildlink3
> | is designed to insulate the package build from non-system-supplied
> | software.
> | [...]
> | Some packages in pkgsrc install headers and libraries that coincide
> | with headers and libraries present in the base system. Aside from
> | a buildlink3.mk file, these packages should also include a
> | builtin.mk file that includes the necessary checks to decide whether
> | using the built-in software or the pkgsrc software is appropriate.
> | [...] When building packages, it's possible to choose whether to set
> | a global preference for using either the built-in (native) version
> | or the pkgsrc version of software to satisfy a dependency. This is
> | controlled by setting PREFER_PKGSRC and PREFER_NATIVE.
> | PREFER_PKGSRC= yes
> | PREFER_NATIVE= getopt skey tcp_wrappers
>
> There are more automation:
>
> | Up to now, the file PLIST, which contains a list of the files that
> | are installed by the package, is nearly empty. Run
> | bmake print-PLIST >PLIST
> | to generate a probably correct list.
>
> Yes, they rely on their derivative of BSD make, bmake, which it itself
> worth merging deifferencies to our make (for example, there is a clean
> and small alternative to autotools, mk-configure, using bmake and
> written in style of .include <bsd.prog.mk>). There may be other examples
> of userland tools worth porting from NetBSD to us instead of directly
> upstream, e.g. awk... but that's another story, let's continue pkg.
>
> Their developments of pkg_* tools contain facilities to implement a good
> package manager out-of-the-box, e.g. pkg_add there has flags:
>
> | -A Mark package as installed automatically, as dependency of
> | another package. You can use
> | pkg_admin set automatic=YES
> | to mark packages this way after installation, and
> | pkg_admin unset automatic
> | to remove the mark. If you pkg_add a package without
> | specifying -A after it had already been automatically
> | installed, the mark is removed.
> | -U Replace an already installed version from a package.
> | Implies -u.
> | -u If the package that's being installed is already installed,
> | an update is performed.
>
> These are crucial to effective binary package management.
>
> > 4. Base system, closely related with packages.
>
> The next in turn was concept of monolithic base system. The troubles
> with base system were:
>
> 1. To change the components of the base you may only recompile it with
> corresponding src.conf(5) options, but there is no track in base
> system which are actually installed now. You cannot binary upgrade
> a custom world, even if it is just unmodified -STABLE instead of
> -RELEASE.
>
> 2. Consequently, there is no way to check integrity (MD5 etc.) of any
> non-RELEASE variant (freebsd-update IDS is very limited).
>
> 3. No ties between base system and packages: who knows what previous
> admin has installed, you may have compiler or may not have, etc.
> Packages may silently broke if some part of base system SUDDENLY
> disappears, as no dependency information is recorded.
>
> 4. Base system is monolithic, so there is no easy way to replace one
> component with another - ports replacing base parts are hemorrhoids.
>
> So, they conclude, the base system concept should be eliminated and be
> split to bare kernel and gazillion of packages.
>
> But we all know what benefits base system gives to us: it is actually
> a *system* where all components are in concordance to each other, not
> just a bunch of packages. Also, if it will be all split, this will
> require *much more* efforts from our committers to keep everything in
> sync. And our resources (efforts) are limited.
>
> Actually, when you face two contradictory ways, all-or-nothing, both
> with pros and cons - you should select neither of them, but try to find
> something which will *synthesize* both of them. Such finding is an
> interesting engineering (often inventor) task. And dougb@ already said
> once that between base as-is and splitting all must be something middle.
> It's Cathedral vs Bazaar, after all, and our Cathedral should be updated
> and still use it's cathedral benefits. After all, NetBSD has proposal of
> syspkg in 2004, and still has older format - just because it is not BSD
> way, something new has to be invented.
>
> The most obvious solution is to split base not to ~500 packages, but to,
> say, ~50, and change boundaries. Why should freebsd.org developers place
> boundaries in packages between themselves? So most natural solution is
> to split packages out of base by the vendor criteria. Luckily, this work
> is *already done* to some extent. So this will be minimal efforts
> overhead, if any.
>
> Looking at /usr/src/sontrib and http://wiki.freebsd.org/ContribSoftware
> we can identify many of what could became a package. There can be
> different approaches to criteria "what is in base system":
>
> 1. Only what is done on freebsd.org: all contrib must go to pkgs.
>
> 2. Whose effective vendor is now *@*bsd.org: contrib from other BSDs may
> still live, and those with ceased upstream or renamed
> (non-conflicting with ports) soft like libbsdxml, too.
>
> 3. Axe out only the most odious contrib parts: BIND (as Peter said in
> archives, host/dig could be resurrected from Attic), sendmail (could
> be replaced by dma) and several others, presumably GCC/binutils & CVS
> (I've also heard about painful Kereberos interferencing with Samba).
>
> The latter is most probable :-) given known conservatism and parts
> inter-dependencies (openssl is required by freebsd-update, and it's not
> *@*bsd.org - already an exception). But it still needs clear definition
> of what base system is destined for.
>
> A philosophical observation. The more "fat" base system is, the more
> things are supposed about end user (the "WHEREs" in "SELECT"), so the
> more narrow target audience is. The more thin base system is, the more
> popular OS can be. You elitists may sleep well: FreeBSD will never be
> as popular of Linux whose "rod" is just kernel, not base sys.
>
> So each component of the base must be justified for the task, and for
> task we may be should define to which user FreeBSD is targeted. Let it
> be, say, task "the fresh setuped machine must be able to connect to
> network to download and install binary packages". Then you don't need
> GCC but you need editor to edit resolv.conf, less to view man pages,
> tcpdump to debug network problems, send-pr to report a bug about
> non-installed packages and thus a mail agent able to handle outgoing
> report mail and daily periodic scripts to root while you have sex with
> this (dma is suitable, sendmail is overkill). And so on.
>
> Axing out GCC to packages has another benefit: the newer GCC could be
> used, and base could be polished to be more compiler-agnostic (hello,
> clang). But this requires binary packages to have equal rights with
> ports, of course. A base without a compiler is not a dramatic - you
> already need some ports to do "make release", and doc team already began
> to split docs to packages, that's a right direction. For POLA reasons
> all axed out packages (and sendmail too, respect traditions) should be
> just packaged on CD1.
>
> There may be another approach, not package one, but it is still in a fog
> (and don't solve ports overriding base well). It's like the kernel and
> modules: monolithic base system is just as monolithic kernel before
> invention of modules - you the same way don't know what's in. Let's
> dream a little - imagine we have our own DVCS, combining benefits of
> centralized and distributed one, and not requiring splitting to multiple
> repos like git, but allowing to use any given subset of files (not dirs
> and subtrees as svn, *any* "inode"-based subset) from central repo
> (this one "more equal" from all equal distributed repos). Such system
> could be placed instead freebsd-update, binary updates of STABLE etc.
> go to special branch, and user updates only those files which he have
> on his system, VCS automatically tracks it.
>
> > 5. Too short major releases' cycle.
>
> I've once read a thread:
>
> From: ***@FreeBSD.org
> Subject: Schedule for releases
> Date: Tue, 21 Dec 2010 09:47:08 -0800
>
> where e.g. julian@ have said:
>
> | Generally a company wouldn't want to go through the pain of an OS
> | upgrade more than about once in three years and often it's longer..
> | It IS a pain for them.
>
> And many business people reported the same. And it is known many people
> are doing backports, testing etc., they should be motivated to give work
> back to FreeBSD. While it is more social problem, it is also a
> DVCS/bugtracker problem, but more rare major releases would still help
> on it's own.
>
> It is known why the current scheme was adopted: the 4.11/5.3 case,
> a horror. But between X.4 and X.11 there are even *several* intermediate
> choices. What happens today: many conservative users (or builders of
> products) consider -STABLE is really stable at the X.2 release. But just
> after than an (X+1).0 is forked and all developers' attention goes to
> new branch, X.3 and X.4 are not seriously developed. And due to
> timelines described above, many users will then upgrade right away to
> (X+2).Y, not (X+1). There are many 6.x and 7.x users in the wild, many
> of 7.x users will upgrade directly to 9.x skipping 8.x. Is this good?
> No.
>
> Aside of many branches receive not enought production testing, our
> committers must do MFCs to TWO branches, stable/7 and stable/8. While
> usualy having no real possibility to test properly. Nonsense.
>
> Is supporting two stable branches not using more efforts that it was in
> 4.x times? Not so? Still could be made better.
>
> Proposed solution: prolonging major releases fork time a little. Just to
> time so only one stable branch will exist. I hope increasing branch
> lifetime to one minor release will help: last will be not .4, but .5,
> and new .0 fork should occur at least after .3, not .2. We are not
> Ubuntu. I understand that pace of changes is high, 3 years for each .0
> may be unacceptable, but waht about at least 2.5 years? Not like 1.8
> years currently. Rememeber, .5 and even .6 is still far from .11.
>
> > 6. Bug tracker, unicode and other less important trivia.
>
> GNATS is too old and unfriendly e.g. to user attachments. It has only
> one adavantage: user is able to send report from CLI by mail without any
> registration. This is essential. May be the good alternative will be RT
> used at cpan.org (it also accepts by mail). Hopefully this will help
> a little to solving problems. Not sure, though - and unsolved bugs are
> also make users to go away from FreeBSD.
>
> Users also want properly working UTF-8 out-of-the-box. Not only console,
> but full collation support, etc.
>
> There was suggestion about automatic kldloading of drivers, but this
> work already began (for USB) in June - more matte of our documentation
> and press relations, huh.
>
> Installer. Must be more featureful and more user friendly :-) This is
> often may give negative first impression if installer was unable to do
> something even if system after this could work well.
>
> Other problems, like broken cvsup, are exist, but are not critical to
> Project's survival.
>
> > FreeBSD strengths to be concentrated on.
>
> The paragraph about virtualization above, as long as points below, are
> roughly translated words of one small business representative in Russia,
> who often acts as integrator.
>
> 1. BSD License. Very good for embedded vendors, we should be able to
> compile and work both base and ports without licenses requiring to
> open the sources. It would be good to not loose functionality without
> them.
>
> 2. Kernel features for storage (ZFS, HAST, GEOM). We need to go to
> NAS/SAN solutions niche while we have ability - it is still, because
> Solaris etc. in unknown state with Oracle, BTRFS still beta. We have
> about 1 year max. It would be nice to roll out "box" solution for a
> failover iSCSI storage (2 PCs with ZFS raids replicated by HAST and
> accessible by iSCSI with automatic role change).
>
> 3. Kernel features for complex network solutions (netgraph, carp, ipfw).
> The niche for routers & traffic analysis is still ours. It would be
> nice to take e.g. pfSense and agree with some vendor (Netgear,
> D-Link, etc) to put on sale hardware with FreeBSD inside.
>
> So these are main ways - embedded (NAS & routers). Other market is still
> not our, e.g. not an application server until there will be a killer-app
> for SCTP. May be also for a DB: Solaris was first recommended for
> PostgreSQL, with some efforts we may become the first. Of course, the
> main way - if some commercial company will offer FreeBSD.
>
> We still have some time, but almost no time. We need to take decisions
> right now.
>
>
> That's all for today. Thanks to everyone who has patience to carefully
> read this all entirely.
>
> --
> WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
> [Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org
> ][LJ:/nuclight]
>
> _______________________________________________
> freebsd-***@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-***@freebsd.org"
>



--
*Pirabarlen Cheenaramen *| $3|v3n* *
L'escalier, Mauritius


/*memory is like prison*/
(user==selven)?free(user):user=malloc(sizeof(brain));
P Save electricity & disk space. Cat this mail to >/dev/null 2>&1 after use.
Adrian Chadd
2011-08-23 06:49:52 UTC
Permalink
And that's been my experience too.

Linux users and advocates are very .. loud. FreeBSD users and
advocates tend not to be so loud.
Maybe that needs to change.


Adrian

On 23 August 2011 14:06, selven <***@gmail.com> wrote:
> Good post as well as pretty much scary. You mentionned about the purity of
> FreeBSD at some point, that's one of the reasons why i prefer FreeBSD
> (probably many of my friends who do work with it also), lately, with all
> those ubuntu fans, trying to get the company to keep using FreeBSD has
> become pretty much a hassle. Since in a technical board, with 10 people, 7
> out of 10 are ubuntu users, with votes one always loses, and the funny thing
> :s 7 out of 10 don't even know the difference between FreeBSD and linux,
> they just voice out ubuntu because 'you will end up in trouble finding
> people to maintain your stuffs if these 3 leaves' (weirdly we even fixes
> there buntu bugs :s ). This user base is really a huge problem.
>
> On Thu, Aug 18, 2011 at 3:10 AM, Vadim Goncharov <***@mail.ru>wrote:
>
>> Hi,
>>
>> I have bad news.
>>
>> A month ago techlead of Rambler's Mail department declared in his blog
>> that they begin migration from FreeBSD to Debian/Ubuntu. Comments to the
>> blog entry (there was much flame) revealed that search department of
>> Russian search engine #1 Yandex.com also plans to migrate their
>> search cluster - about 30,000 servers in several DCs (~60% of total
>> their servers - to Linux. The problem here is that both big companies
>> were using FreeBSD from the beginning (~1997), so migration will be
>> rather expensive.
>>
>> The official reasons (really semi-official, as these are individual
>> blogs), in short, were:
>>  * inadequate package manager and huge monolithic base system
>>  * lack of OpenVZ-like virtualization (need CPU limiting)
>>  * a FreeBSD marketshare forecast for 5 years
>>
>> Despite of several our committers working for them, the operating
>> expenses for FreeBSD are considered too high by these companies. They've
>> not confirmed, but the key problem is probably shortage of FreeBSD
>> specialists on the market to hire (e.g. Yandex has about 20 FreeBSD
>> admins and about 84 Linux admins, for all other their services and
>> 40% of servers). So this is problem of FreeBSD's too low
>> userbase/marketshare, caused, in turn, by other FreeBSD's problems.
>>
>> Given that they is just planning today, but not yet started, we have to
>> solve our problems or FreeBSD will effectively die[1]. Currently
>> https://ssl.netcraft.com/ssl-sample-report//CMatch/oscnt_all shows that
>> still 3% of servers are running FreeBSD. We are currently probably at
>> the tip of 'hype curve'[2] and then our userbase will begin to shrink,
>> and the task is to solve problems, so after hard time it will rise again
>> (hopefully more than it was before).
>>
>>   [1] 'Die' means shrinking userbase size to those of NetBSD/OpenBSD.
>>   [2] http://www.metodolog.ru/01493/2.gif
>>
>> Earlier this year in this list marcel@ have said about objective view:
>> http://lists.freebsd.org/pipermail/freebsd-arch/2011-January/010999.html
>> from the outside, not FreeBSD people. I have posted a call to Russian
>> community in my blog (http://nuclight.livejournal.com/128712.html) and
>> gathered a list of problems along with possible solutions to some of
>> them. The rest of this message is summary of them.
>>
>> In general, people sympathizing FreeBSD agree that there are no fatal
>> technical problems and that FreeBSD could compete with mainstream Linux.
>> That said, the 80/20 principle is in effect and 80% losed users for
>> FreeBSD are caused by 20% problems. The trouble here is that what
>> "outside" people view as considerable problems, we here inside FreeBSD
>> view as something insignificant ("do it yourself"). Thus 80% could be
>> achieved by 20% of work. I have sorted them in order of decreased
>> importance (priority):
>>
>>  1. Social problems of community (and marketing, docs, ...)
>>  2. Lack of drivers and virtualization.
>>  3. Ports and packages.
>>  4. Base system, closely related with packages.
>>  5. Too short major releases' cycle.
>>  6. Bug tracker, unicode and other less important trivia.
>>  (bonus) FreeBSD strengths to be concentrated on.
>>
>> Now all of them more detailed.
>>
>> > 1. Social (psychologic) problems of community (marketing, docs, ...).
>>
>> This is the most important one, because all technical problems are just
>> won't get solved because are even not viewed as problems. The FreeBSD
>> Project does not listen to users' needs. The typical response when poor
>> user want something is: "we don't need this, we won't change for you",
>> with "where are your patches?" at best. Then many users go out when see
>> such attitude toward them.
>>
>> The key points are:
>>
>>  1) *The competent user is not zealot*.
>>  2) The system is *for users, not for developers*.
>>
>> With first: when user sees the system costs too much time for him, and
>> that those problems won't get fixed and even considered such - he will
>> switch to another OS. This may mean that he is able to follow our advice
>> hoe to do some or another thing (e.g. to recompile all ports), but this
>> is unacceptable to him because this is too much maintenance (another
>> system by objectivity requires less work). Many businesses fall into
>> this category. They will not with FreeBSD by any price just because they
>> love OS. Unlike ourselves.
>>
>> With second: that's simple and not simple. It is simple in that by
>> nature each person don't make a work just for himself but for all
>> others, who are now "users" to him, too - just by induction that's not
>> for developers only. It is not simple due to question "Why do we need
>> those who don't contribute anything back to us?" which random committer
>> has right to ask. The answer, in short, is: there tasks which could be
>> only done by large groups of people, e.g. big corporations. For
>> corporations to invest and contribute back - the system must be popular
>> enough. To be popular enough means there must be a big amount of users
>> who is not contributing anything. It is useful in itself, though, that
>> some of those users, say 1%, will become contributors, that is, absolute
>> number of our developers will also benefit from FreeBSD being much more
>> popular.
>>
>> There are opinions in our community like:
>>
>>  | > Personally I'd like to think that that we write an OS for users.
>>  |
>>  | We write an OS for the people who can and will use an OS written by
>>  | us.
>>
>>  | FreeBSD is whatever its developers make it be
>>
>> These are wrong and harmful nowadays. The world has changed. We have to
>> admit it or we will die. We have to admit mistakes and *change* some of
>> the ways we're doing things: any answer like "I don't agree, we don't
>> need these users/features/etc., we *won't* do this for someone" - is
>> just another step to grave.
>>
>> Of course that doesn't mean to do everything - we often have not enough
>> time/resources to do. But that's another question and should not be
>> mixed with attitude - "it's good but we have no resources, will you do?"
>> vs "we don't need this, go away" (that's not only about features but
>> about keeping something too).
>>
>> So ("system is for users") we need to (re)define who our user is. I view
>> the current situation as following:
>>
>>       100% .---------------.       The stratification of overall
>>            |    Ubuntu     |       our userbase. Areas are:
>>            |    target     | 6
>>            |   audience    |       1 - official developers
>>  expand -> |---------------|
>>  to here    | not our, but  |       2 - actively participating and
>>            |   competent   | 5         sending patches, contributors
>>            |     users     |           and other "zealots" (whose
>>            |===============|           "soul is with FreeBSD")
>>            |announce@ only | 4
>>   involved |---------------|       3 - not so active but discussing
>>            | subscribed to |           in mail lists, patches go
>>            |  our mailing  | 3         sometimes
>>            |    lists      |
>>  committed |- - - - - - - -|       4 - busy with work to read lists
>>            |               | 2
>>            |_______________|       5 - can use, but costs are now high
>>            | *@freebsd.org | 1
>>         0% `---------------'       6 - we'll never want them
>>
>> The terms "involved" and "committed" were taken from
>> http://en.wikipedia.org/wiki/The_Chicken_and_the_Pig for those who are
>> "at the heart" of the community, at "periphery" and all others.
>> Currently, only those in (1) and partially (2) are listened to,
>> sometimes with "call for ..." in (3). Meanwhile, the most important of
>> our users, who are using FreeBSD in production, who are busy with real
>> work in real world, are in (4) and sometimes (5). Those are largely
>> ignored by the Project - even messages to announce@ last years are less
>> about important events and calls for volunteers/money.
>>
>> The other social problem is lack of companies which offer commercial
>> support of FreeBSD like RedHat does.
>>
>> As a possible solution to find out what user needs are, and to
>> compensate the fact that not all users in (4) and (5) care enough about
>> our principles and spirit, I propose a system for "weighted democracy".
>> This is a voting system (I could implement it), say, there is a mail
>> ***@freebsd.org to which users send filled in vote forms, with
>> selected answers from a survey published in ***@.
>>
>> The system has a database where users are recorded given their FreeBSD
>> activity in mail lists etc., and votes are summed as follows:
>>
>>  + 1.00 vote for anyone not in database (not involved to FreeBSD)
>>  + a decimal logarithm of number of posts to mail lists (2 votes for 100
>>   posts, 3 votes for 1000 posts)
>>  + a binary logarithm of num PRs in GNATS db (6 votes for 64 send-pr's)
>>  + a proportion (say, N/2) of entries for this person in "svn log" (e.g.
>>   in "Submitted by:")
>>  + an assigned (by core@) number of votes in special exceptional DB (for
>>   corporation and the like)
>>
>> The system then presents results for each answer: 1) how many users
>> voted, 2) how many votes summed.
>>
>> This is by no mean to measure "exact contribution", but to defend from
>> anonymous users and trolls who not care about amount of work developers
>> will need to. The results are viewed as a feedback to core team, not as
>> a final decision - that's all for what marketing is solely exist. There
>> no adequate feedback from users to developers currently at all -
>> individual posts in mail lists are too small for statistics (what about
>> ministat(1) for users, huh?..).
>>
>> What is also in this part? Documentation. No, not in that sense. The
>> observations show that while there are described solutions to problems
>> in system, it's difficult for users to find it. It's somehow organized
>> or misorganized that solution is not intuitive for them (e.g. someone
>> migrating from Windows complained that it was difficult to find 'simply
>> how to format a flash drive' in Handbook). I don't know how to handle
>> this properly. May be catalogues with Best Practices howto's pointing to
>> exact sections of Handbook, FAQ, articles etc.? May be better search
>> mechanisms?..
>>
>> And the last here about too much conservatism and rigidness in our camp.
>> As one of the opponents said (roughly translated):
>>
>>  | FreeBSD, historically, was good system, let's say, "valid system
>>  | for solid people". Pureness, strictness, etc. The base system is
>>  | consequence of this approach. The trouble is, that in 2011 nobody
>>  | needs pureness and strictness. Customers need transparency and fast
>>  | reaction to their requests. If there is no transparency and speed,
>>  | you get CentOS 6 (just released, at last). Or FreeBSD (Gentoo,
>>  | Solaris, you name it).
>>
>> I don't agree that those certainly contradicts each other, but we
>> definitely need to change, er, something. And don't keep something just
>> because it is tradition, if that tradition has no more technical reasons
>> for our users. Let's shift conservatism to another field where it is
>> really needed (e.g. legacy support and other examples below).
>>
>> Finally, two more quotes from the ***@freebsd.org archives of last
>> 2 years:
>>
>>  | From: Cyrille Lefevre <cyrille.lefevre-***@laposte.net>
>>  | [...] however, you answer remember me why I quit FreeBSD, cease
>>  | fire, courtesy is the key
>>
>> and
>>
>>  | From: Julian H. Stacey
>>  | Though I & many others have sent lots of send-pr, contributing even
>>  | a spelling correction to FreeBSD is much harder than to e.g.
>>  | http://wikipedia.org
>>
>> The threshold of entering to FreeBSD is too high and should be lowered.
>> I can confirm the last quote on my own example, 2 months ago. I've
>> submitted a patch to ipfw, adding call/return rule actions. It allows
>> to organize rules in somewhat like pf anchors, and, more importantly,
>> iptables chains, enabling FreeBSD ipfw to compete with Linux at least
>> partially in this sphere. The patch wasn't taken in maillists, I had
>> to push it in IRC, and push hard: the whole needed by many big users
>> thing was deferred (and still not MFCed to 8.x) just because some
>> #define's and printf's were Not So Proper & Right Way! F*cking shame.
>>
>> > 2. Lack of drivers and poor guest virtualization.
>>
>> It is known that FreeBSD supports less hardware than competitors. It is,
>> however, a matter of popularity - the more system will have users, the
>> more drivers will be created by 3rd parties, so we cannot directly
>> affect this. It's kind of exclusive circle.
>>
>> But there is one area - virtualization - without supporting it the
>> FreeBSD niche will collapse very fast. It is necessary to say that it is
>> about guest (para-)virtualization only, not host mode. Host mode market
>> is already lost for FreeBSD for quite some time, may be something in the
>> future, but today it will waste of resources. What is needed here is
>> just analogue to OpenVZ (and jails/rctl already done more than half of
>> the work here).
>>
>> And in guest mode FreeBSD *urgently needs* working drivers/utilities for
>> all common suits, Citrix XenServer, VMWare vSphere (ESXi), Xen*,
>> Microsoft Hyper-V, etc. This must be the primary direction for
>> developers' forces and FreeBSD Foundation's money. We have may be about
>> 1 year here. Why?  Because of cloud computing and VPS/VDS. It's no
>> matter what OS runs hoster if clients will use FreeBSD and we still have
>> users. I've been already asked by a customer for which I wrote
>> a non-portable kqueue-based daemon to rewrite for Linux because they
>> want to go for Amazon EC2 (it's cheaper as only used resources are
>> accounted) and FreeBSD there has still many in ISSUES scaring them...
>>
>> > 3. Ports and packages.
>>
>> What was the main problems with large-scale installations of FreeBSD in
>> that businesses? In short, that binary packages are not equal in rights
>> to ports, and that complicates things (i.e. requires too much work) when
>> one have many (> 10) servers. This was listed to me as:
>>
>> 1) No pkg and pkg-devel versions. The -devel version is headers, static
>>   libs, programmer examples, etc. not needed in production (we could
>>   say this part is what is actually depended on in B-deps).
>>
>> 2) Package name is dependent on options, so packages with another opts
>>   don't work well when dependencies are rebuilt.
>>
>> 3) Conflicts: no way to have apache13 and apache22 the same time.
>>
>> 4) No dependence on base system. You may cut out something, recompile
>>   world, deploy it on cluster and just then see that some packages are
>>   now don't work.
>>
>> 5) Dependencies are badly designed. No version ranges in dependencies,
>>   no alternative packages, no priorities in package search.
>>
>> 6) Update problems. The version is just coded into name of package, and
>>   dependencies are on the entire name, so there are situations when
>>   install/upgrade of just one package may require rebuild 3/4 of all
>>   pkgs. You cannot easiy modify installed package without editing pkgdb
>>   manually. It is impossible to upgrade/replace package by out of the
>>   box tools.
>>
>> 7) Base system has no "out of the box" tools for package upgrade. Our
>>   business opponents say this the least problem as one can always
>>   install portupgrade, but conclude that overall base system concept
>>   does not play well with full-featured packages (see also next part
>>   about base system).
>>
>> 8) There is no -STABLE supported branches in ports.
>>
>> All of this could be avoided (they know about tinderbox etc.) but just
>> requires too much work, for their basic tasks like automated upgrade of
>> entire system & packages or reinstall of needed packages.
>>
>> That's problems. Next, possible (gathered) solutions.
>>
>> It is obvious that current packages are not first-class citizens, in
>> comparison with ports. They want ba able to run most machines without
>> a compiling at all (BTW, our desktop users need the same), but setting
>> build farms when there are many machine roles is hard.
>>
>> So packages need to be "equal in rights" in ports. The ports can have
>> things like this:
>>
>>  .if ${OSVERSION} < 700104 || ${OSVERSION} >= 900000
>>
>> or this:
>>
>>  LIB_DEPENDS+= profiler.1:${PORTSDIR}/devel/google-perftools
>>
>> but packages are not so flexible, all you have is:
>>
>>  @pkgdep perl-5.8.9_2
>>
>> skv@ proposed the following changes:
>>
>>  * OPTIONS need radio-buttons (e.g. only one of MySQL, PostgreSQL,
>>   SQLite) and dialog(1) supports it.
>>
>>  * Options must be included and installed to /var/db/ports/*/options
>>   (this will allow to rebuild installed binary pkg as port)
>>
>>  * Info about options must be included to /var/db/pkg/*/+CONTENTS like:
>>
>>     @option WITH_SSL
>>     @option WITHOUT_DEBUG
>>
>>  * Dependencies must be able to specify needed OPTIONS, both required to
>>   set and required to be unset, somewaht like:
>>
>>     RUN_DEPENDS+= foobar:${PORTSDIR}/devel/foobar:+SSL:-SQLITE
>>
>>   This will allow to detect conflicts with installed packages with
>>   incompatible options.
>>
>>  * For the package file names, introduce presets, e.g.:
>>
>>     OPTIONS_PRESETS= default "+SSL:-DEBUG" \
>>                      lite "-SSL:-DEBUG"
>>
>>   And preset name could be put to pkg name (may be "" for default).
>>
>>  * (internal) move away from CVS, rebalance to category-subcategory.
>>
>> These ideas in later discussion evolved to another additions. Let say we
>> are able to use multiple repositories, where "repository" is a variant
>> of /usr/ports tree and packages built from it. Then, each port allows to
>> build several packages from it, with different options. Now, if we have
>> a port called "softina" and user does
>>
>>  pkg_add -r softina
>>
>> then dependency search must be made given needed options. So @pkgdep
>> consists just of "softina" and versions like ">=1.1" and options. Also,
>> if packages are equal in rights to ports, they need integrity/security
>> check. So, package file name is now like:
>>
>>  softina-1.2.3_1:repo.id:1312929890.tbz    # chars allowed by windows
>>
>> Here is a repository id, just a hostname like "freebsd.org" for official
>> ports, and an unique build id in that repo, though it were suggested
>> that option preset name instead of that name will be better (because
>> human-readable). And `pkg_add -r' fetches a single file
>>
>>  softina.pkgmeta
>>
>> consisting of sections for each actual package file. Each section has
>> a copy of what already is in .tbz file: name, comment, options,
>> dependencies (and their versions and options). And one thing not present
>> in .tbz - it's digital signature. Fetching pkg_add looks up local key
>> for given repository id to check. Fetching .pkgmeta beforehand also
>> allows to calculate if all needed dependencies are present in repo to
>> not fail in the middle of 100 packages as current pkg_add may do. The
>> signature is in another file and optional, so user could install the
>> plain .tbz file manually (it still contains all needed information,
>> .pkgmeta is only a copy except a signature).
>>
>> The one other thing which is also optional to @pkgdep is again
>> repository id. This is to allow following situation:
>>
>>  * company has 10 it's own internal projects
>>  * it also has 20 modified ports from original tree
>>  * internal pkgs depend on modified ports, not original
>>  * it's local port tree/pkg repo may hand only those, not full tree
>>
>> Then internal pkgs may be depended on modified ports to be not
>> intermixed by mistake with original versions from official tree.
>> Repository IDs are used for that, this is optional mechanism, though.
>> End machines have two repositories in their config files, local and
>> offical, and all works correct, and local repo doesn't need to be a full
>> clone of ports tree.
>>
>> The problem of -devel ports could be solved by using a global knob like
>> WITH_DEVEL (analogue of WITHOUT_X11), and options affect parts of
>> pkg-plist. The solved problem: glib has perl in R-deps, just for one
>> script, but this script is needed only for _build_ of dependent ports.
>> Now, if you install irssi, you will always have glib and perl, but you
>> don't need perl to run irssi. And irssi could have it's build dependence
>> of glib:+DEVEL and run of just plain glib.
>>
>> Of course we don't want to split ports to perl, perl-base, perl-modules,
>> perl-doc, etc. like in Debian, and options could be solution here - one
>> port, several packages. Build farm may now build not one, but 2-3 common
>> option presets.
>>
>> Here we go to another related problem, though - ports infrastructure.
>> I've read 16 chapters of http://www.netbsd.org/docs/pkgsrc/ and found
>> several interesting moments (let's concentrate on most close sibling of
>> our ports, though e.g. slots in Gentoo and Arch Linux system are also
>> worth looking too). They already have many of what we need, and since
>> pkg_install/ports by Jordan Hubbard is common ancestor, it may be easier
>> to port from them to us needed features.
>>
>> For example, there is problem generating plist for our porters. And what
>> they have, a program to create port from distfile:
>>
>>  | Run the program url2pkg, which will ask you for a URL. Enter
>>  | the URL of the distribution file (in most cases a .tar.gz file) and
>>  | watch how the basic ingredients of your package are created
>>  | automatically.
>>
>> Just fix oddities later manually, but saves from all boilerplate work!
>>
>> Next, skv@ said about radio-buttons, and thay also have it, in two
>> favors: first with one from group always set, second allowin all clear:
>>  "Exactly one of the following gecko options is required"
>>  "At most one of the following database options may be selected"
>>
>>  | PKG_OPTIONS_REQUIRED_GROUPS is like PKG_OPTIONS_OPTIONAL_GROUPS, but
>>  | building the packages will fail if no option from the group is
>>  | selected. PKG_OPTIONS_NONEMPTY_SETS is a list of names of sets of
>>  | options. At least one option from each set must be selected.
>>
>> The OPTIONS, however, are handled in different way:
>>
>>  $ grep "PKG.*OPTION" mk.conf
>>  PKG_DEFAULT_OPTIONS=    -arts -dvdread -esound
>>  PKG_OPTIONS.kdebase=    debug -sasl
>>  PKG_OPTIONS.apache=     suexec
>>
>> Dependencies also allow versions:
>>
>>  BUILD_DEPENDS+= lua>=5.0:../../lang/lua
>>  DEPENDS+=       screen-[0-9]*:../../misc/screen
>>  DEPENDS+=       screen>=4.0:../../misc/screen
>>
>> Checksum files for packages exist on their own, and only those may be
>> signed not the packages itself (an alternative to .pkgmeta approach
>> described above).
>>
>> Another useful thing to borrow is patches/* separately from files/*
>>
>> The most visible thing in pkgsrc superior to ports, is buildlink3
>> framework:
>>
>>  | Buildlink is a framework in pkgsrc that controls what headers and
>>  | libraries are seen by a package's configure and build processes.
>>  | [...] Please note that the normal system header and library paths,
>>  | e.g. /usr/include, /usr/lib, etc., are always searched -- buildlink3
>>  | is designed to insulate the package build from non-system-supplied
>>  | software.
>>  | [...]
>>  | Some packages in pkgsrc install headers and libraries that coincide
>>  | with headers and libraries present in the base system. Aside from
>>  | a buildlink3.mk file, these packages should also include a
>>  | builtin.mk file that includes the necessary checks to decide whether
>>  | using the built-in software or the pkgsrc software is appropriate.
>>  | [...] When building packages, it's possible to choose whether to set
>>  | a global preference for using either the built-in (native) version
>>  | or the pkgsrc version of software to satisfy a dependency. This is
>>  | controlled by setting PREFER_PKGSRC and PREFER_NATIVE.
>>  | PREFER_PKGSRC=  yes
>>  | PREFER_NATIVE=  getopt skey tcp_wrappers
>>
>> There are more automation:
>>
>>  | Up to now, the file PLIST, which contains a list of the files that
>>  | are installed by the package, is nearly empty. Run
>>  | bmake print-PLIST >PLIST
>>  | to generate a probably correct list.
>>
>> Yes, they rely on their derivative of BSD make, bmake, which it itself
>> worth merging deifferencies to our make (for example, there is a clean
>> and small alternative to autotools, mk-configure, using bmake and
>> written in style of .include <bsd.prog.mk>). There may be other examples
>> of userland tools worth porting from NetBSD to us instead of directly
>> upstream, e.g. awk... but that's another story, let's continue pkg.
>>
>> Their developments of pkg_* tools contain facilities to implement a good
>> package manager out-of-the-box, e.g. pkg_add there has flags:
>>
>>  | -A      Mark package as installed automatically, as dependency of
>>  |         another package.  You can use
>>  |                pkg_admin set automatic=YES
>>  |         to mark packages this way after installation, and
>>  |                pkg_admin unset automatic
>>  |         to remove the mark.  If you pkg_add a package without
>>  |         specifying  -A after it had already been automatically
>>  |         installed, the mark is removed.
>>  | -U      Replace an already installed version from a package.
>>  |         Implies -u.
>>  | -u      If the package that's being installed is already installed,
>>  |         an update is performed.
>>
>> These are crucial to effective binary package management.
>>
>> > 4. Base system, closely related with packages.
>>
>> The next in turn was concept of monolithic base system. The troubles
>> with base system were:
>>
>> 1. To change the components of the base you may only recompile it with
>>   corresponding src.conf(5) options, but there is no track in base
>>   system which are actually installed now. You cannot binary upgrade
>>   a custom world, even if it is just unmodified -STABLE instead of
>>   -RELEASE.
>>
>> 2. Consequently, there is no way to check integrity (MD5 etc.) of any
>>   non-RELEASE variant (freebsd-update IDS is very limited).
>>
>> 3. No ties between base system and packages: who knows what previous
>>   admin has installed, you may have compiler or may not have, etc.
>>   Packages may silently broke if some part of base system SUDDENLY
>>   disappears, as no dependency information is recorded.
>>
>> 4. Base system is monolithic, so there is no easy way to replace one
>>   component with another - ports replacing base parts are hemorrhoids.
>>
>> So, they conclude, the base system concept should be eliminated and be
>> split to bare kernel and gazillion of packages.
>>
>> But we all know what benefits base system gives to us: it is actually
>> a *system* where all components are in concordance to each other, not
>> just a bunch of packages. Also, if it will be all split, this will
>> require *much more* efforts from our committers to keep everything in
>> sync. And our resources (efforts) are limited.
>>
>> Actually, when you face two contradictory ways, all-or-nothing, both
>> with pros and cons - you should select neither of them, but try to find
>> something which will *synthesize* both of them. Such finding is an
>> interesting engineering (often inventor) task. And dougb@ already said
>> once that between base as-is and splitting all must be something middle.
>> It's Cathedral vs Bazaar, after all, and our Cathedral should be updated
>> and still use it's cathedral benefits. After all, NetBSD has proposal of
>> syspkg in 2004, and still has older format - just because it is not BSD
>> way, something new has to be invented.
>>
>> The most obvious solution is to split base not to ~500 packages, but to,
>> say, ~50, and change boundaries. Why should freebsd.org developers place
>> boundaries in packages between themselves? So most natural solution is
>> to split packages out of base by the vendor criteria. Luckily, this work
>> is *already done* to some extent. So this will be minimal efforts
>> overhead, if any.
>>
>> Looking at /usr/src/sontrib and http://wiki.freebsd.org/ContribSoftware
>> we can identify many of what could became a package. There can be
>> different approaches to criteria "what is in base system":
>>
>> 1. Only what is done on freebsd.org: all contrib must go to pkgs.
>>
>> 2. Whose effective vendor is now *@*bsd.org: contrib from other BSDs may
>>   still live, and those with ceased upstream or renamed
>>   (non-conflicting with ports) soft like libbsdxml, too.
>>
>> 3. Axe out only the most odious contrib parts: BIND (as Peter said in
>>   archives, host/dig could be resurrected from Attic), sendmail (could
>>   be replaced by dma) and several others, presumably GCC/binutils & CVS
>>   (I've also heard about painful Kereberos interferencing with Samba).
>>
>> The latter is most probable :-) given known conservatism and parts
>> inter-dependencies (openssl is required by freebsd-update, and it's not
>> *@*bsd.org - already an exception). But it still needs clear definition
>> of what base system is destined for.
>>
>>  A philosophical observation. The more "fat" base system is, the more
>>  things are supposed about end user (the "WHEREs" in "SELECT"), so the
>>  more narrow target audience is. The more thin base system is, the more
>>  popular OS can be. You elitists may sleep well: FreeBSD will never be
>>  as popular of Linux whose "rod" is just kernel, not base sys.
>>
>> So each component of the base must be justified for the task, and for
>> task we may be should define to which user FreeBSD is targeted. Let it
>> be, say, task "the fresh setuped machine must be able to connect to
>> network to download and install binary packages". Then you don't need
>> GCC but you need editor to edit resolv.conf, less to view man pages,
>> tcpdump to debug network problems, send-pr to report a bug about
>> non-installed packages and thus a mail agent able to handle outgoing
>> report mail and daily periodic scripts to root while you have sex with
>> this (dma is suitable, sendmail is overkill). And so on.
>>
>> Axing out GCC to packages has another benefit: the newer GCC could be
>> used, and base could be polished to be more compiler-agnostic (hello,
>> clang). But this requires binary packages to have equal rights with
>> ports, of course. A base without a compiler is not a dramatic - you
>> already need some ports to do "make release", and doc team already began
>> to split docs to packages, that's a right direction. For POLA reasons
>> all axed out packages (and sendmail too, respect traditions) should be
>> just packaged on CD1.
>>
>> There may be another approach, not package one, but it is still in a fog
>> (and don't solve ports overriding base well). It's like the kernel and
>> modules: monolithic base system is just as monolithic kernel before
>> invention of modules - you the same way don't know what's in. Let's
>> dream a little - imagine we have our own DVCS, combining benefits of
>> centralized and distributed one, and not requiring splitting to multiple
>> repos like git, but allowing to use any given subset of files (not dirs
>> and subtrees as svn, *any* "inode"-based subset) from central repo
>> (this one "more equal" from all equal distributed repos). Such system
>> could be placed instead freebsd-update, binary updates of STABLE etc.
>> go to special branch, and user updates only those files which he have
>> on his system, VCS automatically tracks it.
>>
>> > 5. Too short major releases' cycle.
>>
>> I've once read a thread:
>>
>>  From: ***@FreeBSD.org
>>  Subject: Schedule for releases
>>  Date: Tue, 21 Dec 2010 09:47:08 -0800
>>
>> where e.g. julian@ have said:
>>
>>  | Generally a company wouldn't want to go through the pain of an OS
>>  | upgrade more than about once in three years and often it's longer..
>>  | It IS a pain for them.
>>
>> And many business people reported the same. And it is known many people
>> are doing backports, testing etc., they should be motivated to give work
>> back to FreeBSD. While it is more social problem, it is also a
>> DVCS/bugtracker problem, but more rare major releases would still help
>> on it's own.
>>
>> It is known why the current scheme was adopted: the 4.11/5.3 case,
>> a horror. But between X.4 and X.11 there are even *several* intermediate
>> choices. What happens today: many conservative users (or builders of
>> products) consider -STABLE is really stable at the X.2 release. But just
>> after than an (X+1).0 is forked and all developers' attention goes to
>> new branch, X.3 and X.4 are not seriously developed. And due to
>> timelines described above, many users will then upgrade right away to
>> (X+2).Y, not (X+1). There are many 6.x and 7.x users in the wild, many
>> of 7.x users will upgrade directly to 9.x skipping 8.x. Is this good?
>> No.
>>
>> Aside of many branches receive not enought production testing, our
>> committers must do MFCs to TWO branches, stable/7 and stable/8. While
>> usualy having no real possibility to test properly. Nonsense.
>>
>> Is supporting two stable branches not using more efforts that it was in
>> 4.x times? Not so? Still could be made better.
>>
>> Proposed solution: prolonging major releases fork time a little. Just to
>> time so only one stable branch will exist. I hope increasing branch
>> lifetime to one minor release will help: last will be not .4, but .5,
>> and new .0 fork should occur at least after .3, not .2. We are not
>> Ubuntu. I understand that pace of changes is high, 3 years for each .0
>> may be unacceptable, but waht about at least 2.5 years? Not like 1.8
>> years currently. Rememeber, .5 and even .6 is still far from .11.
>>
>> > 6. Bug tracker, unicode and other less important trivia.
>>
>> GNATS is too old and unfriendly e.g. to user attachments. It has only
>> one adavantage: user is able to send report from CLI by mail without any
>> registration. This is essential. May be the good alternative will be RT
>> used at cpan.org (it also accepts by mail). Hopefully this will help
>> a little to solving problems. Not sure, though - and unsolved bugs are
>> also make users to go away from FreeBSD.
>>
>> Users also want properly working UTF-8 out-of-the-box. Not only console,
>> but full collation support, etc.
>>
>> There was suggestion about automatic kldloading of drivers, but this
>> work already began (for USB) in June - more matte of our documentation
>> and press relations, huh.
>>
>> Installer. Must be more featureful and more user friendly :-) This is
>> often may give negative first impression if installer was unable to do
>> something even if system after this could work well.
>>
>> Other problems, like broken cvsup, are exist, but are not critical to
>> Project's survival.
>>
>> > FreeBSD strengths to be concentrated on.
>>
>> The paragraph about virtualization above, as long as points below, are
>> roughly translated words of one small business representative in Russia,
>> who often acts as integrator.
>>
>> 1. BSD License. Very good for embedded vendors, we should be able to
>>   compile and work both base and ports without licenses requiring to
>>   open the sources. It would be good to not loose functionality without
>>   them.
>>
>> 2. Kernel features for storage (ZFS, HAST, GEOM). We need to go to
>>   NAS/SAN solutions niche while we have ability - it is still, because
>>   Solaris etc. in unknown state with Oracle, BTRFS still beta. We have
>>   about 1 year max. It would be nice to roll out "box" solution for a
>>   failover iSCSI storage (2 PCs with ZFS raids replicated by HAST and
>>   accessible by iSCSI with automatic role change).
>>
>> 3. Kernel features for complex network solutions (netgraph, carp, ipfw).
>>   The niche for routers & traffic analysis is still ours. It would be
>>   nice to take e.g. pfSense and agree with some vendor (Netgear,
>>   D-Link, etc) to put on sale hardware with FreeBSD inside.
>>
>> So these are main ways - embedded (NAS & routers). Other market is still
>> not our, e.g. not an application server until there will be a killer-app
>> for SCTP. May be also for a DB: Solaris was first recommended for
>> PostgreSQL, with some efforts we may become the first. Of course, the
>> main way - if some commercial company will offer FreeBSD.
>>
>> We still have some time, but almost no time. We need to take decisions
>> right now.
>>
>>
>> That's all for today. Thanks to everyone who has patience to carefully
>> read this all entirely.
>>
>> --
>> WBR, Vadim Goncharov. ICQ#166852181       mailto:***@mail.ru
>> [Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org
>> ][LJ:/nuclight]
>>
>> _______________________________________________
>> freebsd-***@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
>> To unsubscribe, send any mail to "freebsd-arch-***@freebsd.org"
>>
>
>
>
> --
> *Pirabarlen Cheenaramen *| $3|v3n* *
> L'escalier, Mauritius
>
>
> /*memory is like prison*/
> (user==selven)?free(user):user=malloc(sizeof(brain));
> P Save electricity & disk space. Cat this mail to >/dev/null 2>&1 after use.
> _______________________________________________
> freebsd-***@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-***@freebsd.org"
>
Garrett Cooper
2011-08-23 06:54:35 UTC
Permalink
On Mon, Aug 22, 2011 at 11:49 PM, Adrian Chadd <***@freebsd.org> wrote:
> And that's been my experience too.
>
> Linux users and advocates are very .. loud. FreeBSD users and
> advocates tend not to be so loud.
> Maybe that needs to change.

I also personally think that companies that use FreeBSD need to be
louder as well. There is Isilon, iXsystems, Juniper, etc, but there
are other companies that don't take a more active role in
acknowledging that they run FreeBSD under the hood which only
detriments FreeBSD's overall mindshare.
It's funny how certain companies like Dell, IBM, etc choose to be
so loud about their active Linux support -- so why should more
companies using FreeBSD also not take suit?
Thanks,
-Garrett
Vadim Goncharov
2011-08-25 15:42:20 UTC
Permalink
Hi Garrett Cooper!

On Mon, 22 Aug 2011 23:54:35 -0700; Garrett Cooper wrote about 'Re: FreeBSD problems and preliminary ways to solve':

>> And that's been my experience too.
>>
>> Linux users and advocates are very .. loud. FreeBSD users and
>> advocates tend not to be so loud.
>> Maybe that needs to change.
> I also personally think that companies that use FreeBSD need to be
> louder as well. There is Isilon, iXsystems, Juniper, etc, but there
> are other companies that don't take a more active role in
> acknowledging that they run FreeBSD under the hood which only
> detriments FreeBSD's overall mindshare.
> It's funny how certain companies like Dell, IBM, etc choose to be
> so loud about their active Linux support -- so why should more
> companies using FreeBSD also not take suit?

So, you think. You think right. I agree, many others will agree.

But what then?

That's just words in arch@ - a little place for developers. Not much
heared outside. Words, not actions.

So, who will go and tell to that companies they should be loud?..

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]
Julian H. Stacey
2011-08-25 16:35:26 UTC
Permalink
> That's just words in arch@ - a little place for developers. Not much
> heared outside. Words, not actions.
>
> So, who will go and tell to that companies they should be loud?..

There's a chance to be loud & advertise in 3 weeks time:
http://lists.freebsd.org/pipermail/freebsd-advocacy/2011-August/004133.html

But I'll omit detail here, to avoid distracting beyond list remit boundary.

arch@
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
... discussion of FreeBSD architecture. ...

advocacy@
http://lists.freebsd.org/mailman/listinfo/freebsd-advocacy
Furthering the Use of FreeBSD
Share ideas and plan to increase the number of companies and
individuals using FreeBSD

Cheers,
Julian
--
Julian Stacey, BSD Unix Linux C Sys Eng Consultants Munich http://berklix.com
Reply below, not above; Indent with "> "; Cumulative like a play script.
Format: Plain text. Not HTML, multipart/alternative, base64, quoted-printable.
Diane Bruce
2011-08-24 02:02:21 UTC
Permalink
On Tue, Aug 23, 2011 at 02:49:52PM +0800, Adrian Chadd wrote:
> And that's been my experience too.
>
> Linux users and advocates are very .. loud. FreeBSD users and
> advocates tend not to be so loud.
> Maybe that needs to change.

I've been saying that for a while.

- Diane
--
- ***@FreeBSD.org ***@db.net http://www.db.net/~db
Why leave money to our children if we don't leave them the Earth?
Vadim Goncharov
2011-08-25 15:34:19 UTC
Permalink
Hi selven!

On Tue, 23 Aug 2011 10:06:24 +0400; selven wrote about 'Re: FreeBSD problems and preliminary ways to solve':

> Good post as well as pretty much scary. You mentionned about the purity of
> FreeBSD at some point, that's one of the reasons why i prefer FreeBSD
> (probably many of my friends who do work with it also),

I've also said that purity doesn't always in conflict with newer world
requirements. We can have both, it is solvable.

> Since in a technical board, with 10 people, 7
> out of 10 are ubuntu users, with votes one always loses, and the funny thing
> :s 7 out of 10 don't even know the difference between FreeBSD and linux,
> they just voice out ubuntu because 'you will end up in trouble finding
> people to maintain your stuffs if these 3 leaves' (weirdly we even fixes
> there buntu bugs :s ). This user base is really a huge problem.

The real problem here is that they're saying "trouble finding people".
They are *right* here - there is too small number of FreeBSD'ers. That's
our real problem - we should increase our userbase. Our userbase is the
problem, not their's userbase. Until there's more of us, we can't fight
successfully with them, even if our weapon is stronger.

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]
g***@gmail.com
2011-08-25 03:34:15 UTC
Permalink
>
> Sure. And taking surveys into account, we could just simply summarize:
> FreeBSD needs marketing :-)

That begs the question of to whom FreeBSD should be marketed. Home users? Small-office admins? Datacenter admins? Embedded developers?


Perhaps we can start from what is currently used/deployed. Easier to start from what we have done than figuring out what all it can do. What say ?


Sent from BlackBerry® on Airtel
Milo Hyson
2011-08-25 05:04:33 UTC
Permalink
On Aug 24, 2011, at 8:34 PM, ***@gmail.com wrote:

>>
>> Sure. And taking surveys into account, we could just simply summarize:
>> FreeBSD needs marketing :-)
>
> That begs the question of to whom FreeBSD should be marketed. Home users? Small-office admins? Datacenter admins? Embedded developers?
>
>
> Perhaps we can start from what is currently used/deployed. Easier to start from what we have done than figuring out what all it can do. What say ?

There's no need to figure it all out in advance. Targeting one or two top-priority demographics is a perfectly reasonable start. What is it that makes FreeBSD better than other options? Who would benefit most from that? Start with them.

- Milo Hyson
Chief Scientist
CyberLife Labs, Inc.
Adrian Chadd
2011-08-25 05:24:54 UTC
Permalink
On 25 August 2011 11:34, <***@gmail.com> wrote:
>>
>> Sure. And taking surveys into account, we could just simply summarize:
>> FreeBSD needs marketing :-)
>
> That begs the question of to whom FreeBSD should be marketed. Home users? Small-office admins? Datacenter admins? Embedded developers?
>
> Perhaps we can start from what is currently used/deployed. Easier to start from what we have done than figuring out what all it can do. What say ?

Pick your area of interest. Work on making it more useful. Be very
loud and vocal about what you're doing. Explain how it's better than
the alternatives.

The project as a whole may not necessarily need a "project dictator"
per se. It doesn't need to figure out who FreeBSD needs to be
marketed to.

What _I_ think the project needs is louder developers and advocates;
easier install/management tools (especially for VM/cluster management
; ports is a pain in the ass as viewed by a lot of people - who think
RPM/DEB is fine (and have built large networks around such)) and some
more use cases where FreeBSD makes sense.

Right now Linux runs in most places, it may not be "awesome" but it's
"good enough", and the entry barrier is sufficiently low for people to
bootstrap a lot of new stuff on it. Combine that with increasing
numbers of users and developers who know Linux only and recommend it
over anything else, regardless of technical merit.

So, let's stop talking about it; pick something you think should be
better, run with it, and be very vocal about what you do.



Adrian
Diane Bruce
2011-08-25 20:13:08 UTC
Permalink
On Thu, Aug 25, 2011 at 01:24:54PM +0800, Adrian Chadd wrote:
> On 25 August 2011 11:34, <***@gmail.com> wrote:
> >>
> >> Sure. And taking surveys into account, we could just simply summarize:
> >> FreeBSD needs marketing :-)
> >
> > That begs the question of to whom FreeBSD should be marketed. Home users? Small-office admins? Datacenter admins? Embedded developers?
...
> Pick your area of interest. Work on making it more useful. Be very
> loud and vocal about what you're doing. Explain how it's better than
> the alternatives.

Yes!

> What _I_ think the project needs is louder developers and advocates;

Yes.

> So, let's stop talking about it; pick something you think should be
> better, run with it, and be very vocal about what you do.

I have been. ;-)

Diane
--
- ***@FreeBSD.org ***@db.net http://www.db.net/~db
Why leave money to our children if we don't leave them the Earth?
Vadim Goncharov
2011-08-25 20:52:41 UTC
Permalink
Hi Adrian Chadd!

On Thu, 25 Aug 2011 13:24:54 +0800; Adrian Chadd wrote about 'Re: FreeBSD problems and preliminary ways to solve':

>>> Sure. And taking surveys into account, we could just simply summarize:
>>> FreeBSD needs marketing :-)
>>
>> That begs the question of to whom FreeBSD should be marketed. Home users? Small-office admins? Datacenter admins? Embedded developers?
>>
>> Perhaps we can start from what is currently used/deployed. Easier to start from what we have done than figuring out what all it can do. What say ?

> Pick your area of interest. Work on making it more useful. Be very
> loud and vocal about what you're doing. Explain how it's better than
> the alternatives.
> What _I_ think the project needs is louder developers and advocates;
> easier install/management tools (especially for VM/cluster management
> ; ports is a pain in the ass as viewed by a lot of people - who think
> RPM/DEB is fine (and have built large networks around such)) and some
> more use cases where FreeBSD makes sense.
> So, let's stop talking about it; pick something you think should be
> better, run with it, and be very vocal about what you do.

Glad to hear such words from @FreeBSD.org! Thanks!

> The project as a whole may not necessarily need a "project dictator"
> per se. It doesn't need to figure out who FreeBSD needs to be
> marketed to.

Here an interesting question arise, in the philosophy/VCS field. We see
that Linux/git adopted model where "dictator" has, say, 17 lieutenant
for key subsystems, and pulls changes from them, each of them have, say,
17 own subordinates from whose he pulls, and so on. Instead of that 17^2
people FreeBSD has the same 289 men directly commiting to repository.
It is repository here which acts as a "dictator" from technical side,
and that is definetely better (e.g. no "kill -SIGBUS Linus" factors).
The difference is, those 289 key people in Linux *can* pull changes from
lower tiers, but FreeBSD people - can't (of course not at all, but it is
significantly harder to contribute here). It is a plain model.

So then, as they are using DVCS in a semi-centralized way, there are
mostly technical benefits for them, which we don't have with a purely
centralized old-fashioned SVN. I still think that it may be worth
creating a combined "centralized DVCS" for FreeBSD needs, mirroring
FreeBSD workflow and free from git flaws (listed in wiki, such as need
to split to many repos etc.). Given how git initially was created, this
is not so hard as it could sound. The problem here is, that I don't know
what typical workflow a FreeBSD commiter has, and what exact needs are.
So even as idea it is still blurred...

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]
m***@FreeBSD.org
2011-08-25 20:59:30 UTC
Permalink
On Thu, Aug 25, 2011 at 1:52 PM, Vadim Goncharov <***@mail.ru> wrote:
> Here an interesting question arise, in the philosophy/VCS field. We see
> that Linux/git adopted model where "dictator" has, say, 17 lieutenant
> for key subsystems, and pulls changes from them, each of them have, say,
> 17 own subordinates from whose he pulls, and so on. Instead of that 17^2
> people FreeBSD has the same 289 men directly commiting to repository.
> It is repository here which acts as a "dictator" from technical side,
> and that is definetely better (e.g. no "kill -SIGBUS Linus" factors).
> The difference is, those 289 key people in Linux *can* pull changes from
> lower tiers, but FreeBSD people - can't (of course not at all, but it is
> significantly harder to contribute here). It is a plain model.

I like that the Project is small enough that (1) I can be trusted to
commit to any of it, and (2) after a few more years of work on it, I
may very well know more than half of the code. It's not always
possible to have lots of functionality in a small code base, but less
code is better, and I wonder if FreeBSD's code size stays smaller
because we can all work on all of it.

Thanks,
matthew
Vadim Goncharov
2011-08-25 22:09:07 UTC
Permalink
Hi ***@FreeBSD.org!

On Thu, 25 Aug 2011 13:59:30 -0700; ***@FreeBSD.org wrote about 'Re: FreeBSD problems and preliminary ways to solve':

>> Here an interesting question arise, in the philosophy/VCS field. We see
>> that Linux/git adopted model where "dictator" has, say, 17 lieutenant
>> for key subsystems, and pulls changes from them, each of them have, say,
>> 17 own subordinates from whose he pulls, and so on. Instead of that 17^2
>> people FreeBSD has the same 289 men directly commiting to repository.
>> It is repository here which acts as a "dictator" from technical side,
>> and that is definetely better (e.g. no "kill -SIGBUS Linus" factors).
>> The difference is, those 289 key people in Linux *can* pull changes from
>> lower tiers, but FreeBSD people - can't (of course not at all, but it is
>> significantly harder to contribute here). It is a plain model.
> I like that the Project is small enough that (1) I can be trusted to
> commit to any of it, and (2) after a few more years of work on it, I
> may very well know more than half of the code. It's not always
> possible to have lots of functionality in a small code base,

Umm, may be I was not clear. The question of trust is orthogonal to what
I wanted to say. If the VCS machine is a "dictator", then any committer
is trusted to commit to any part of repo, this is left as it is now.
What I'm talking about is contributing. I can view a part of committer's
workflow when a contributor wants to do something big. So, he has to do
things in his own repo first, then make a big patch to send to his friend
at freebsd.org, which will apply it and commit. Many boilerplate work.

But there will be much more work if contributor periodically updates his
work. It is will be a pain to merge changes. And with DVCS all history in
contributor's repo could been merged to main FreeBSD repo as well. Think
about Perforce and users/ & projects/ in our SVN - that's also too much
overhead for most contributors.

Suppose we have such VCS based around central repo. Because a central repo
concept exists, I, as a contributor, do clone a *set of files*, neither
just subtree as in SVN nor entire repository as in Git. The VCS maintains
those set - sys/netinet/ipfw/*, sbin/ipfw/*, etc/rc.d/ipfw and a few files
from sys/netinet/ (not all). Note those are individual files, based on a
inode-like object in repo. My VCS copy set up to templates as in main tree
(just like subversion-freebsd now). I do several commits to those files,
the VCS automatically tracks changes from central repo to me. Then, when
I'm done, those entire commit history from my branch could be imported by
interested committer, not just resulting patch. Effectively an outside
vendor branch, closely tied to it's native original freebsd.org, though.

> but less code is better, and I wonder if FreeBSD's code size stays
> smaller because we can all work on all of it.

Nope. More solved tasks - that is what better. And less code/smaller &
cleaner code/less people/etc. - these are just a manner, a way to achieve
that goal, not the goal itself. Adjective is not a noun.

--
WBR, Vadim Goncharov. ICQ#166852181 mailto:***@mail.ru
[Anti-Greenpeace][Sober FreeBSD zealot][http://nuclight.livejournal.com]
Robert Watson
2011-08-26 09:06:32 UTC
Permalink
On Thu, 25 Aug 2011, ***@FreeBSD.org wrote:

> On Thu, Aug 25, 2011 at 1:52 PM, Vadim Goncharov <***@mail.ru>
> wrote:
>> Here an interesting question arise, in the philosophy/VCS field. We see
>> that Linux/git adopted model where "dictator" has, say, 17 lieutenant for
>> key subsystems, and pulls changes from them, each of them have, say, 17 own
>> subordinates from whose he pulls, and so on. Instead of that 17^2 people
>> FreeBSD has the same 289 men directly commiting to repository. It is
>> repository here which acts as a "dictator" from technical side, and that is
>> definetely better (e.g. no "kill -SIGBUS Linus" factors). The difference
>> is, those 289 key people in Linux *can* pull changes from lower tiers, but
>> FreeBSD people - can't (of course not at all, but it is significantly
>> harder to contribute here). It is a plain model.
>
> I like that the Project is small enough that (1) I can be trusted to commit
> to any of it, and (2) after a few more years of work on it, I may very well
> know more than half of the code. It's not always possible to have lots of
> functionality in a small code base, but less code is better, and I wonder if
> FreeBSD's code size stays smaller because we can all work on all of it.

I'm less concerned about the code base size, and more concerned about how we
can best support an ecosystem of FreeBSD-derived projects. FreeNAS, PC-BSD,
pfSense, zrouter, etc, but also companies like Juniper, Yahoo!, NetApp,
Panasas, EMC, etc, all want to do two things to FreeBSD:

(1) Specialise aspects of the FreeBSD environment
(2) Extend aspects of the FreeBSD environment

Where possible, we should integrate changes that make their lives easier, of
course (and do -- several PC-BSD developers were given FreeBSD commit bits
specifically so that they could merge back PC-BSD changes).

However, we do have to ask ourselves if our revision control model makes their
lives easier. I personally believe that the model we currently use scales
quite well (subject to some unfortunate limitations in Subversion merging
support) for what we're trying to accomplish as the FreeBSD project.
However, one aspect of the git/Mercurial/etc model that we aren't able to
capture particularly well is making it easy for people to pull in FreeBSD as a
"flow of changesets" to use as a foundation for their own projects. I've
visited a number of companies tracking FreeBSD, and they all find this
difficult -- not just the social model of how to do it, but also simply the
technical obstacles. Many use Perforce and find that works well, but I think
we need to provide stronger support for the downstream open source community.

One way to do this is to make "more official" our output if git exports of the
repository -- something that many other Subversion-based projects do:
Chromium, clang/LLVM, Tor, etc. Folk like Ulrich have been doing this on a
casual basis for some time, but I think we need to formalise this and provide
end-user documentation on how to use git to track FreeBSD, contribute patches,
etc. There are a number of hitches people have to know about: the potential
impact of obliteration, how to handle $FreeBSD$ correctly for system call
additions, and so on. Simply writing them down and having an official
git.FreeBSD.org (or even gitsvn.FreeBSD.org) would go a long way.

I have to admit I've always preferred Perforce to git, simply because it
strikes me as a more structured approach, partial checkouts (but especially
composition of different depot pieces in a single checkout to create hybrid
trees), etc. But git is widely used, and quite effectively used, by large
communities. We need to support those communities better.

Robert
Adrian Chadd
2011-08-26 09:16:40 UTC
Permalink
[snip]

I've been trying to figure out how to actually _use_ git in a way that
lets me do continuous (re)integration back from/to FreeBSD.
Ie, being able to pull/rebase things from upstream, then push commits
back into the tree, and then pull those back from upstream.
There's git/SVN integration, but I've not seen examples of how it can
be used by FreeBSD developers with SVN accounts;

The examples of git/FreeBSD use that I've seen are for:

* developers who don't have SVN accounts;
* single projects that seem to stay separate from the main tree.

Please help!



Adrian
Jonathan Anderson
2011-08-26 10:04:32 UTC
Permalink
On 26 August 2011 10:16, Adrian Chadd <***@freebsd.org> wrote:
> [snip]
>
> I've been trying to figure out how to actually _use_ git in a way that
> lets me do continuous (re)integration back from/to FreeBSD.
> Ie, being able to pull/rebase things from upstream, then push commits
> back into the tree, and then pull those back from upstream.
> There's git/SVN integration, but I've not seen examples of how it can
> be used by FreeBSD developers with SVN accounts;

The Gitorious wiki page (http://wiki.freebsd.org/Gitorious) claims
that git-svn can be successfully used with our SVN server with a
command like:

git svn commit-diff -m "git branch to svn" -rHEAD upstream/master
work/ hwpmc_kcachegrind
svn+ssh://svn.freebsd.org/base/user/fabient/svctest/

I have not tested this yet with path=/base/head, as it's release time
and I suspect that people might get rather cranky if I mess things up
too badly. I am definitely intending to test this approach once
CURRENT is unfrozen, however, and document my experiences in the wiki.

One of the downsides of using git-svn is that some things (e.g. "make
sysent") expect the $FreeBSD$ in our header files to be expanded to
something SVN-ey, but Git believes that it shouldn't munge source
code: it's an immutable blob. So, when changing syscalls, one needs to
check out syscalls.master using freebsd-subversion, copy it to the Git
repo, run "make sysent" and then finally revert syscalls.master to
what Git expects it to be (just "$FreeBSD$" at the top). There's a
viable argument to be had here as to whether this is a Git problem or
an assumption-that-the-script-makes problem, but it is a nit to be
aware of.


Jon
--
Jonathan Anderson

Research Student, Security Group
Computer Laboratory
University of Cambridge

+44 (1223) 763747
***@cl.cam.ac.uk
Adrian Chadd
2011-08-26 10:35:27 UTC
Permalink
On 26 August 2011 18:04, Jonathan Anderson
<***@cl.cam.ac.uk> wrote:

> The Gitorious wiki page (http://wiki.freebsd.org/Gitorious) claims
> that git-svn can be successfully used with our SVN server with a
> command like:

[snip]

Great, so which tree do I clone to be able to do this? :) Or is it
expected that I'll simply run my own git tree?
Do all of the git commit hashes get calculated in a predictable way
when thirty different developers run a git to svn import?

Ie, can people then push their git branches to some shared repository,
so people can engage in git-like development mashing?


adrian
Robert Watson
2011-08-26 11:23:57 UTC
Permalink
On Fri, 26 Aug 2011, Adrian Chadd wrote:

> On 26 August 2011 18:04, Jonathan Anderson <***@cl.cam.ac.uk>
> wrote:
>
>> The Gitorious wiki page (http://wiki.freebsd.org/Gitorious) claims that
>> git-svn can be successfully used with our SVN server with a command like:
>
> [snip]
>
> Great, so which tree do I clone to be able to do this? :) Or is it expected
> that I'll simply run my own git tree? Do all of the git commit hashes get
> calculated in a predictable way when thirty different developers run a git
> to svn import?

Per my earlier comments, I think we've reached the juncture where a "blessed"
svn2git export would be extremely helpful.

> Ie, can people then push their git branches to some shared repository, so
> people can engage in git-like development mashing?

I suspect quite a bit will end up in github just due to its accessibility, but
hosting our own is certainly also an option. In some sense, this strikes me
as secondary to establishing some of the details about how to prepare patches,
known nits, and having an authoritative origin.

Robert
Jonathan Anderson
2011-08-26 11:43:53 UTC
Permalink
On 26 August 2011 12:23, Robert Watson <***@freebsd.org> wrote:
> Per my earlier comments, I think we've reached the juncture where a
> "blessed" svn2git export would be extremely helpful.
>
> [...]
>
> I suspect quite a bit will end up in github just due to its accessibility,
> but hosting our own is certainly also an option.  In some sense, this
> strikes me as secondary to establishing some of the details about how to
> prepare patches, known nits, and having an authoritative origin.

Indeed, that's the beauty of Git, that the repositories will all play
nicely together, no matter where they're hosted or what the "chain of
custody" is, but they do need to come from the "right" source.

I just hope that the consensus solidifies around the freebsd.git repo
that your.org hosts, rather than the freebsd-head.git one that
your.org, github and gitorious all have, because your.org's
freebsd.git has *all* of the SVN branches, including releases, vendor
branches, user projects, etc., whereas the others only have
[variously] -CURRENT or a smattering of release branches.


Jon
--
Jonathan Anderson

Research Student, Security Group
Computer Laboratory
University of Cambridge

+44 (1223) 763747
***@cl.cam.ac.uk
Jonathan Anderson
2011-08-26 12:11:38 UTC
Permalink
[snip]

By the way, I've put my thoughts about using Git for FreeBSD
development up at http://wiki.freebsd.org/Git (which references the
/GitConversion and /Gitorious pages). I'm very happy to be criticized
re:poor Git usage, incomplete explanations and/or copious Wiki style
horrors. I don't claim to be right. :)

I do hope that this concrete brain dump will spark more discussion of
the form "this specific thing that you do is silly, everybody ought to
be doing X instead", leading to broad consensus around useful
practices and other people distilling /Git to be a summary of "what
you need to know if you want to start hacking FreeBSD using Git".


Jon
--
Jonathan Anderson

***@FreeBSD.org
http://freebsd.org/~jonathan/
Gleb Kurtsou
2011-08-26 18:31:31 UTC
Permalink
On (26/08/2011 12:43), Jonathan Anderson wrote:
> On 26 August 2011 12:23, Robert Watson <***@freebsd.org> wrote:
> > Per my earlier comments, I think we've reached the juncture where a
> > "blessed" svn2git export would be extremely helpful.
> >
> > [...]
> >
> > I suspect quite a bit will end up in github just due to its accessibility,
> > but hosting our own is certainly also an option.  In some sense, this
> > strikes me as secondary to establishing some of the details about how to
> > prepare patches, known nits, and having an authoritative origin.
>
> Indeed, that's the beauty of Git, that the repositories will all play
> nicely together, no matter where they're hosted or what the "chain of
> custody" is, but they do need to come from the "right" source.
>
> I just hope that the consensus solidifies around the freebsd.git repo
> that your.org hosts, rather than the freebsd-head.git one that
> your.org, github and gitorious all have, because your.org's
> freebsd.git has *all* of the SVN branches, including releases, vendor
> branches, user projects, etc., whereas the others only have
> [variously] -CURRENT or a smattering of release branches.
I'd also prefer your.org style repository with all branches. your.org
branch layout is much better than http://gitorious.org/freebsd/freebsd

The only thing that bothers me is that no repository includes full user
names, hopefully it would be fixed in official git repo.

Jonathan, could you update /Git wiki page with an example of git clone
specifying only head branch and how to add another branch later. That
would make local repository copy smaller, pull faster and
'git branch -r' output much shorter.

Thanks,
Gleb.

>
>
> Jon
> --
> Jonathan Anderson
>
> Research Student, Security Group
> Computer Laboratory
> University of Cambridge
>
> +44 (1223) 763747
> ***@cl.cam.ac.uk
Doug Barton
2011-08-27 00:43:33 UTC
Permalink
On 08/26/2011 11:31, Gleb Kurtsou wrote:
> Jonathan, could you update /Git wiki page with an example of git clone
> specifying only head branch and how to add another branch later. That
> would make local repository copy smaller, pull faster and
> 'git branch -r' output much shorter.

I would be more inclined to look at git if there were easily available
instructions of this nature.


FWIW,

Doug (thinking I'm representative of enough similarly-minded people to
make saying it out loud worthwhile)

--

Nothin' ever doesn't change, but nothin' changes much.
-- OK Go

Breadth of IT experience, and depth of knowledge in the DNS.
Yours for the right price. :) http://SupersetSolutions.com/
Adrian Chadd
2011-08-27 01:59:29 UTC
Permalink
On 27 August 2011 08:43, Doug Barton <***@freebsd.org> wrote:
> On 08/26/2011 11:31, Gleb Kurtsou wrote:
>> Jonathan, could you update /Git wiki page with an example of git clone
>> specifying only head branch and how to add another branch later. That
>> would make local repository copy smaller, pull faster and
>> 'git branch -r' output much shorter.
>
> I would be more inclined to look at git if there were easily available
> instructions of this nature.

I don't think git "does" this, does it?


Adrian
Adrian Chadd
2011-08-27 02:00:50 UTC
Permalink
.. nope, it does. I just saw the other reply. Cool!


Adrian
Robert N. M. Watson
2011-08-27 09:56:59 UTC
Permalink
On 27 Aug 2011, at 01:43, Doug Barton wrote:

> On 08/26/2011 11:31, Gleb Kurtsou wrote:
>> Jonathan, could you update /Git wiki page with an example of git clone
>> specifying only head branch and how to add another branch later. That
>> would make local repository copy smaller, pull faster and
>> 'git branch -r' output much shorter.
>
> I would be more inclined to look at git if there were easily available
> instructions of this nature.
> ...
> Doug (thinking I'm representative of enough similarly-minded people to
> make saying it out loud worthwhile)

As with all revision control systems, there are lots of ways to use git. I think there's huge value in documenting an authoritative "recommended" way to use git with FreeBSD. Other very similar projects to ours do exactly this -- for example, LLVM:

http://llvm.org/docs/GettingStarted.html#git_mirror

And Chromium:

http://code.google.com/p/chromium/wiki/UsingGit

Note that Chromium even wraps it up in a script to ensure the details are done right, and has notes on issues with getting Subversion auto-props right, etc.

The above both look a fair amount like Jon's draft notes on our wiki, in fact :-).

Robert_______________________________________________
freebsd-***@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "freebsd-arch-***@freebsd.org"
Artem Belevich
2011-08-27 01:26:18 UTC
Permalink
Hi,

On Fri, Aug 26, 2011 at 11:31 AM, Gleb Kurtsou <***@gmail.com> wrote:
> Jonathan, could you update /Git wiki page with an example of git clone
> specifying only head branch and how to add another branch later. That
> would make local repository copy smaller, pull faster and
> 'git branch -r' output much shorter.

Here you go:

$ mkdir small-clone
$ cd small-clone
$ git init
# Tell git to fetch only master (AKA head) and stable/8 branches
$ git remote add -t master -t stable/8 origin
git://git.freebsd.your.org/freebsd.git
$ git fetch origin # fetches about 1.6M objects

remote: Counting objects: 1600952, done.
remote: Compressing objects: 100% (418377/418377), done.
remote: Total 1600952 (delta 1227540), reused 1524707 (delta 1159458)
Receiving objects: 100% (1600952/1600952), 632.85 MiB | 3.12 MiB/s, done.
Resolving deltas: 100% (1227540/1227540), done.
From git://git.freebsd.your.org/freebsd
* [new branch] master -> origin/master
* [new branch] stable/8 -> origin/stable/8

# Add stable/7 branch and fetch it
$ git remote set-branches origin --add stable/7
$ git fetch origin

remote: Counting objects: 35713, done.
remote: Compressing objects: 100% (11359/11359), done.
remote: Total 27595 (delta 20679), reused 22440 (delta 16043)
Receiving objects: 100% (27595/27595), 14.40 MiB | 1.93 MiB/s, done.
Resolving deltas: 100% (20679/20679), completed with 2329 local objects.
From git://git.freebsd.your.org/freebsd
* [new branch] stable/7 -> origin/stable/7
$ git branch -r
origin/HEAD -> origin/head
origin/master
origin/stable/7
origin/stable/8

Practically it does not save you all that much on repo size or the
time to fetch stuff. Complete clone is ~700M/1.9M objects and
head+stable/8 clone is only about 10% smaller. If you really want to
have smaller repo you will need to trip repo history. I'm not sure yet
how to do that.

--Artem
Ulrich Spörlein
2011-08-27 15:59:34 UTC
Permalink
On Fri, 2011-08-26 at 21:31:31 +0300, Gleb Kurtsou wrote:
> On (26/08/2011 12:43), Jonathan Anderson wrote:
> > On 26 August 2011 12:23, Robert Watson <***@freebsd.org> wrote:
> > > Per my earlier comments, I think we've reached the juncture where a
> > > "blessed" svn2git export would be extremely helpful.
> > >
> > > [...]
> > >
> > > I suspect quite a bit will end up in github just due to its accessibility,
> > > but hosting our own is certainly also an option.  In some sense, this
> > > strikes me as secondary to establishing some of the details about how to
> > > prepare patches, known nits, and having an authoritative origin.
> >
> > Indeed, that's the beauty of Git, that the repositories will all play
> > nicely together, no matter where they're hosted or what the "chain of
> > custody" is, but they do need to come from the "right" source.
> >
> > I just hope that the consensus solidifies around the freebsd.git repo
> > that your.org hosts, rather than the freebsd-head.git one that
> > your.org, github and gitorious all have, because your.org's
> > freebsd.git has *all* of the SVN branches, including releases, vendor
> > branches, user projects, etc., whereas the others only have
> > [variously] -CURRENT or a smattering of release branches.

The key part here is svn integration. git-svn has this, but it does not
cope with the huge history we have in the tree. Furthermore git-svn
can/should be run be the individual committers and focusing on the main
branch just makes the most sense.

Especially, considering that you shouldn't use git-svn to merge changes
from head to stable/* (blame the fucked up SVN merge mechanism). Thus,
it's best to not even give committers the stable branches in their git
trees, lest they mess up the svn repo. And it's really easy to push
hundreds of commits from git to svn with one command. And we all make
mistakes ...

> I'd also prefer your.org style repository with all branches. your.org
> branch layout is much better than http://gitorious.org/freebsd/freebsd

Please use http://gitorious.org/freebsd/freebsd-head if you want a
committer to actually take your patches and submit them into svn (using
git-svn).

> The only thing that bothers me is that no repository includes full user
> names, hopefully it would be fixed in official git repo.

No. I really would like to see the full names too, and actually put a
lot of work into getting the correct names into the git repos in the
first place. Alas it is too fragile and will break too often as the
login -> full name mapping is not fixed (yay! we still get new people!)

As part of using git-svn to push stuff upstream, it will first download
and convert the svn head, rebase your patches and then send them as
incremental commits. The "download and convert" part would require that
each and every committer has the same, up-to-date, list of loginnames to
email-addresses.

This will break and the benefit is far too little anyway. Should a full
conversion be done at some point (ha! last I heard our re@ folks are
still using CVS ...), this can be reconsidered and fixed up easily.

> Jonathan, could you update /Git wiki page with an example of git clone
> specifying only head branch and how to add another branch later. That
> would make local repository copy smaller, pull faster and
> 'git branch -r' output much shorter.

I'm fully to blame for the lack of documentation on a working git
workflow. I shall review what's in the Wiki and come up with an overview
of what' what.

Cheers,
Uli
Loading...