Oi pessoal

Vi o email a seguir na lista dos hackers e algumas coisas me chamaram a atenção. Uma delas é que o autor aponta alguns pontos que, segundo a visão dele, o FreeBSD precisa resolver no futuro. Um dos pontos é o sistema de comunicação entre processos, o IPC. Eu queria que alguém mais experiente comentasse esses pontos. Principalmente as deficiências e o que precisa ser feito. Outra coisa que me chamou a atenção é que ele diz que mesmo quando alguém fornece código, ele passa um tempão para ser revisado, que tem pouco manpower, etc. Dá até vontade de tentar escrever algo, pois eu tenho bons skills em programação, mas não tem como desenvolver código para o kernel sem a orientação de alguém experiente sobre as deficiências e a organização do dele. Eu até comprei o livro The Design and Implementation of FreeBSD Operating System, mas acho que ele fica um pouco aquém de explicar os subsistemas do kernel, de um ponto mais próximo ao programador e menos teórico.


[]'s
-Otacílio
-------- Mensagem encaminhada --------
Assunto:        Re: relaunchd: a portable clone of launchd
Data:   Mon, 11 Jan 2016 14:25:52 +0200
De:     Dan Partelly <dan_parte...@rdsor.ro>
Para:   Jordan Hubbard <jordanhubb...@icloud.com>
CC: FreeBSD Hackers <freebsd-hack...@freebsd.org>, Jonathan de Boyne Pollard <j.deboynepollard-newsgro...@ntlworld.com>, Dmitry Sivachenko <trtrmi...@gmail.com>, Mark Heily <m...@heily.com>, Peter Beckman <beck...@angryox.com>



It’s this latter point that makes me roll my eyes a bit whenever folks use 
phrases like “the linux way” or “the BSD way” since I’m not entirely sure that 
those “ways”, at least not as I first heard them articulated back in the 
1990’s, actually exist anymore.

I personally use those terms a bit tongue in check. BSDs have very limited 
manpower , and so they are forced to use source code from foreign OSes in the 
most straightforward way possible, which means wrappers . (else see the fiasco 
with the DRM drivers in FreeBSD so far, there is plainly too much effort to 
port Linux DRM code to BSD without wrappers and adapters. Dragonfly did it the 
right way  ) . So , you need to wrappers and adapters to Linux  specific API’s 
and data structures  to support DRM , OFED and god knows what else.

But this is a general problem not only limited to Linux.

FreeBSD has NDIS emulation to support some Wifi devices.
FreeBSD has Solaris API/ datastruct  wrappers and adapters to support ZFS/
NextBSD has now dragged  “half" of mach kernel inside to : 1. Implement a 
better and more flexible IPC mechanism than Unix domain sockets / posix message 
queues (Truth is,
IPC sucks in Linux and BSDs. It is my opinion that Windows LPC/ALPC are way 
better designed. and 2: To easily port launchd/notifyd/whateverd

Now this is all good and dandy, but who will audit all this code for bugs and 
security ? Some bugs will become manifest fast, but others may lurk in those 
layers for years.

What problems are we here to solve, and what are the specific details of those 
problems?”

It is my oppinion that FreeBSD needs to solve the following techical problems 
in the future:

— problem : binary code reuse ---
1. Many utilites from BSD base are monolithic and closed, yet they provide 
higher level interfaces to OS configuration. It is my opinion that
all this functionality should be expose as libraries & demon services. This is 
the very base upon which enterprise grade tools  are built. Libxo is not a proper 
solution to this problem. It should not exist in FreeBSD base, yet somehow it 
slipped inside, and I seen on some papers from BSD conferences that some even 
discussed to put it inside the OS kernel . I frankly cant imagine what those ppl 
are/wehre thinking.

2. Of secondary importance is to build some demons to allow access to geom, 
network , wifi management and so on and  implement a proper auto mounter . Let 
go to the 80s
and not use scaffolding of shell scripts to implement any of those.

Those two points also help a great deal towards having softtware appliances 
which has only what you need and nothing else on them.

— problem OS configuration and updating in a higly concurrent world ---
3. Transactional OS wide configuration databases.

4. In a world where hundreds of machines, bee-it physical or virtual are 
interconnected and talking to each other , safe concurrent access to OS 
configuration will become soon very important.

— problem OS wide IPC mechanism to build a high performance pub/sub system , to 
cope with the very dynamic world we move forward.

4. A new high performance IPC system should be introduced IMO. It should allow 
both fast synchronous operation ( like solaris doors) and asynchronous 
operations, working with kevent/kqueue. It should allow kernel endpoints, and 
should cater to security concerns. It should be a minimal API , not a full buss

5. a user mode pub / sub message bus.  use the IPC api to implement a high 
performance , OS wide, message bus. It should present clear abstractions to 
clients, to insulate them
from using syscalls directly. It should sum some already existing mechanisms, 
such as devd.

— problem of service management and fault management:

6. Much needed components of enterprise.
Frankly, I like the direction Solaris took with Service management and faults management.

What I DO know won’t move the ball forward (on any field, in any game) is 
arguing about this like it was a religious debate of some sort, where sweeping 
generalizations are preferred over far more pragmatic questions of “What 
problems are we here to solve, and what are the specific details of those 
problems?”

I raise some of those problems in past. Especially the problem of binary code 
reuse . My perception was that nobody really gives a damn.   The answers where 
interesting: libxo is in base because someone coded it , libxofication of utils 
proceeds in BSD , no matter that is a half assed solution which offers a fast 
hack to appliance vendors like juniper mostly,  Others complained that people 
talk and nobody contributes code , yet when you contribute code they dont look 
at it with months, and so on.



In my last job, a lot of the questions revolved around “how do we stick this OS 
into mobile devices with small batteries?” and those sorts of pragmatic 
concerns informed a lot of our engineering work.

Yes. See, One thing I hear for decades is the Unix desktop. And everybody and 
their mother started to write Windows managers, desktops , whatever. We have 
OSes like PCBSD, which likes to masquerade itself like a desktop. Yet it seems 
that nobody realised that a modern desktop , one which is not a Rupe Goldberg 
contraption, or even worse, the software frankenstein’s monster  depends 
heavily on almost all the probem domains I outlined above. Ironically, the some 
of the same base technologies which can be used
to driver enteripise features like service management and fault management, 
would enable the polar opposite, the user desktop.

Yet what we see instead of someone asking those questions is people jumping 
into coding layer after layer of half assed solutions, which only make the 
situation worse.

If people would at least agree on what has to be done, some would surely study 
those problems and find some cool solutions to implement.


I like your NextBSD effort, save the fact you guys dragged half of Mach kernel 
in it. I can understand why you did it, but I dont have to like it. I think a 
new slim IPC mechanism
should be written , and that the major enterpises depending on BSD should fork 
money to cover the development costs. Im happy that they use BSD techs, but 
with very few
exceptions they contribute almost nothing back.



On 10 Jan 2016, at 20:32, Jordan Hubbard <jordanhubb...@icloud.com> wrote:


On Jan 10, 2016, at 2:36 AM, Dan Partelly <dan_parte...@rdsor.ro> wrote:

Copying the linux way of doing things should not be a goal of the BSDs.

I’ve been trying to stay out of this since the discussion has, at least in 
points, seemed a little on the “fnarr!  fnarr!” polemic side (rather than 
focusing, as one would hope to see in a group called “Hackers”, on the 
engineering details and specific technical pros-and-cons of each approach), but 
I guess I can no longer resist.  As one of the “launchd stake-holders” in the 
discussion, and one I hope to have at a conference in the near future since 
email is a terrible communications medium for really getting ones point’s 
across (and avoiding lots of points that exist in the mind of the reader but 
not your own), let me just say that our goals with NeXTBSD continue to be the 
following, though not necessarily always in the following order:

1. Stay in sync with FreeBSD-current, just to keep divergence to a minimum

2. Get all of the base technologies we are targeting (launchd et al) fully 
working and as faithful in implementation to their upstream origins (for the 
exact same reasons as #1) as possible.  We’re not slavishly following Apple, 
we’ll take any suitably licensed technology that achieves our goals (see point 
#4).

3. Start migrating all of the older facilities, like /etc/rc and preferences 
files, to the new models - this one is really the “long pole” and why we’re 
just staying quiet until this work is largely completed and ready to show, 
since otherwise you’re largely debating the pros and cons of vaporware vs 
vaporware.

4. Use the specific and pragmatic world of Enterprise and Software Appliance 
requirements to drive the feature set of the technologies we choose and the 
urgency with which we pick them.

It’s this latter point that makes me roll my eyes a bit whenever folks use 
phrases like “the linux way” or “the BSD way” since I’m not entirely sure that 
those “ways”, at least not as I first heard them articulated back in the 
1990’s, actually exist anymore.

Yeah, BSD has /usr/src and Linux has collections of packages and a 
distro-centric model of looking at the universe, but those are increasingly 
superficial distinctions when compared to the far more pertinent distinctions 
today around *what* is being packaged and to what purpose.  What do application 
stacks look like in the year 2016 and forward?  How does mass-deployment work 
on your OS?  Where are the privilege domains around disparate collections of 
software drawn, and how do you manage them?  Do you have effective security 
models for allowing entirely untrusted software to run on your OS?   How are 
you managing storage in clustered / hybrid (local + cloud) environments, and 
how hard is it to bend the OS to your will as a DevOps person tasked with any 
or all of the above?

I’m not pretending to have answers to even half of those questions myself, 
don’t get me wrong, but I think the questions are important just to staying 
alive.   In my last job, a lot of the questions revolved around “how do we 
stick this OS into mobile devices with small batteries?” and those sorts of 
pragmatic concerns informed a lot of our engineering work.  My current job asks 
questions about Enterprise deployment and how to create Software Appliances 
that have everything you need and nothing you don’t in them, the Linux folks 
also complicating the picture with “Containers” and “Docker Apps” (kudos to 
them though - they managed to take a handful of things that had existed for 
years and make them suddenly new and sexy again) and now I need answers for 
those, too.

What I DO know won’t move the ball forward (on any field, in any game) is 
arguing about this like it was a religious debate of some sort, where sweeping 
generalizations are preferred over far more pragmatic questions of “What 
problems are we here to solve, and what are the specific details of those 
problems?”

This is also why I’m doing all of that stuff in a branch called NextBSD.  Who 
has time for religious debate when you’re trying to just get code to work and 
solve a very specific set of problems? :-)

- Jordan


_______________________________________________
freebsd-hack...@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"



-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

Responder a