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>