Import X server from vnc-3.3.7.
[rdpsrv] / Xserver / RELNOTES.TXT
1
2
3
4
5
6
7
8
9
10                       X Window System, Version 11
11                               Release 6.3
12
13                              Release Notes
14
15
16
17
18
19
20
21
22                            X Consortium, Inc.
23
24                            December 23, 1996
25
26
27
28
29
30
31
32
33
34
35 Copyright c 1996 X Consortium
36
37 Permission is hereby granted, free of charge, to any person obtaining a
38 copy of this software and associated documentation files (the
39 "Software"), to deal in the Software without restriction, including
40 without limitation the rights to use, copy, modify, merge, publish, dis-
41 tribute, sublicense, and/or sell copies of the Software, and to permit
42 persons to whom the Software is furnished to do so, subject to the fol-
43 lowing conditions:
44
45 The above copyright notice and this permission notice shall be included
46 in all copies or substantial portions of the Software.
47
48 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
49 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
50 ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
51 SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABIL-
52 ITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
53 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
54 IN THE SOFTWARE.
55
56 Except as contained in this notice, the name of the X Consortium shall
57 not be used in advertising or otherwise to promote the sale, use or
58 other dealings in this Software without prior written authorization from
59 the X Consortium.
60
61 X Window System is a trademark of X Consortium, Inc.
62
63
64
65 1.  What Is Release 6.3
66
67
68 This is the last X Consortium implementation of the X Window System.  X
69 is a vendor-neutral, system-architecture neutral network-transparent
70 window system and user interface standard.  X runs on a wide range of
71 computing and graphics machines.  For an overview of X, see the X manual
72 page.
73
74 R6.3 is an update to R6.1.  It is compatible with R6 and R6.1 at the
75 source and protocol levels in all respects, and binaries are upward-
76 compatible.
77
78 What about Release 6.2?  Release 6.2 is a proper subset of Release 6.3
79 produced at the request of the OSF Common Desktop Environment program.
80 It was produced by the X Consortium and is being released by OSF simul-
81 taneously with CDE 2.1.  Release 6.2 contains only the print extension
82 and the Xlib implementation of vertical writing and user-defined charac-
83 ter support.
84
85 The X Consortium was an independent, not-for-profit membership corpora-
86 tion formed in 1993 as the successor to the MIT X Consortium and dis-
87 solved at the end of 1996.  Refer to the Consortium man page for addi-
88 tional details about the X Consortium.
89
90 See xc/INSTALL.PS (PostScript) or xc/INSTALL.TXT (plain text) for
91 instructions on how to build and install this software.
92
93
94 1.1.  Overview of the X Consortium Release
95
96
97 The X Consortium software and documentation in Release 6.3 is in direc-
98 tory xc/ and contains the following:
99
100 X Consortium Standards
101      The X Consortium produced standards:  documents which define net-
102      work protocols, programming interfaces, and other aspects of the X
103      environment.  See the XStandards manual page for a list of stan-
104      dards.
105
106 Implementations
107      For most of our standards, we provide high-quality implementations
108      to demonstrate proof of concept and to give early adopters and ven-
109      dors a base to use.  These are not reference implementations; the
110      written specifications define the standards.
111
112 Fonts
113      A collection of bitmap and outline fonts are included in the dis-
114      tribution, contributed by various individuals and companies.
115
116 Utility Libraries
117      A number of libraries, such as Xmu and the Athena Widget Set, are
118      included.  These are not standards, but are used in building X Con-
119      sortium applications and may be useful in building other applica-
120      tions.
121
122 Programs
123      We also provide a number of application programs.  A few of these
124      programs, such as xdm (or its equivalent), should be considered
125      essential in almost all environments.  The rest of the applications
126      carry no special status; they are simply programs that have been
127      developed and/or maintained by X Consortium staff.  In some cases,
128      you will find better substitutes for these programs contributed by
129      others.
130
131
132 1.2.  Supported Systems
133
134
135 We built and tested this release on the following systems:
136
137
138         AIX 4.2
139         Digital Unix 4.0A
140         HP-UX 10.01
141         IRIX 6.2
142         Solaris 2.5
143         UNIX System V/386 Release 4.2 (Novell UnixWare) Version 2.02
144
145 We also built this release on the following and did some minimal test-
146 ing:
147
148         FreeBSD 2.1.6
149         Linux 1.2.13 (Yggdrasil) and 2.0.0 (Slackware 3.1)
150         SCO Open Server 5.0
151         SunOS 4.1.4
152         Windows NT 4.0
153
154
155 In all cases except SunOS we have used the vendor's compiler.  On SunOS
156 we build with gcc.
157
158
159 1.2.1.  Supported Display Devices
160
161
162 This release includes the necessary device-dependent support to build a
163 native X server for the following platforms:
164
165         XFree86: See the XF_* man pages for supported video cards
166
167         AIX: Xibm with Skyway display adapter
168         HP-UX: Xhp
169         Digital Unix: Xdec on Alpha AXP with PMAG-B frame buffer
170         SunOS/Solaris: Xsun -- see the Xsun man page for supported frame buffers
171         Ultrix[1] :Xdec
172
173 In addition to the above, the Xvfb and Xnest servers can be built on
174 most platforms.
175
176 Native servers are not built on IRIX or Microsoft Windows NT.
177
178
179 1.3.  The XC Tree
180
181
182 The general layout under xc/ is as follows:
183
184
185 config/             config files, imake, makedepend, build utilities
186 doc/                all documentation other than per-program manual pages
187 fonts/              BDF, Speedo, Type1 fonts
188 include/            include files shared by multiple directories
189 lib/                all libraries
190 nls/                national language support files
191 programs/           all programs, including the X server and rgb
192 util/               patch, compress, other utilities
193 bug-report          bug reporting template
194 registry            X Registry
195
196
197 This file is xc/RELNOTES.*, in various formats.  The documentation
198 source files RELNOTES.ms and INSTALL.ms are in the xc/doc/misc/ direc-
199 tory.
200
201
202 1.4.  X Registry
203
204
205 The X Consortium maintained a registry of certain X-related items to aid
206 in avoiding conflicts and to aid in sharing of such items.
207
208 The registry is in the file xc/registry in the distribution.  The latest
209 version may also be available by sending a message to xstuff@x.org.  The
210 message can have a subject line and no body, or a single-line body and
211 no subject; in either case the line should look like this:
212
213         send docs registry
214
215
216
217 1.5.  Extensions Supported
218
219
220 The core distribution includes the following extensions:  BIG-REQUESTS,
221 DOUBLE-BUFFER, LBX, MIT-SHM, MIT-SUNDRY-NONSTANDARD, Multi-Buffering,
222 RECORD, SECURITY, SHAPE, SYNC, X3D-PEX, XC-APPGROUP, XC-MISC, XFree86-
223 VidModeExtension, XIE, XInputExtension, XKEYBOARD, XpExtension (print-
224 ing), XTEST, and XTestExtension1.
225
226 Not all of these extensions are standards; see the XStandards manual
227 page.  Some of these extensions are not supported on all platforms.
228
229
230 1.6.  Implementation Parameters
231
232
233 Some of the specifications define some behavior as implementation-
234 dependent.  Implementations of X Consortium standards need to document
235 how those parameters are implemented; this section does so.
236
237 XFILESEARCHPATH default
238      This default can be set at build time by setting the imake vari-
239      ables XFileSearchPathDefault, XAppLoadDir, XFileSearchPathBase, and
240      ProjectRoot in site.def.  See xc/config/cf/README for instructions
241      and xc/config/cf/X11.tmpl[2] for details of how these configuration
242      variables are used.
243
244      By default ProjectRoot is /usr/X11R6.3 and XFILESEARCHPATH has
245      these components:
246
247              /usr/X11R6.3/lib/X11/%L/%T/%N%C%S
248              /usr/X11R6.3/lib/X11/%l/%T/%N%C%S
249              /usr/X11R6.3/lib/X11/%T/%N%C%S
250              /usr/X11R6.3/lib/X11/%L/%T/%N%S
251              /usr/X11R6.3/lib/X11/%l/%T/%N%S
252              /usr/X11R6.3/lib/X11/%T/%N%S
253
254
255 XUSERFILESEARCHPATH default
256      If the environment variable XAPPLRESDIR is defined, the default
257      value of XUSERFILESEARCHPATH has the following components:
258
259              $XAPPLRESDIR/%L/%N%C
260              $XAPPLRESDIR/%l/%N%C
261              $XAPPLRESDIR/%N%C
262              $HOME/%N%C
263              $XAPPLRESDIR/%L/%N
264              $XAPPLRESDIR/%l/%N
265              $XAPPLRESDIR/%N
266              $HOME/%N
267
268      Otherwise it has these components:
269
270              $HOME/%L/%N%C
271              $HOME/%l/%N%C
272              $HOME/%N%C
273              $HOME/%L/%N
274              $HOME/%l/%N
275              $HOME/%N
276
277
278 XKEYSYMDB default
279      Defaults to /usr/X11R6.3/lib/X11/XKeysymDB, assuming ProjectRoot is
280      set to /usr/X11R6.3.
281
282 XCMSDB default
283      Defaults to /usr/X11R6.3/lib/X11/Xcms.txt, assuming ProjectRoot is
284      set to /usr/X11R6.3.
285
286 XLOCALEDIR default
287      Defaults to the directory /usr/X11R6.3/lib/X11/locale, assuming
288      ProjectRoot is set to /usr/X11R6.3.  The XLOCALEDIR variable can
289      contain multiple colon-separated pathnames.
290
291 XErrorDB location
292      The Xlib error database file is /usr/X11R6.3/lib/X11/XErrorDB,
293      assuming ProjectRoot is set to /usr/X11R6.3.
294
295 XtErrorDB location
296      The Xt error database file is /usr/X11R6.3/lib/X11/XtErrorDB,
297      assuming ProjectRoot is set to /usr/X11R6.3.
298
299 Supported Locales
300      X locales supported are in locale.dir; the mapping between various
301      system locale names and X locale names is in locale.alias.  Both
302      files are shipped in the xc/nls/X11/locale/ directory and installed
303      in the XLocaleDir directory (e.g. /usr/X11R6.3/lib/X11/locale/).
304
305 Input Methods supported
306      The core distribution does not include any input method servers.
307      However, Xlib supplies a default built-in input method that sup-
308      ports compose processing in 8-bit locales.  Compose files are pro-
309      vided for Latin-1 and Latin-2.  The built-in input method can sup-
310      port other locales, given suitable compose files.  See
311      xc/nls/X11/locale/Compose/iso8859-* for the supported compositions.
312
313 There are input method servers available on the net.
314
315
316
317 2.  What is Unchanged in Release 6.3
318
319
320 As this is an update release, there is a great deal of stability in the
321 standards, libraries, and clients.  No existing standards other than the
322 ICE library specification have changed in a material way, though several
323 documents have been updated with editorial improvements.  There is one
324 new interface added to the ICE library libICE; see below.  The extension
325 library, libXext, is updated to include the LBX, security, and applica-
326 tion group extension interfaces.  All previous interfaces in these and
327 all other libraries are unchanged.
328
329
330
331 3.  What Is New in Release 6.3
332
333
334 This section describes changes in the X Consortium distribution since
335 Release 6.1.
336
337 All libraries, protocols, and servers are compatible with Release 6 and
338 Release 6.1.  That is, R6 and R6.1 clients and applications will work
339 with R6.3 libraries and servers.  Most R6.3 clients will work with R6.1
340 and R6 libraries except those that use the new interfaces in libICE,
341 libXext, and libXp.
342
343 The major new functionality in R6.3 is support for World Wide Web
344 integration, protection of data from ``untrusted'' client connections, a
345 bandwidth- and latency-optimized protocol for using X across the Inter-
346 net, a print protocol following the Xlib API, and support for vertical
347 text writing and user-defined characters in the Xlib implementation.
348
349
350 3.1.  OS Support
351
352
353 The following platforms have a newer operating system version supported:
354
355
356 System         R6.1           R6.3
357
358 AIX            4.1.4          4.2
359 Digital Unix   3.2C           4.0A
360 HP-UX          10.01
361 IRIX           5.3            6.2
362 Solaris        2.4            2.5
363 UnixWare       2.02
364
365
366 We also built on the following platforms, however full support is not
367 guaranteed:
368
369
370 System         R6.1           R6.3
371
372 FreeBSD        2.1.0          2.1.6
373 Linux          1.2.13         2.0
374 SCO Open Server               5.0
375 SunOS          4.1.3          4.1.4
376 Windows NT     3.5            4.0
377
378
379
380 3.2.  New Standards
381
382
383 The following are new X Consortium standards in Release 6.3.  Each is
384 described in its own section below.
385
386         Low Bandwidth X Extension
387         RX: X Remote Execution MIME type
388         Security Extension
389         Application Group Extension
390         Print Extension
391         Proxy Management Protocol
392
393
394
395 3.3.  Low Bandwidth X Extension
396
397
398 The Low Bandwidth X extension (LBX) defines several compression and
399 local caching techniques to improve performance on wide area networks
400 and also on slower-speed connections.  These reduce the amount of proto-
401 col data transported over the network and reduce the number of client-
402 to-server roundtrips required for common application startup operations.
403
404 LBX was referred to as X.fast in some materials but we elected to not go
405 through the implementation and change all the names.  To avoid any con-
406 fusion with an external name different from the internal name in the
407 implementation, we elected to drop the ``X.fast'' moniker.
408
409 LBX is implemented in two pieces; an X server extension and a proxy
410 application.  The X server extension provides the new optimized proto-
411 col.  The proxy application, lbxproxy, translates a normal client X pro-
412 tocol stream into an LBX stream.  This permits any existing application
413 to gain the benefit of the optimized protocol with no changes.  The
414 proxy is especially useful when multiple applications are running on the
415 same local area network separated from the X server by a slower network.
416 In this case the full benefit of the local cache is shared by each
417 application using the same proxy process.
418
419 The specification for LBX is in xc/doc/specs/Xext/lbx.mif (FrameMaker
420 interchange source) and xc/doc/hardcopy/Xext/lbx.PS.Z (compressed
421 PostScript).
422
423
424 3.4.  RX: X Remote eXecution
425
426
427 The remote execution (RX) service specifies a MIME format for invoking
428 applications remotely, for example via a World Wide Web browser.  This
429 RX format specifies a syntax for listing network services required by
430 the application, for example an X display server.  The requesting Web
431 browser must identify specific instances of the services in the request
432 to invoke the application.
433
434 The distribution contains a helper program (xrx) and a Netscape Naviga-
435 tor plug-in (libxrx) that demonstrate this protocol.  The plug-in
436 requires Navigator 3.0.
437
438 We have only been able to test the plug-in on HP-UX, IRIX, Digital Unix,
439 and Solaris2.  Netscape Navigator binaries for other platforms are
440 either not available at all or were not available in time to be included
441 in the testing for this release.
442
443 The specification for the RX mime type is in xc/doc/specs/RX/RX.mif
444 (FrameMaker interchange source) and xc/doc/hardcopy/RX/RX.PS.Z
445 (compressed PostScript).
446
447 The following section describes the procedure to set up your environment
448 and try the examples provided in this distribution.
449
450
451 3.4.1.  Preparing Your Web Server
452
453
454 In order to demonstrate the RX helper program and the RX Netscape plug-
455 in you need to have access to an HTTP server to install ``common gateway
456 interface'' (CGI) scripts.  While CGI programs can be written in any
457 compiled or interpreted language, the sample CGI programs in the distri-
458 bution are written in perl.
459
460 If you don't currently have a web server the NCSA server is a good one
461 to try.  Binaries for various systems are available at:
462
463      http://hoohoo.ncsa.uiuc.edu/docs/setup/PreExec.html
464
465 If you don't have perl you can get the source code from:
466      ftp://prep.ai.mit.edu/pub/gnu/perl-4.036.tar.gz
467
468 You need to install the HTML, RX, and CGI sample files into your
469 server's HTML and CGI directories.  The process can be partially
470 automated by adding the following definitions to your site.def or
471 host.def file:
472
473
474 WebServer      defines the hostname and port of your web server, for
475                example
476
477                #define WebServer www.myorg.org:8001
478
479 HtmlDir        defines the path at which HTML and RX documents are
480                installed, for example
481
482                #define HtmlDir /usr/local/etc/httpd/htdocs
483
484 CgiBinDir      defines the path at which CGI programs are installed, for
485                example
486
487                #define CgiBinDir /usr/local/etc/httpd/cgi-bin
488
489 ProxyManager   defines the transport scheme, hostname, and port for CGI
490                programs to contact the Proxy Manager.  See the proxymngr
491                man pages for further details.  Typically the proxy
492                manager host will be the same as your web server, for
493                example:
494
495                #define ProxyManager tcp/www.myorg.org:6500
496
497 Then make the Makefiles and build the directories with the following
498 command sequence:
499
500 cd xc/programs/xrx/htdocs
501 xmkmf ../../.. programs/xrx/htdocs
502 make
503 make install
504 cd ../cgi-bin
505 xmkmf ../../.. programs/xrx/cgi-bin
506 make
507 make install
508
509
510 These directories are not automatically built or installed by the top
511 level Makefile because they install outside the ProjectRoot.
512
513 You also need to configure your web server so that files with the exten-
514 sion name ``rx'' are of the MIME type ``application/x-rx''.  See your
515 HTTP server's configuration documentation for the right procedure to do
516 so.
517
518
519 3.4.2.  The RX Helper Program
520
521
522 The helper program, xrx, may be used with any Web browser to interpret
523 the new RX document type.
524
525 The RX helper program is installed in <ProjectRoot>/bin (e.g.
526 /usr/X11R6.3/bin/).  You will need to configure your web browser to use
527 it for RX documents by adding a line to your $HOME/.mailcap:
528
529      application/x-rx; /X11/bin/xrx %s
530
531 You may need to refer to your web browser's documentation for exact
532 instructions on configuring helper applications.
533
534 The helper program is activated by your browser as soon as you retrieve
535 any document of the MIME type application/x-rx. All you need to do is to
536 point your browser at the URL:
537      http://your.web.server/xload.rx
538
539 The application (i.e. xload) should appear on your DISPLAY as a new
540 top-level client.  The client will be running on your web server host
541 and connected to your X server.  If your X server supports the SECURITY
542 extension the client will be running as an untrusted client.
543
544
545 3.4.3.  The RX Netscape Navigator Plug-in
546
547
548 The Navigator plug-in supports all the functions of xrx and in addition
549 uses the new XC-APPGROUP extension, if your X server provides it, to
550 cause the remotely launched application to be embedded within the
551 browser page from which it was launched.
552
553 The HTML page links to an RX document via the EMBED tag, a Netscape
554 extension to HTML.  The RX document provides the plug-in with the list
555 of services the application wants to use.  Based on this information,
556 the plug-in sets the various requested services, including creating
557 authorization keys, and passes the relevant data to the application
558 through an HTTP GET request of the associated CGI script.  The Web
559 server then executes the CGI script to start the application.
560
561 To be able to use the RX plug-in you need Netscape Navigator 3.0.
562 Binaries for various systems can be found at:
563
564      http://home.netscape.com/comprod/mirror/client_download.html
565
566 To complete the installation of the Netscape plug-in, find the file
567 named libxrx.so.6.3 or libxrx.sl.6.3 (or similar, depending on your
568 platform) in <ProjectRoot>/lib (e.g. /usr/X11R6.3/lib) and copy it to
569 either /usr/local/lib/netscape/plugins or $HOME/.netscape/plugins. Do
570 not install the symlinks libxrx.so or libxrx.sl; they may confuse
571 Netscape.
572
573 You should remove or comment out the line you may have previously added
574 in your mailcap file to use the RX helper program, otherwise the plug-in
575 will not be enabled.  (The usual comment character for mailcap is
576 ``#''.)
577
578 If you are already running Netscape Navigator, you need to exit and res-
579 tart it after copying the plug-in library so the new plug-in will be
580 found.  Once this is done you can check that Navigator has successfully
581 loaded the plug-in by checking the ``About Plug-ins'' page from the Help
582 menu. This should show something like:
583
584
585                                    RX Plug-in
586
587     File name: /usr/guest/netscape/plugins/libxrx.sl.6.3
588
589     X Remote Activation Plug-in
590
591     Mime Type Description          Suffixes  Enabled
592     application/x-rx               X Remote Activation Plug-inxrxYes
593
594
595 The plug-in will be activated by Netscape Navigator as soon as you
596 retrieve any document of the MIME type application/x-rx.  Several sam-
597 ples are included in the distribution. The most basic one is xload. All
598 you need to do is point your browser at the page:
599      http://your.web.server/xload.html
600
601 If something goes wrong check on the all the previous steps listed above
602 and try again.  Once xload is working you can try some of the other
603 examples in the distribution such as bitmap.html or dtcm.html.
604
605
606 3.4.4.  Trying Embedding With an Old X Server
607
608
609 The Netscape Navigator plug-in, libxrx, will work with an X server that
610 does not contain the application group or security extensions.  The
611 application will be started as a separate top-level client.
612
613 If you wish to try out the embedding facilities without replacing your
614 desktop X server, you may use the Xnest server.
615
616 A typical Xnest session would look like the following:
617
618 % Xnest :11
619 % xterm -display :11
620
621
622 These two commands start a ``nested'' server and a terminal emulator
623 within that server.  Your favorite window manager and Netscape Navigator
624 can now be executed from the nested xterm window.  You may wish to first
625 disable access control in the nested server by running ``xhost +'' in
626 the nested xterm.
627
628
629 3.4.5.  Setting Up Your Own Applications To Run Over The Web
630
631
632 Based on the examples provided in the distribution it should be easy to
633 set up your web server to run your own applications.  Every application
634 requires 3 additional files to identify it to Web browsers:
635
636 myapp.htmlAn HTML page to present the application embedded
637 myapp.rx  The RX document describing the application
638 myapp.pl  The CGI script to start the application
639
640 Note that the separate ``.rx'' file could be omitted by implementing the
641 CGI script such that if it is invoked without a QUERY_STRING it will
642 return the RX content.  We decided not to do so in the distributed exam-
643 ples for purpose of clarity.
644
645 The xload demo provides a good starting point. Simply make a copy of
646 each of the files xload.rx, xload.html, and xload.pl. Then look inside
647 them for every instance of ``xload'' and change it to whatever is
648 appropriate for your application.
649
650 You will not be able to run the dtcm demo unless you have dtcm (a CDE
651 component) installed on your web server host.  This example shows how a
652 CGI script would look when an X Print server is requested. The script
653 dtcm.pl is, for that reason, slightly more complicated than other exam-
654 ples.
655
656
657 3.5.  Security Extension
658
659
660 The SECURITY extension contains new protocol needed to provide enhanced
661 X server security.  This extension adds to the X protocol the concepts
662 of ``trusted'' and ``untrusted'' clients.  The trust status of a client
663 is determined by the authorization used at connection setup.  All
664 clients using host-based authorization are considered ``trusted''.
665 Clients using other authorization protocols may be either trusted or
666 untrusted depending on the data included in the connection authorization
667 phase.
668
669 The requests in the security extension permit a trusted client to create
670 multiple authorization entries for a single authorization protocol.
671 Each entry is tagged with the trust status to be associated with any
672 client presenting that authorization.
673
674 When a connection identifying an ``untrusted'' client is accepted, the
675 client is restricted from performing certain operations that would steal
676 or modify data that is held by the server for trusted clients.  An
677 untrusted client performing a disallowed operation will receive protocol
678 errors.  Such a client may be written to catch these errors and continue
679 operation.
680
681 When a client is untrusted, the server will also limit the extensions
682 that are available to the client.  Each X protocol extension is respon-
683 sible for defining what operations are permitted to untrusted clients;
684 by default, the entire extension is hidden.
685
686 The specification for the SECURITY extension is in
687 xc/doc/specs/Xext/security.tex (LaTeX source) and
688 xc/doc/hardcopy/Xext/security.PS.Z (compressed PostScript).
689
690
691 3.5.1.  Untrusted Application Behavior
692
693
694 Most applications work normally when run as untrusted clients, but since
695 the security extension changes the semantics of certain parts of the X
696 protocol, it is no surprise that some clients behave differently when
697 untrusted.  We note the following significant behavior changes,
698 separated into two categories: changes that we expect could disappear or
699 mutate if the implementation were improved in a future release, and
700 changes we expect are permanent, legitimate defenses against data loss
701 or leakage.
702
703
704 3.5.1.1.  Behaviors That Are Implementation-Dependent
705
706
707 The following behaviors when running the respective applications as
708 untrusted are not mandated by the security design but are side effects
709 of limitations in the current implementation.
710
711 oclock is square because the SHAPE extension hasn't been marked secure
712 yet.  Similarly, Xaw applications that use oval buttons will have rec-
713 tangular buttons instead.
714
715 Any application that depends on an extension other than XC-MISC, LBX, or
716 BIG-REQUESTS will have different behavior, as no other extensions are
717 currently marked secure.  The core clients affected are xieperf and all
718 the xkb utilities.
719
720 emacs exits with a Window error when trying to use the QueryPointer
721 request on the root window when you click in a buffer.
722
723 FrameMaker, and xwd -root both exit with a Window error when trying to
724 use the GetWindowAttributes request on a window manager frame window.
725
726 All the remaining changes are involved in some way with window proper-
727 ties.  Some of these behaviors can be modified with changes to the Secu-
728 rityPolicy file; see the Xserver man page.
729
730 Several clients exit with a Window error when trying to use the
731 DeleteProperty request on various properties on the root window.  These
732 include xcmsdb -remove, xprop -root -remove, and xstdcmap -delete.
733
734 xprop exits with an Atom error when attempting to access protected pro-
735 perties.
736
737 The following two changes require, in addition, a ``trusted selection
738 intermediary'' to provide selection transfer from untrusted to trusted
739 clients (and vice-versa).  R6.3 does not include such a trusted
740 intermediary.
741
742 xterm exits with an Atom error when it tries to store the property value
743 during a selection transfer (paste) to a trusted selection requester.
744
745 The ``copy 0 to PRIMARY'' button of xcutsel does not work.
746
747 Selection transfer from untrusted clients to trusted clients fails when
748 the untrusted client attempts to use SendEvent to generate the Selec-
749 tionNotify event for the requester.  Most requesters will treat this as
750 a transfer timeout and continue.  Xt-based applications will create an
751 additional Atom each time such a transfer is attempted.
752
753
754 3.5.1.2.  Behaviors That Are Not Likely To Change
755
756
757 The following behaviors represent actions performed by the applications
758 that are disallowed by design.
759
760 editres will fail when pointed at a trusted client when it tries to read
761 window properties on a window owned by that client.
762
763 Xnest exits on startup with an Access error as it tries to use the
764 ChangeKeyboardControl request.
765
766 The new generate option to xauth fails because untrusted applications
767 are not allowed to create additional authorizations.
768
769 xhost cannot be used to modify the host access list.
770
771 xmag gets an unending stream of Drawable errors as it tries to use the
772 PolyRectangle request on the root window.  If you click to select a
773 location to magnify, xmag gets a Drawable error as it tries to use the
774 GetImage request on the root window.  xmag could be modified to exit
775 gracefully under these conditions.
776
777 netscape exits on startup with a Drawable error when trying to use the
778 GetImage request on the root window.
779
780 xmodmap exits with an Access error when trying to use the ChangeKey-
781 boardMapping request.
782
783 xset with the b, c, led, or r options exits with an Access error when
784 trying to use the ChangeKeyboardControl request.  With the bc option, it
785 can't find the MIT-SUNDRY-NONSTANDARD extension and exits gracefully.
786
787 xsetroot exits with a Window error when trying to use the ChangeWin-
788 dowAttributes request on the root window.
789
790
791 3.6.  Application Group Extension
792
793
794 The application group extension (XC-APPGROUP) provides new protocol to
795 implement Application Groups (``AppGroups'').  The AppGroup facility
796 allows other clients to share the SubstructureRedirect mechanism with
797 the window manager.  This allows another client called the ``application
798 group leader'', such as a web browser, to intercept a MapRequest made by
799 a third application and reparent its window into the web browser before
800 the window manager takes control.  The AppGroup leader may also limit
801 the screens and visuals available to the applications in the group.
802
803 Users who have an XC-APPGROUP enhanced X server and an RX plug-in for
804 their Netscape Navigator web browser can run programs remotely over the
805 web and have the output appear as part of the presentation in their web
806 browser.
807
808 The only way for an application to become a member of an AppGroup is by
809 using an authorization generated using the new security extension.
810 Whenever an application connects to the server, the authorization that
811 it used to connect is tested to see if it belongs to an AppGroup. This
812 means that the Authorization data must be transmitted to the remote host
813 where the application will be run. In the case of RX, HTTP is used to
814 send the Authorization.  Sites who have concerns about sending unen-
815 crypted authorization data such as MIT-MAGIC-COOKIE-1 via HTTP should
816 configure their web servers and web browsers to use SHTTP or SSL.
817
818 The specification for the XC-APPGROUP extension is in
819 xc/doc/specs/Xext/AppGroup.mif (FrameMaker interchange source) and
820 xc/doc/hardcopy/Xext/AppGroup.PS.Z (compressed PostScript).
821
822
823 3.7.  Print Extension
824
825
826 The print extension supports output to hardcopy devices using the core X
827 drawing requests.  The print extension adds requests for job and page
828 control and defines how specific printer attributes are communicated
829 between the server and printing clients.  Printer attribute specifica-
830 tions are modeled after the ISO 10175 specification.
831
832 An X client that wants to produce hardcopy output will typically open a
833 second connection to an X print server, produce a print job, and then
834 close the print server connection.  The print server may be the same
835 process as the display server (the term ``video server'' is sometimes
836 used) although the implementation provided in R6.3 does not completely
837 support video and print servers in the same binary.
838
839 The specification for the print extension is in
840 xc/doc/specs/XPRINT/xp_proto.mif (FrameMaker interchange source) and
841 xc/doc/hardcopy/XPRINT/xp_proto.PS.Z (compressed PostScript).  The
842 library API specification is in xc/doc/specs/XPRINT/xp_library.mif
843 (FrameMaker interchange source) and
844 xc/doc/hardcopy/XPRINT/xp_library.PS.Z (compressed PostScript).
845
846
847 3.7.1.  Running an X Print Server
848
849
850 The print server is simply an X server with the print extension and spe-
851 cial DDX implementations.  The X Print Server is started like any other
852 X server.
853
854 Here is a sample command line for use with a typical configuration:
855
856 % Xprt :1 -ac
857
858
859 The options used in the example are:
860
861 :1        On a host that is running a video display server you will need
862           to specify a different display from the default.
863
864 -ac       Disable access control, since no simple mechanism for sharing
865           keys is provided.
866
867 The X print server supports the following additional options:
868
869 -XpFile   Points to the directory containing the print server configura-
870           tion files.
871
872 XPCONFIGDIREnvironment variable specifying alternative location of the
873           print server configuration files.
874
875 The print server, Xprt, is built only if the config option XprtServer is
876 YES.  Four printer DDXen are provided, each with a separate config
877 option to control whether or not it will be included: XpRasterDDX,
878 XpColorPclDDX, XpMonoPclDDX, XpPostScriptDDX; see xc/config/cf/README.
879 XprtServer defaults to the value of BuildServer (i.e. Xprt will be built
880 by default on all platforms that build a full X server).  XpRasterDDX
881 and XpMonoPclDDX default to NO.  XpColorPclDDX and XpPostScriptDDX
882 default to YES.
883
884 The print server is configured through a directory of configuration
885 files that define printer model types and instances of printer models.
886 An example configuration tree is provided in
887 xc/programs/Xserver/XpConfig/.  See also xc/doc/specs/Xserver/Xprt.mif
888 (FrameMaker interchange source) and xc/doc/hardcopy/Xserver/Xprt.PS.Z
889 (compressed PostScript) for further instructions on configuring Xprt.
890
891
892 3.7.2.  Specifying The Print Server To A Client
893
894
895 By convention, clients locate the print server using the environment
896 variable XPRINTER.  The syntax of XPRINTER is an augmented DISPLAY; i.e.
897
898      printerName@host:display
899
900 where ``printerName'' is one of the printer instances listed in the
901 print server configuration files.  The use of XPRINTER and its syntax is
902 an application convention only; there is nothing in the supplied
903 libraries that uses (or parses) this environment variable.
904
905
906 3.8.  Proxy Management Protocol
907
908
909 The Proxy Management Protocol is an ICE based protocol that provides a
910 way for application servers to easily locate proxy services such as the
911 LBX proxy and the X firewall proxy.
912
913 Typically, a service called a ``proxy manager'' is responsible for
914 resolving requests for proxy services, starting new proxies when
915 appropriate, and keeping track of all of the available proxy services.
916 The proxy manager strives to reuse existing proxy processes whenever
917 possible.
918
919 The Proxy Management Protocol is described in xc/doc/specs/PM/PM_spec.
920
921
922 3.9.  Configuration
923
924
925 As in R6.1, the top-level Makefile is no longer over-ridden by the first
926 build.  Instead a new file xmakefile is created.  Thus is it not neces-
927 sary to take any additional steps to reset the builds.
928
929 The file xc/config/cf/README provides more guidance on how to write an
930 Imakefile, including a list of variables that may be set in an
931 Imakefile.  This file is strongly recommended reading for Imakefile
932 authors.
933
934 The LaTeX text processor is supported as of R6.1.  If you have LaTeX on
935 your system, turn on HasLatex to have the MakeLatexDoc rule use it.
936
937 Also since R6.1, with System V Release 4 (SVR4) compilers we now use the
938 -Xa (ANSI C with native extensions) compiler flag rather than -Xc (limit
939 environment to that specified in the standard).  This provides access to
940 the full richness of the platform.  Unfortunately, it also defines the
941 preprocessor symbol __STDC__ to 0, instead of 1 as specified by the
942 standard.  Therefore we use "#ifdef __STDC__" in our sources rather than
943 "#if __STDC__".  On HP-UX systems we use the -Ae compiler option instead
944 of -Aa, also to access the full environment offered by the platform.
945
946 As in R6.1, the imake variables InstallXdmConfig, InstallXinitConfig,
947 and InstallAppDefFiles suppress overwriting existing files; if the files
948 didn't previously exist, the files are always installed.  This interpre-
949 tation makes bootstrapping a new system easier than in R6 and earlier
950 releases.
951
952 A new configuration build option, GzipFontCompression, has been added to
953 use gzip rather than compress for font compression.  It defaults to NO.
954
955 The build creates a new directory xc/exports into which the header
956 files, libraries, and certain build utility binaries are symlinked.
957 This greatly simplifies Imakefile construction and supports multiple
958 development projects (such as X, Motif, and CDE) on a single system.
959
960 Imake rules and template files for building Motif and CDE were contri-
961 buted by the OSF CDE/Motif project and are included in R6.3.
962
963
964 3.10.  Documentation
965
966
967 Additional X server internals documentation is provided in the
968 /xc/doc/specs/Xserver/ directory for the XC-APPGROUP and SECURITY exten-
969 sions.  An analysis and rationale for the SECURITY extension will also
970 be found in that directory.  Specifications for the other new standards
971 are in /xc/doc/specs/RX/, /xc/doc/specs/XPRINT/, and
972 /xc/doc/specs/Xext/.
973
974
975 3.11.  Header Files
976
977
978 xc/include/Xos_r.h is a new header file to promote portable source code
979 using thread-safe implementations of getpwnam, getpwuid, gethostbyname,
980 gethostbyaddr, and getservbyname.  It is not required by any X Consor-
981 tium standard.
982
983
984 3.12.  X Server
985
986
987 The security, LBX, printing, and AppGroup extensions are all new.  In
988 R6.3 only MIT-MAGIC-COOKIE-1 is supported in the security extension.
989 Parts of the security policy are configured at run-time from the file
990 /usr/X11R6.3/lib/X11/xserver/SecurityPolicy.  Site-defined policy
991 strings used by xfwp and rules for property access by untrusted clients
992 are defined there.  See the Xserver man page for full details.
993
994
995 3.12.1.  New Device Support
996
997
998 Support has been added for the Sun TCX frame buffer as a dumb 8-bit
999 frame buffer on Solaris 2.5.
1000
1001 New XFree86 servers based on XFree86 3.2 are included.
1002
1003
1004 3.12.2.  Internal Changes
1005
1006
1007 The security extension provides new internal resource ID lookup inter-
1008 faces that incorporate the access control lookup.  In order to be
1009 declared secure and therefore be made available to untrusted clients,
1010 other extensions should, at a minimum, be changed to use these inter-
1011 faces.  Depending on what the extension does, more may need to be done
1012 in its implementation before it can appropriately be labeled ``secure''.
1013
1014 Refer to the documents xc/doc/specs/Xserver/appgroup.ms and
1015 xc/doc/specs/Xserver/secint.tex for implementation details of the appli-
1016 cation group and security extensions, respectively.
1017
1018
1019 3.13.  ICE Library Addition
1020
1021
1022 To support proxy managers and firewall proxies using ICE on well-known
1023 TCP ports, an additional interface has been added to the ICE library.
1024 This new interface, IceListenForWellKnownConnections, has equivalent
1025 calling parameters to IceListenForConnections plus an ICE network id
1026 parameter.
1027
1028
1029 3.14.  Xlib Vertical Writing and User-Defined Characters
1030
1031
1032 The Xlib output method implementation has been enhanced to support the
1033 XOM value drawing direction XOMOrientation_TTB_RTL.  Vertical writing
1034 information and other locale specific information is read from the file
1035 <XLocaleDir>/%L/XLC_LOCALE where the XLocaleDir configuration option
1036 defaults to /usr/X11R6.3/lib/X11/locale.
1037
1038 The X[mb|wc]TextEscapement functions now return the text escapement in
1039 pixels for the vertical or horizontal direction depending on the
1040 XNOrientation XOCValue.
1041
1042 The X[mb|wc]DrawString functions will now render a character string in
1043 the vertical or horizontal direction depending on the XNOrientation
1044 XOCValue.
1045
1046 The Xlib NLS database implementation has been enhanced to support
1047 extended segments used for interchanging non-standard code sets.  Sup-
1048 port has been added for control sequences and encoding names used in
1049 extended segments and conversion of glyph indexes when interchanging
1050 data in extended segments.
1051
1052
1053 3.15.  Xt Geometry Management Debugger
1054
1055
1056 Daniel Dardailler's ``GeoTattler'' code has been merged into the Xt
1057 Intrinsics library implementation.  This is not a standard.  If libXt is
1058 compiled with the XT_GEO_TATTLER symbol defined (currently there is no
1059 build configuration support to do this) then a ``geoTattler'' resource
1060 may be specified for any widget in an application.  If the geoTattler
1061 resource for a widget instance is True then libXt will generate debug-
1062 ging information to stdout when the widget makes geometry change
1063 requests.
1064
1065 For example, if the resources specify:
1066
1067 myapp*draw.XmScale.geoTattler: ON
1068 *XmScrollBar.geoTattler:ON
1069 *XmRowColumn.exit_button.geoTattler:ON
1070
1071 then geometry management debugging information will be generated for all
1072 the XmScale children of the widget named draw, all the XmScrollBars, and
1073 the widget named exit_button in any XmRowColumn.
1074
1075 3.16.  New Programs
1076
1077
1078 There are new core programs lbxproxy, proxymngr, xfindproxy, xfwp, Xprt,
1079 and xrx.
1080
1081
1082 lbxproxy    The lbxproxy program is used to ``translate'' X protocol to
1083             LBX protocol.  It should be executed on the same host as the
1084             client application or on a host connected to the client host
1085             by a fast network.  lbxproxy appears to the clients using it
1086             as another X server; that is, the clients connect through it
1087             using the conventional DISPLAY syntax, specifying the proxy
1088             host in place of the server.  lbxproxy can be used stand-
1089             alone or in conjunction with proxymngr and xfindproxy.  See
1090             the lbxproxy man page for further details.
1091
1092 proxymngr   proxymngr is a process that runs continuously to control
1093             other proxy applications, such as lbxproxy and xfwp.  It
1094             maintains a list of active proxy processes and responds to
1095             queries from xfindproxy.  See the proxymngr man pages for
1096             further details.
1097
1098 xfindproxy  xfindproxy is used to locate a running proxy process for a
1099             given network service, such as lbxproxy or xfwp, or to
1100             request that a proxy be started if one is not already run-
1101             ning.  xfindproxy communicates with proxymngr to perform the
1102             actual work.
1103
1104 xfwp        xfwp is the X firewall application proxy.  It is designed to
1105             run on a network firewall host and relay X protocol between
1106             applications (typically outside the firewall) and the X
1107             server (inside the firewall).  xfwp appears to the clients
1108             using it as another X server; that is, clients connect
1109             through it using the conventional DISPLAY syntax.  xfwp will
1110             not do anything useful without proxymngr and xfindproxy or
1111             xrx.  See the xfwp man page for further details.
1112
1113 Xprt        Xprt is the print server, built as part of the Xserver build
1114             if the XprtServer config option is YES.  The print server
1115             supports printing to PostScript and PCL devices, as well as
1116             raster output to an xwd format file (and thence to any
1117             printer that xpr supports).  The print extension was
1118             designed to be integrated with the ``video'' server in a
1119             single process but the R6.3 implementation does not support
1120             a combined video and print server.  Details of configuration
1121             for Xprt are in xc/doc/specs/Xserver/Xprt.mif (FrameMaker
1122             interchange source) and xc/doc/hardcopy/Xserver/Xprt.PS.Z
1123             (compressed PostScript).
1124
1125 xrx, libxrx xrx is the Web browser helper application that interprets
1126             documents in the RX MIME type to remotely launch applica-
1127             tions via the Web.  Its companion libxrx is a plug-in for
1128             Netscape Navigator 3.0 that supports in addition the capa-
1129             bility to visually embed the remote applications in the
1130             associated browser Web page window.  See the xrx man page
1131             for further details.
1132
1133
1134 3.16.1.  Using The LBX Proxy
1135
1136
1137 The implementation of lbxproxy provided here will support an arbitrary
1138 number of clients connecting to the same X server.  A separate lbxproxy
1139 process is required for each separate X server process.  A typical com-
1140 mand line to invoke lbxproxy is
1141 lbxproxy :22 -display myhost:0
1142
1143
1144 This command runs a proxy with the X server ``myhost:0'' as the target.
1145 Clients must connect to the proxy using ``proxyhost:22'' as the DISPLAY.
1146 The .Xauthority file for these clients must contain an entry for server
1147 ``proxyhost:22'' with the same MIT-MAGIC-COOKIE as ``myhost:0'', or the
1148 X server must be configured to permit connections from any host on the
1149 network.
1150
1151 Here is an example showing how to setup the appropriate .Xauthority
1152 entries:
1153
1154 % lbxproxy :22 -display myws:0
1155 % xauth list
1156 myws:0  MIT-MAGIC-COOKIE-1  7fd231ccdce2
1157 myws/unix:0  MIT-MAGIC-COOKIE-1  7fd231ccdce2
1158 % xauth -f $HOME/proxyauth add proxyhost:22 .  7fd231ccdce2
1159 xauth:  creating new authority file /usr/myself/proxyauth
1160 % xauth -f $HOME/proxyauth  add proxyhost/unix:22 .  7fd231ccdce2
1161 % setenv XAUTHORITY $HOME/proxyauth
1162
1163
1164 In this example, the authorization token for display 0 is copied into a
1165 new file ``proxyauth'' and associated with the LBX proxy server display
1166 number (22).  The new authority file may then be copied to another host
1167 and used as the value of the XAUTHORITY environment variable.
1168
1169 The proxymngr daemon is usually configured to invoke lbxproxy automati-
1170 cally when a user or a CGI script runs xfindproxy -name LBX.
1171
1172 See the lbxproxy man page for further details.
1173
1174
1175 3.17.  Major Additions to Existing Programs
1176
1177
1178 The generate option of xauth is used to obtain additional authorization
1179 tokens for client connections.  These authorization tokens may specify
1180 that the client using them is to be restricted in the operations that
1181 may be performed in the X server.  The authorization tokens may be
1182 independently revoked.  Refer to the SECURITY extension for further
1183 details on authorizations.
1184
1185 The xauth man page gives full details on the new generate command.  Here
1186 is an example use:
1187
1188 xauth -f untrusted-auth-file g :0 . timeout 0
1189 setenv XAUTHORITY untrusted-auth-file
1190
1191 This will cause xauth to contact server ``:0'' to get a long-lasting
1192 untrusted cookie which it then stores in untrusted-auth-file.  By set-
1193 ting XAUTHORITY to point to untrusted-auth-file, subsequent applications
1194 run from this shell to server :0 will be untrusted.  The ``g'' is short
1195 for ``generate'', and the ``.'' is short for ``MIT-MAGIC-COOKIE-1''.  If
1196 you omit the -f argument, xauth will use $XAUTHORITY (or ~/.Xauthority),
1197 which may not be what you want, especially if you are creating an
1198 untrusted auth.  This is because xauth will replace the trusted auth in
1199 ~/.Xauthority (put there by xdm) with the untrusted one, preventing you
1200 from making any further trusted connections to the server.
1201
1202 The xterm terminal emulator now supports the active icon mode that was
1203 in X version 10 Release 4.  See the xterm man page for further details.
1204 There is support in the xterm source to build xterm without the active
1205 icon mode for those who may care for some reason to not provide it.
1206
1207
1208 3.18.  ANSIfication
1209
1210
1211 As noted previously under "Configuration Files", for pragmatic reasons
1212 we changed the way we use __STDC__ to test for standard C compilers.
1213 R6.1 was officially the last release that supported traditional K&R C.
1214 R6.3 assumes a standard C compiler and environment.  We have not inten-
1215 tionally removed any K&R C support from old code; most of the release
1216 will continue to build on older platforms.
1217
1218
1219
1220 4.  Known Bugs
1221
1222
1223 There are no examples in this release showing how to use the print
1224 extension.  CDE 2.1 has several such applications.
1225
1226 lbxproxy fails to start on SCO Open Server.
1227
1228 x11perf running through lbxproxy will tickle a drawing bug in cfb-based
1229 X servers that causes some lines and curves to be drawn to the wrong
1230 coordinates and outside the window boundaries.  Use the -nogfx option to
1231 lbxproxy as a workaround on affected servers.
1232
1233 If proxymngr exits abnormally all managed proxies die.
1234
1235 Documentation is missing on how to use the vertical writing and user-
1236 defined character support.
1237
1238 Documentation is sparse on how to configure Xprt.
1239
1240 There are no example fonts in the release with vertical text escapement
1241 (``vertical writing fonts'').
1242
1243
1244
1245 5.  Filing Bug Reports
1246
1247
1248 If you find a reproducible bug in software in the xc/ directory, or find
1249 bugs in the xc documentation, please send a bug report to The Open Group
1250 using the form in the file xc/bug-report and this destination address:
1251
1252         xbugs@x.org
1253
1254
1255 Please try to provide all of the information requested on the form if it
1256 is applicable; the little extra time you spend on the report will make
1257 it much easier for someone to reproduce, find, and fix the bug.
1258
1259 Bugs in the contributed software that is available on the net are not
1260 handled on any official basis.  Consult the documentation for the indi-
1261 vidual software to see where (if anywhere) to report the bug.  Many
1262 authors of contributed software subscribe to the mailing list "contrib-
1263 bugs" hosted at x.org, so this might be a useful place to report bugs.
1264 (To subscribe to contrib-bugs yourself, send email to contrib-bugs-
1265 request@x.org.)
1266
1267
1268
1269 6.  Acknowledgements
1270
1271
1272 Release 6.3 of X Version 11 was brought to you by the X staff at the X
1273 Consortium, Inc.:  Donna Converse (emeritus), Jim Fournier, Stephen Gil-
1274 dea (emeritus), Kaleb Keithley, Matt Landau (emeritus), Arnaud Le Hors,
1275 Ralph Mor (emeritus), Bob Scheifler, Ralph Swick, Ray Tice, Mark Welch
1276 (emeritus), and Dave Wiggins (emeritus).  Kevin Samborn and George Tsang
1277 (emeritus) of the CDE staff at X Consortium, Inc. worked hard on the
1278 print extension, including the PostScript driver; David Kaelbling of the
1279 CDE staff converged the X, Motif, and CDE imake/config support and
1280 helped with Xos_r.h; and Daniel Dardailler (emeritus) of the CDE staff
1281 contributed the libXt geometry tracing code.  Also, contractors Reed
1282 Augliere, Roger Helmendach (Liberty Systems), and Ann Pichey each worked
1283 on critical components.
1284
1285 Several companies and individuals have cooperated and worked extremely
1286 hard to make this release a reality, and our thanks go out to them.  You
1287 will find many of them listed in the acknowledgements in the individual
1288 specifications.
1289
1290 Ken Raeburn of XFree86 and Cygnus Support contributed the gzip font
1291 compression support.
1292
1293 The Common Desktop Environment sponsors Digital Equipment Corp, Fujitsu,
1294 Hewlett-Packard, Hitachi, IBM, Novell, and SunSoft jointly contributed
1295 the print extension and the Xlib vertical writing and user-defined char-
1296 acter support.  Axel Deininger, Harry Phinney, Tom Gilg, Charles Prince,
1297 and Jim Miller all from Hewlett-Packard did the print extension and PCL
1298 and raster drivers.  Fujitsu did the Xlib vertical writing and user-
1299 defined character support.
1300
1301