[ros-dev] [ros-diffs] [sedwards] 40919: imported the MT snapshot of the GPL tftp-server for win32 from sourceforge. Minor changes such as formatting and renaming the files, totally untested except for building, will be used later to serve up Reac
peter.millerchip at gmail.com
Fri May 15 23:25:25 CEST 2009
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
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?
2009/5/15 Zachary Gorden <drakekaizer666 at gmail.com>:
> 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 at gmail.com> wrote:
>> 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
>> 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 at reactos.org
More information about the Ros-dev