Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Feb 1996 13:08:05 -0800 (PST)
From:      Jake Hamby <jehamby@lightside.com>
To:        hackers@FreeBSD.ORG
Subject:   FreeBSD ports to NT (was Win32...)
Message-ID:  <Pine.AUX.3.91.960226123745.5298D-100000@covina.lightside.com>

next in thread | raw e-mail | index | archive | help
Because of the big response I got to my mention of Win32 ports, here is 
a brief rationale and plan for BSD programs I would like to move to 
Win32.  I'll  have a full Web page up in the next couple of weeks, but 
I'd like some initial comments if anyone feels strongly about this:

First, my rationale.  The big defect in Microsoft's original POSIX 
subsystem for Windows NT was that it was a strict implementation of 
POSIX.1 and obviously intended only to meet government purchasing 
requirements, rather than to be usable.  The upshot is that there is NO 
graphics or networking support in their implementation, and so if your 
program needs more system resources, than for example, cat or vi, you're 
out of luck.  Furthermore, since they needed to meet UNIX semantics to 
qualify for POSIX.1, these programs don't interact well with native 
Windows:  having to type / instead of \, case-sensitivity, and 
"//D/mydir" instead of "D:\mydir", while traditional for Unix, just seem 
awkward in the Windows environment.  Finally, because POSIX is a separate 
subsystem, and one that isn't loaded at boot-time, starting any of these 
utilities causes a substantial delay as the new subsystem is paged in.  
Oh, and of course, these programs don't work under Windows 95...

My plan is this:  Instead of porting programs like cp, cat, mv, or vi, 
which all have perfectly good Windows equivalents, slavishly following 
Unix semantics, and limiting oneself to Console apps, why not port 
programs that DON'T have good Windows equivalents, such as sed, awk, 
tcsh, fortune, sup, CVS, and the like?  These programs should work with 
BOTH Unix and DOS-style filename notation, and wherever it is sensible, 
they should be enhanced with a GUI interface, online help, and other 
features that are so easy to achieve with Windows.  My plan is to take 
the BSD source code, integrate each program into a Visual C++ project, 
and encapsulate the core functionality into C++ classes that communicate 
with the user-interface, which is based on the MFC C++ framework.  All 
programs will be Win32, and will run on both Win95 and NT 3.51 or higher.

Here is a brief list of programs/groups that I would like to port, 
roughly in order from earliest to latest completion:

SUP client and server:  This will give me a chance to gain experience 
with Winsock, and is also a good prerequisite because it will allow me to 
transfer the rest of the FreeBSD source code easily.  Also, I plan for 
both programs to have a GUI interface, which will show available packages to 
download and download progress, as well as the ability to read/write the 
existing ASCII configuration files for SUP.  I may decide to implement 
the server as an NT service, in which case it won't run under Windows 95, 
although the client will run on both.

"fileutils":  Named after the GNU package, I would like to port either 
BSD or GNU file utilities, such as cat, cp, chmod, as well as more 
advanced programs like file, sed, awk, grep, etc..  If the GNU tools are 
significantly faster, I would prefer to use them in preference to BSD, 
but am concerned about the restrictive GNU license, so may use BSD 
instead.  Again, the priority is on the programs that DON'T have Windows 
equivalents AND make sense with the FAT/NTFS filesystems.

"man":  I plan to convert all man and info pages (with the help of Perl 
scripts, probably) to .RTF files and from there compile them to Windows 
Help files.  However, they will retain the same format, and I'd like to 
write a wrapper "man" program which would automatically spawn WinHelp 
with the appropriate page.

BSDgames:  Seems like nobody cares about this package these days!  I want 
to change that.  I'm planning on a graphical version of Fortune suitable 
for use in one's Startup group, that would display a fortune for N 
seconds, then automatically quit.  I also would like to see graphical 
versions of the other games (in the style of SunOS "canfieldtool") that 
should really pique the user's interest.

Progutils:  Tools such as diff, patch, RCS, CVS.  I'll probably pass up 
tools like "make" in favor of Unix->Win32 converter programs for these 
files, since I plan to use VC++ rather than GCC.  In combination, I'd 
like to have DLL versions of useful Unix libraries, such as NCurses and 
GNUregex, again where they make sense and there is no satisfactory 
Windows equivalent.

Perl5:  Looks like there's already a port of this, so I'll just have a 
pointer from my Web page to it.

Netutils:  NT/Win95 have a pretty good set, e.g. Ping, Traceroute, 
netstat, so if there are any useful missing ones (e.g. Nslookup) I'd like 
to provide those.  If I have time, it would be really cool to do, e.g. an 
SMTP or NNTP server, but I think there are already alternatives in these 
areas (of course they are commercial :-)

Shells:  I'd like to see tcsh (primarily for interactive use) and bash 
(for interactive use and shell scripts).  They should be able to spawn 
Win32, Win16, and DOS programs just like CMD.EXE..

There are more, but you get the idea..  I want to concentrate on programs 
that a) are generally considered useful (or in the case of games, fun), 
b) have no practical Windows equivalent.  I welcome any early comments, 
and will post the URL to a Web version of this when it becomes 
available.  Thanks!

---Jake



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.AUX.3.91.960226123745.5298D-100000>