Monday February 21, 2005
alanc @ sun.com
Alan Coopersmith’s blog
Random thoughts of a disorganized mind...
(and though it should be obvious, while Sun pays me to think about things, they disclaim any responsibility for these thoughts, nor do I claim what I say matches in any way what Sun thinks)
CDDL basher needs to learn his license facts
Rich Teer posted a detailed rebuttal to Jason Perlow's recent Linux Magazine attack on the CDDL. Unfortunately, it appears Mr. Perlow doesn't know much about the licenses already used by the software included in Linux distros from one of the quotes Rich highlights:
Perhaps its just me, but does anyone else find it particularly obnoxious that Sun finds it completely acceptable to embrace GPL technologies like GNOME and Xfree86 in Solaris, while at the same time prevents cross-pollination of Solaris technology to GPL projects with the CDDL? Sun's strategy is a one-way street...Perhaps the reason people don't agree is because the statement is wrong on several points. First, XFree86 is not covered by the GPL, but in fact has traditionally been covered by the MIT/X11 license, that is much more like the BSD license than the GPL, and has refused to incorporate any GPL-licensed code. That is until XFree86 4.4, when it adopted a new version of the license that the FSF notes as being GPL-incompatible in its list of open source licenses. (We've actually moved to Xorg in Solaris x86, which while it's based on the XFree86 work, only includes XFree86 code covered by the older license.)
The other point is that while the code being newly released is covered by the CDDL, we honor the licenses for existing code and work with those communities. For instance, our code donations to GNOME projects are covered by the GPL and LGPL as appropriate, and our contributions to X.Org and XFree86 have been under the X11 license. If you look through those code bases you'll find lots of code covered by Sun Microsystems copyrights which we've given back to those communities under their usual terms.
Besides, it hardly seems that a Linux and GPL advocate has much ground to stand on when pontificating about "one way street" licenses - after all, hasn't that been how the GPL has kept Linux and BSD apart for years? Linux can take BSD-licensed code from the BSD projects and use it, but the GPL prevents those projects from taking any code from Linux without changing their license terms - the exact complaint Mr. Perlow makes here about Solaris.
Posted at 11:26PM Feb 21, 2005 by Alan Coopersmith in Solaris | Comments[2]
Top 3 Questions asked at the X.Org LinuxWorld booth
I spent a lot of the LinuxWorld show in the X.Org booth, talking to people who stopped by to see what we were up to. From both my time and my conversations with the other booth volunteers, I think I can safely say these were the three most frequently asked questions:
- What am I seeing here? What are you demoing?
- What's X.Org? What's the difference between X.Org and XFree86?
- When will Debian include Xorg packages?
For those who didn't get to stop by and ask in person, the answers given were:
1) What am I seeing here? What are you demoing? The demos depended on when you stopped by the booth and who was set up to demo at the time. They included:
- Composite Extension
- Keith Packard and Jim Gettys were showing off demos using this at various times. While an early version of this extension was included in the Xorg 6.8.0 release last fall, they were demoing from a more recent release using the experimental "xserver" tree on freedesktop.org that has a different acceleration framework better suited to the operations in use. The demos showed how the simple idea of the extension could be used in a variety of powerful ways. The extension just renders all windows to offscreen buffers and then let a special program called a compositing manager take those buffers and transform them any way it wants to render them on the screen. (It's usually coupled with the Damage Extension which lets the compositing manager know when the other programs have updated their windows and which portions of the windows were "damaged" and need to be redrawn.) The simplest demo is just grabbing a window and moving it around in front of others, showing that it can be instantly refreshed from the offscreen buffers instead of waiting for the applications underneath to redraw as you often see in current X environments. One of the most impressive demos had a translucent video player, updating at normal rates, even while it was alphablending with the windows above and beneath it. A more useful demo showed thumbnails of all the windows side by side, showing what they'd look like if they were fully uncovered, even if parts of the real window were obscured. And one of the simplest transformations, scaling, was used to show how this could magnify the screen contents for users with poor vision. (I've talked with some of our accessibility guys at Sun, and we're hoping the GNOME magnifier could be updated to support this soon.)
- Xgl
- (not to be confused with XGL, Sun's old competitor to IrisGL in the days before everyone agreed to standardize and OpenGL was born) David Reveman stopped by for a bit to show off his OpenGL based X server, again using the power of the Composite extension to do some cool tricks, but this time using the hardware accelerated 3-D drivers for fuller effect. Zooming in and out was smooth and quick. The coolest eye candy though was probably the cute trick he showed off at the Xdevconf as well - he popped up a lightbulb icon to represent the light source, and drug it around the screen, so you could see the window shadows - even under the translucent bits - update in real time. Drag it to one edge of the screen and all the shadows are long out the other side. I know people (including sometimes me) who lose track of the time at the computer - so if the movement of the light source could instead be tied to the time of day, so when we see long shadows pointing to one side, we know it's late in the afternoon without having to look at the clock, it could be an cool subtle reminder of how late it's getting - though the abstraction would break down once you cross into the evening hours when true hackers really get going.
- MAS
- Leon Shiman had demos set up of music players on one computer sending the bits over the net to come out of speakers attached to another computer. Complex graphs on some monitors showed the myriad ways the MAS components could be mixed and matched for a variety of situations. It also helped make sure we had some nice music to listen to in the lulls between visitors. (Sometimes we'd have 20 visitors at once, then they'd all wander off and there would be no one but us for a few minutes.)
2) What's X.Org? What's the difference between X.Org and XFree86? Compared to the time I spent at the X.Org booth in the August LinuxWorld, fewer people were asking what X.Org is, as they've seen it appear in distros such as Fedora, SuSE, and Ubuntu. Many still didn't know the history - that X.Org is both old and new. It's the descendent of the organizations that have produced the X Window System standards and sample implementations for over two decades - going back to the original MIT X Consortium, but it's also only about a year old, the X.Org Foundation having been unveiled at last year's LinuxWorld Expo in New York. Before that, various developers had decided that the goals and management style of the XFree86 Project didn't match what they wanted to do with X and were looking to form a new X project, while the old X.Org industry consortium was struggling to determine how to become more open and re-energize development that had become stagnant. Both groups had tried working with the leadership of the XFree86 Project, but couldn't come to an agreement with them. They found each other and determined they could work together, and after long discussions, X.Org was reborn as the X.Org Foundation.
The XFree86 Project then decided they wanted to be sure they received full credit for their work and changed their license terms. While they were within their rights to do so, the way it was done and concerns over whether or not the new license was compatible with the GPL caused many distros to look at the new Xorg server offering. The Xorg 6.7.0 release provided a foundation that was very close to the XFree86 4.4 release, and was followed in September by the Xorg 6.8.0 release, which provided the first set of new features developed by X.Org contributors. These releases convinced people that moving to Xorg was worthwhile, and many distros have switched over. You can now find Xorg in many Linux and BSD distros, and even Solaris 10 for x86/x64.
The XFree86 Project still continues to move forward in their own way though - they're currently testing release candidates for a 4.5 release now.
3) When will Debian include Xorg packages? Ahh, the tough one, which different people offered different answers for, including:
- Good question, we wish we knew.
- Their booth is right behind us, why don't you go ask them?
- Once "sarge" ships
- Today, if you grab the Ubuntu packages and install them yourself.
- Ask again later. (when Magic 8 Ball was consulted)
Posted at 08:37PM Feb 21, 2005 by Alan Coopersmith in X11 |
Modular or Monolithic?
After the LinuxWorld Expo show floor closed today, a bunch of us from X.Org went out for dinner across the street at Vinny T's. The conversation eventually got down to the inevitable question - modular or monolithic? The monolothic choice seems more traditional, while the modular option is definitely a popular modern style. The problem of course was that the monolithic way means we all have to agree on the parts we want to get and get it all in one huge pile, while some people would rather limit their intake and the modular alternative allows them to get just as much as they want, while allowing those who want more to get it. We had people there from companies including Sun, HP, SuSE, and Red Hat, as well as open source developers not affiliated with any of our firms - but despite what our marketing departments and executives say about each other, we had a very friendly conversation, as we usually do. (Fighting for deals and competing with each other is for the sales & marketing people - the engineers just want to make our products the best they can be, and co-operating with each other is the most optimal way we've found to do that.) After a while it became clear that we couldn't all agree on the right mix of parts in a monolithic package that matched what all of us wanted, and didn't want to force our choices on those who came to the table later, so we went with the only logical choice and chose the modular delivery for our dinner - individual orders instead of a monolithic "family style" serving. The portions were still quite large and very good, though it was the dessert later at Finale that elevated the evening to completely excellent (and requiring a lot of walking the show floor tomorrow to work it off).
Now if only we could put the modular vs. monolithic source tree debate for Xorg to bed so easily, though I think the discussions we had here this week to work out what our concerns, issues, and goals for this change will help a lot in getting us to that point. We gave Kevin Martin a lot of feedback and he's working on putting something together that can get the discussion organized in the X.Org Modularization Working Group and hopefully avoid the endless rehashing of the issues that have stalled progress on this so far, so the working group can put together a plan that we can all agree we can live with. [Technorati Tag: Xorg]Posted at 09:12PM Feb 15, 2005 by Alan Coopersmith in X11 | Comments[2]
X.Org 6.8.2 & Developer's Conference
Just in time for this weekend's X.Org Developer's Meeting, X.Org 6.8.2 has been released. This is mainly a bug fix and new hardware support release, so not incredibly exciting except as the first test of our ability to turn out maintainence releases. This one took a little longer than originally planned due to the freedesktop.org downtime and winter holidays, but we shouldn't have those interfere with 6.8.3.
For those who want to know what may be coming in the next big release, but couldn't make it to the meetings in person, you can still tune in to this weekend's sessions via videocast, audiocast, and IRC - see http://freedesktop.org/wiki/Software/XDevConf. [Technorati Tag: Xorg]Posted at 07:51PM Feb 11, 2005 by Alan Coopersmith in X11 | Comments[1]
X Changes in Solaris 10
So now that Solaris 10 is out, I went back over the list of the changes we put in the X Window System components. If I got the grep options right, there were 689 entries in our equivalent of a ChangeLog. Of course, these range from a 2 minute man page typo fix to things like "merge STSF development tree into S10 branch" which represent multiple engineering years of work and of course the integration of the Xorg server for Solaris x86, which while it distills down to a single change log entry, represents centuries of time devoted by the hundreds of people who have contributed to the MIT X Consortium, XFree86 Project, and X.Org Foundation. I've blogged about a number of changes already, and have a few more that I'll cover soon, but I figured for now, I'd just hit the highlights of what we've done over the last three years to the X software in Solaris, though you've seen some of this already appear in the Solaris 9 update releases after being tested for a while in the Solaris 10 development branch.
The big one is of course the integration of the Xorg 6.8.0 server for Solaris x86. Solaris versions before now shipped with the Xsun server (and long long ago, with Xnews, a hybrid X11/NeWS server). Xsun and Xorg both sprung from the same base code from the X Consortium long ago, but evolved in different ways. We had been working on porting new extensions and x86 device drivers from XFree86 to Xsun for several years, but it was becoming increasingly difficult to do so. With the formation of the X.Org Foundation and revitalization of the main stream of X development, along with the rebirth of Solaris on x86 platforms and Sun's AMD64 workstations, we decided it was better to move to just shipping the Xorg release directly and porting the most useful features from Xsun to Xorg. The transition process will take a while, but Solaris 10 starts us down the road - Xorg is provided for Solaris on x86 in 32-bit, we're looking to provide SPARC & AMD64 64-bit versions in the future, though I can't promise just when yet. When you install Solaris 10 on x86, it will ask you which X server you want to run, Xorg or Xsun. You can read more about Xorg on Solaris in my previous blog entries on the subject from Sept. 17 and Sept. 24. Xsun wasn't ignored though, and got a fair amount of enhancements as well. For instance, even farther back in my previous blog entries, you can find this series of posts on wheel mouse support in Xsun. This was actually part of a set of input device enhancements which also included raising the maximum number of mouse buttons supported from the previous limit of 3, and honoring the setttings of Num Lock and Caps Lock at server startup instead of always clearing them. We also added the -defdepth and -defclass flags to Xsun to make it easier to control the default depth and visual class, and used these flags to make the 24-bit become the default color depth for Xsun, which may just be the Solaris 10 Xsun change that resulted in the most people e-mailing us to thank us for. Accessibility was a big focus for our group in Solaris 10, working closely with Sun's Accessibility Program and GNOME teams. We developed the X Event Interception Extension (XEvIE) which was then contributed to X.Org and included in the Xorg 6.8.0 release. We also brought in the Damage and XFixes extensions needed for this work, as well as making improvements to the X Keyboard (XKB) support in Xsun. The GNOME screen magnifier was designed to use two screens for full screen magnification, so we converted the Xvfb virtual frame buffer into a loadable module for Xsun so you can have physical and virtual screens in the same X server. (Xorg's "dummy" driver already fills this need for it.) The IPv6 work begun in Solaris 9 continued, updating to from the drafts we had proposed to the standards version adopted by X.Org for X11R6.7. Fortunately, we didn't have to change anything we'd already done, just add to it extensions such as the ServerInterpreted access control methods, and the IPv6 support in the XDMCP protocol for remote session setup. Security improvements were another area of attention, though mostly in smaller ways. For instance, the combination of Solaris 10's new getpeerucred() call and the ServerInterpreted authentication mechanism we added to X11R6.7 allowed creating a simple new authentication type for local connections. You can allow a local user access to a X display based on their user or group ids using the xhost command, for instance "xhost +si:localuser:alanc." This was donated back to X.Org and included in the 6.8.0 release for other platforms with similar support. You can find more details in the Xsecurity(5) man page. Other security-related changes included updates to the Solaris xdm & xlock programs to use Pluggable Authentication Modules (PAM), a system Sun developed years ago and other OS'es have adopted to allow easier customization of user authentication, from basic passwords to interacting with special devices like smartcards. When creating X authentication keys, xdm and mkcookie now use the kernel random devices to make it harder to predict the key values. While we'd like to think all this and our prior work makes X in Solaris pretty secure, we know we're not perfect, so for a little added protection in case someone finds something we've missed, you may see that 'elfdump -p' on the X binaries reports a few less sections of the program address space are executable than in previous releases, on both SPARC, where this protection has been present for a while, and on x86, where's it new in Solaris 10 due to the newly supported NX feature of AMD64 CPU's. Of course, since Solaris 10 added support for 64-bit mode on the AMD64 cpu's, we added 64-bit x86 (or I should say "x64" now) versions of the main X libraries used by client applications. Some of the libraries for extensions being phased out or not widely used did not get ported, but there's enough there for the vast majority of X applications to be built in 64-bit mode. We also made moves to support the new Solaris 10 Service Management Facility (SMF) and Role-Based Access Control (RBAC). I've explained the Desktop Configuration Rights Profile for RBAC already, and will write someday soon about the SMF configuration of the X server. The X Font Server (xfs) and STSF Font Server loader (stfsloader) inetd services were also both converted to SMF, as was the FontConfig cache builder (fc-cache) startup script. We integrated a whole pile of open source software, most in support of GNOME and the Java Desktop System. This included FreeType 2.1.9, FontConfig 2.2.3, Xft2, the Bitstream Vera Fonts, the X Render Extension, and the X-Resource Extension. The versions of xclock, xdm, and xman in Solaris were updated to the latest versions from X.Org or XFree86 (depending on when we did the updates) as well. Working with the x86 driver team, who integrated the drivers from the XFree86 porting kit for Xsun, we included changes they wrote that allow Xsun to probe the hardware on x86 to detect which of those drivers to use automatically, much as XFree86 and Xorg do. Not all the Solaris 10 changes were additions though - we did remove some things whose time had passed. The frame buffer modules for the sun4m and older machines, including bw2, cg3 and cg8 were laid to rest when sun4m support was removed from Solaris after more than a decade of valiant service. The static versions of the X libraries also passed beyond the veil as Solaris moved to only providing shared libraries with the operating system. All in all, a lot of work (and I didn't even cover hundreds of the less interesting changes) that I'm proud to be a member of the team of engineers responsible for. (Whew, only took 10 days to find enough spare moments to type that all in - now to go start packing for my trip to the X.Org developer's meeting in Boston to start talking about what we'll be working on next with the open source community.) [Technorati Tag: Solaris] [Technorati Tag: Xorg]Posted at 07:59PM Feb 09, 2005 by Alan Coopersmith in Solaris | Comments[4]
