Oh I completely agree that the end objective of making a nice complete
OS for the end user is a very useful goal to have in mind. My point is
that I see that as matching up to the goals of a distro, say Ubuntu
for example. Something like a tftp server would, in Ubuntu's case,
simply be a package that you could download through the package
manager. Why not simply add the tftp server to ReactOS's downloader as
an optional package? That would seem to be the best place to put it,
as it is very obviously a completely optional userland tool.
Zachary's poin about the manpower issue is very important, though, and
I feel I should add my 2 cents to the discussion here. One of the
fundamental ways in which large projects can be made to work well with
more developers is for the project to split into smaller
"sub-projects" with well-defined interfaces between them and reduced
dependancies. This works no matter what kind of software project we're
referring to - for example, you have IRC clients as standalone
projects, and IRC servers as different projects, even though they are
each both completely useless without the other. Developers can work on
an IRC client and get to know it really well, without having to know
the faintest thing about how an IRC server handles multiple
connections and so forth.
Splitting things across well-defined boundaries makes it easier for
programmers to help out, not harder! Using our IRC example, a
programmer could delve deep into the code of their favourite IRC
client and not have to learn anything about the server. It means a
smaller amount of stuff to learn before a programmer becomes useful,
and this attracts developers to a project.
From people's answers beforehand in the thread. it
seems that there
may currently be technical reasons why a USER32 replacement
can't
currently be done (i.e. internal undocumented interfaces). I guess I
need to ask the experts out there - are there DLLs or components in
ReactOS that can be completely separated out? What parts could be run
on windows currently? What parts don't currently run, but could in
theory?
The other point to make about distros, is that nothing in the ReactOS
license prevents someone from starting a ReactOS distro. This means
that it is virtually guaranteed to happen as ReactOS matures, and we
need to be ready for it. For example, say if Debian wanted to do a
Debian/ROS distribution, like they do Debian/Hurd or Debian/FreeBSD at
the moment. Debian could take the ROS kernel and some other userland
bits and pieces. They might compile up some DLLs from Wine instead of
from ROS, if Wine has newer bugfixes. It would be technically possible
to port the "apt" package manager to ROS and offer packages for common
open source tools like OpenOffice, the GIMP, Firefox and so on.
There's nothing technically or legally that ROS can do to stop it, so
instead we should work out how we as a project are going to cope with
it WHEN (yes, when) it happens.
Would we be OK with that? How will we cope when a distro is shipping
our kernel, but with Wine's DLLs? Do we need to do anything
differently than how we do now? Do we need to make our build process
easier for distro packagers?
Best regards,
Peter Millerchip.
2009/5/15 Zachary Gorden <drakekaizer666(a)gmail.com>om>:
Not going to call you an idiot, but the methodology
you propose would not be
appropriate for this project. The objective is to create an entire
operating system and provide something that is usable for the end user, not
create a giant mess of parts that may or may not integrate well into each
other. The work that a lot of distros do is quite frankly massively
overredundant, caused by all the projects pretty much doing whatever they
want. And splitting into a bunch of "mini" projects doesn't solve the
fundamental issue of lack of manpower. It just disperses what we do have
even more.
On Fri, May 15, 2009 at 3:03 AM, Peter Millerchip
<peter.millerchip(a)gmail.com> wrote:
Hi,
I've been lurking on this list for several years, but I have some
thoughts about this issue so I hope you don't mind me posting now.
It seems to me as though discussions like this are more of a
"distro-level" thing - if you consider how Linux does things, the
kernel is a separate project from the userland, and it's up to the
distros (like Ubuntu, Fedora, etc.) to decide whether to ship a tftp
server.
Now, I must admit I'm not an expert on the internals of ReactOS at
all, so please forgive me if this idea is not technically feasible,
but couldn't we make a similar kind of separation in ReactOS? As far
as I can see, there's no technical reason why even something like
USER32.DLL couldn't be a completely separate project from the ReactOS
kernel, using maybe a different branch of the source code and testing
on Windows XP. After all, the GNU tools were written in this way,
gradually replacing core components of various Unixes.
So, if we follow the same kind of development model as Linux, the
ReactOS kernel would be the sole ReactOS project. Then you would have
different maintainers for different parts, say USER32.DLL. Then you
would have someone who compiles "distros" of ReactOS, picking and
choosing the best pieces to go with the kernel itself. You could have
a "netboot-specialised" distro which included the tftp and PXE stuff,
or a more general "newbie" distro.
I would expect that many of the subprojects would share code in order
to make things a bit easier - but the important thing to realise is
that they wouldn't be forced to. Say if the USER32 maintainer decided
to do a Wine sync, but the kernel guys didn't want to, this would
actually be OK and would still work fine. The USER32 maintainer could,
if they wanted, have a completely separate source tree from the
ReactOS kernel. As long as the USER32 DLL worked on Windows XP, it
would be good - if the ReactOS kernel didn't work with it, it would be
a bug in the kernel.
So, is this idea feasible or is there some reason why it wouldn't
work? Please feel free to call me an idiot if I've missed some
important technical detail, but it seems to me that introducing this
kind of separation would really help the project to move forward very
quickly in the same way that Linux has.
Best regards,
Peter Millerchip.
_______________________________________________
Ros-dev mailing list
Ros-dev(a)reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev