Hi Jiri,

It has taken me a bit longer than I expected, but the current state of
my repository is that it can be merged (modulo possible bugs), and
further additions won't have so much impact on the rest of the system as
they had until now.

Thanks for your email. I am sorry to disappoint, but in my opinion the branch is still far from being mergable into mainline. A few reasons for that:

* I consider your vcl_* API more like a joke. You replace an easily
recognizable API (that is, of course, not 100 % standard compliant, but still close enough for most practical purposes) with a totally alien API, with absolutely no benefits to the user. The client-observable behaviour is mostly the same, it still uses a file handle, only strangely packed in a structure.

Until you really start doing something totally new and unheard of, I suggest you stick with the API everybody would recognize. And even if implementing something new, an extension of the existing API seems to be better than just reinventing the wheel. Of course, HelenOS is an experimental OS and we are not afraid of taking our own ways, but we are also not afraid of reusing existing concepts and APIs where it is appropriate.

* Consistency: To avoid unnecessary confusion, we try to keep the client names the same as the server names. We don't have LSCL ("Location Service Client Library") and so on, therefore I see no reason for a VCL ("VFS Client Library").

Also, why is the vcl_* stuff as the only thing in the "helenos" subdirectory of the libc? And as a nit, I don't consider the "inbox" name very fitting.

* Coding style: Major issues. You do not respect the 80 characters per line rule, some definitions of macro constants are mixed with functions, some files are without copyright headers, some header files contain external symbol declarations without the "extern" keyword and with argument names, there are some really dense functions with no horizontal separators (statfs()).

* Integration: The "inbox" idea is interesting, but while you do it, why not extend it further to non-file objects as well? We still lack the equivalent of environment variables and this might be a handy way for pointing the spawned task also to other resources (e.g. the compositor in case of GUI tasks, etc.).

* VFS server: I fail to see the reason for the pipes. What does it do, actually? If it is really just a producer/consumer, we already have a generic support for that in libc (adt/prodcons.h).

* I might be mistaken, but you though away some functionality from the mainline (like in the cat command or the lack of a VFS test) for no obvious reason.

* As a bottom line: I fail to see the reason for your comment in "kill" and "killall" that the commands should be integrated into a shell. In my opinion it is the other way around, many current internal bdsh commands should live as separate binaries. They are currently in bdsh only to save some footprint until the dynamic linking is fully supported.

The only case where I agree with you is "redir" (of course, redirection should be implemented by the shell itself), but redir can still act as a standalone tutorial of how to do redirections.


To sum up, it is good to see where your code is going, but I would really prefer to keep this outside the mainline branch for now.


M.D.

_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel

Reply via email to