<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="lyceum/1.0.2" -->
<!-- This is 512 bytes of nonsense, since the Firefox 2 developers, in one of the strangest decisions ever, decidedthey would obsolete XML styles by overriding them without permission.  Furthermore, the developers appear to be disinterested in fixing this.  Therefore, we use the unofficial workaround, which includes fillingup the first 512 bytes of a document so that the sniffer doesn't encounter the RSS tag.  I really enjoyusing Firefox, but this particular behavior really annoys me! Anyway, since I'm almost at 512 characters, I'mgoing to ramble on for another minute in this comment, and then, without further adue, present you with avalid XML feed. -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Red Hat Magazine</title>
	<link>http://www.redhatmagazine.com</link>
	<description></description>
	<pubDate>Wed, 23 Jul 2008 22:12:52 +0000</pubDate>
	<generator>http://lyceum.ibiblio.org/?v=1.0.2</generator>
	<language>en</language>
			<item>
		<title>Video: Fedora Live</title>
		<link>http://www.redhatmagazine.com/2008/07/23/video-fedora-live/</link>
		<comments>http://www.redhatmagazine.com/2008/07/23/video-fedora-live/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 22:12:52 +0000</pubDate>
		<dc:creator>the editorial team</dc:creator>
		
		<category>Fedora</category>

		<category>multimedia</category>

		<guid isPermaLink="false">http://www.redhatmagazine.com/2008/07/23/video-fedora-live/</guid>
		<description><![CDATA[<a href=""><img src="http://www.redhat.com/g/magazine/video_stills/Fedora_DV_NTSC-210.png" width="210" border="0" alt="Video: Fedora Live" /></a>
<div class="caption" style="width: 210px;"><a href="">Fedora Live</a> </div>]]></description>
			<content:encoded><![CDATA[<p>Paul Frields (Fedora Project Leader) sits down to discuss the Live USB feature debuted in Fedora 9 with developer Jeremy Katz. See a live demo of the persistant desktop, and find out how to get more involved in the next Fedora release. </p>
<div class="alignLeft">
<embed src="http://www.redhat.com/v/swf/flvplayer.swf?file=http://www.redhat.com/v/magazine/swf/Fedora_DV_NTSC.flv&#038;autoStart=false&#038;image=http://www.redhat.com/g/magazine/video_stills/Fedora_DV_NTSC.png" width="320" height="260" quality="high" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
<div class="caption" >Download this video: [<a href="http://www.redhat.com/v/magazine/ogg/Fedora_DV_NTSC.ogg">Ogg Theora</a>]</div>
<p><!-- caption --></div>
<p><!-- alignLeft --><br />
<br clear="both" />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redhatmagazine.com/2008/07/23/video-fedora-live/feed/</wfw:commentRss>
		</item>
		<item>
		<title>NetworkManager: Secret weapon for the Linux road warrior</title>
		<link>http://www.redhatmagazine.com/2008/07/22/networkmanager-secret-weapon-for-the-linux-road-warrior/</link>
		<comments>http://www.redhatmagazine.com/2008/07/22/networkmanager-secret-weapon-for-the-linux-road-warrior/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 22:21:19 +0000</pubDate>
		<dc:creator>Kyle Gonzales</dc:creator>
		
		<category>Fedora</category>

		<category>Red Hat Enterprise Linux</category>

		<category>technical</category>

		<guid isPermaLink="false">http://www.redhatmagazine.com/2008/07/22/networkmanager-secret-weapon-for-the-linux-road-warrior/</guid>
		<description><![CDATA[For years I have envied how easy my Windows- and Mac-based peers had it when traveling with their laptops.  They connect to hotspots with ease, get online while I was still logging into root and running some tools.  It just wasn&#8217;t fair.  I wanted an integrated easy-to-use tool that did not require [...]]]></description>
			<content:encoded><![CDATA[<p>For years I have envied how easy my Windows- and Mac-based peers had it when traveling with their laptops.  They connect to hotspots with ease, get online while I was still logging into root and running some tools.  It just wasn&#8217;t fair.  I wanted an integrated easy-to-use tool that did not require bringing up a shell or logging into root.  </p>
<p>I now have that tool in NetworkManager.  In this article I will explain what NetworkManager is, what capabilities exist in the tool (in both Fedora and Red Hat Enterprise Linux), and what you can do to extend it to give you more control over your system than before.</p>
<h2>What is NetworkManager?</h2>
<p>NetworkManager is a software utility that allows a desktop user to manage wired, wireless, modem, WWAN/3G, and VPN network connectivity from a single source. It does not require root access or manual editing of configuration files.  </p>
<p>NetworkManager started as a Gnome project and initially appeared in Fedora. It is now supported on multiple desktop environments (Gnome, KDE, Xfce, etc.) and in multiple distributions (Fedora, SuSE, Ubuntu, Gentoo, Debian, etc.).  NetworkManager uses dbus and hal to provide network status updates to other desktop applications, allowing them to alter their operation based on this information.  For instance, if NetworkManager shows the network is offline, then apps like Evolution and Pidgin will put themselves into offline mode andwait for the network to come online.<a id="more-981"></a></p>
<h2>How is the NetworkManager software deployed on the system?</h2>
<p>NetworkManager is deployed in two parts.  The first part is the NetworkManager daemon, which is found in the package NetworkManager.  This daemon should be set to start while the system is booting.  This can be accomplished by entering the following command as root:</p>
<pre>
    # /sbin/chkconfig NetworkManager on
</pre>
<p>You can also start NetworkManager manually by entering the following command as root:</p>
<pre>
    # /sbin/service NetworkManager start
</pre>
<p>The second part is the user client, which normally takes the form of an applet.  This applet (nm-applet) can be found in the NetworkManager-gnome package, and should be part of the basic Gnome desktop installation.  You will not need to add this applet to your desktop.  Gnome will add the nm-applet control to the Notification Area applet when the NetworkManager daemon is active.</p>
<h2>How does NetworkManager work?</h2>
<p>For the user, most everything will be done via the NetworkManager applet.  Exactly what needs to be done depends on the type of networking the user needs to activate.</p>
<h3>Wired network</h3>
<p>If the system the user is logged into is on a wired network (Ethernet), the user does not need to do anything.  NetworkManager will look for the link on the network port.  When the link is active, it will bring up the interface and then ask for network information via DHCP.</p>
<h3>Wireless Network</h3>
<p>If the user is trying to connect via wireless, NetworkManager is especially helpful.  As long as the wireless device is active, NetworkManager will scan for available networks and will attempt to connect to the last network you connected to that it can see.  If the network it is trying to connect to is a secure network (using WEP, WPA, WPA2, or LEAP) it will request the appropriate security information.  Once the information is entered, NetworkManager will try to store this information into the GNOME keyring manager.</p>
<p>To connect to a different network than the one that NetworkManager chooses, simply click on the applet and choose a different wireless network.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2693123353/" title="NM-Wireless by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3272/2693123353_311e143803_o.png" width="398" height="430" alt="NM-Wireless" /></a></p>
<h3>WWAN network (3G/EVDO/HSDPA/RTTx1/EDGE)</h3>
<p>With the release of NetworkManager 0.70, users can now choose WWAN networking.  Most of these cards require activation in Windows, but NetworkManager can handle the auto-configuration some cards need for use under Linux.  Other cards may still require some minimal account information to activate and use.  </p>
<p>If the card is plugged in when NetworkManager starts, it will be autodetected and an attempt to auto-configure the card will be made when you request a connection to the network.  If auto-configuration is successful, the user can then just select the card in the applet menu and connect.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2693937432/" title="NM-CDMA by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3151/2693937432_99df6a5ed0_o.png" width="398" height="301" alt="NM-CDMA" /></a></p>
<h3>VPN connectivity</h3>
<p>Once a successful network connection has been made, the user can also use NetworkManager to activate a VPN connection.  Currently, there are modules providing support for OpenVPN and Cisco (via vpnc) VPN connectivity.  </p>
<p>The VPN connection will be configured, activated, and deactivated via the applet.  Username, password, group passwords, and other information can be stored in the GNOME keyring manager, or the user can choose to be prompted to enter some—or all—of the information at each login.</p>
<h2>What else can NetworkManager do?</h2>
<p>Beside managing your network connectivity, NetworkManager has another key feature. NetworkManager can run scripts when there is a network state change on any interface, using the network interface and the up/down state as variables. In prior releases, this functionality was provided by a separate daemon called NetworkManagerDispatcher. As of NetworkManager 0.70 in Fedora 9, this functionality is now integrated into NetworkManager itself.</p>
<p>In Bash scripts written for NetworkManager, the variable <code>$1</code> equals the interface whose state has changed and triggered the script. Variable <code>$2</code> equals the state of the interface (up or down). No other variables are needed.</p>
<p>Let&#8217;s take a look at one of the scripts that is included with Fedora 9:</p>
<pre>
# cat /etc/NetworkManager/dispatcher.d/05-netfs

#!/bin/sh

export LC_ALL=C

if [ "$2" = "down" ]; then
        /sbin/ip route ls | grep -q ^default || {
                [ -f /var/lock/subsys/netfs ] &#038;&#038; /etc/rc.d/init.d/netfs stop
        }
fi

if [ "$2" = "up" ]; then
        /sbin/ip -o route show dev "$1" | grep -q '^default' &#038;&#038; {
                /sbin/chkconfig netfs &#038;&#038; /etc/rc.d/init.d/netfs start
        }
fi
</pre>
<p>When an interface comes up and adds itself as the default route, the script starts the netfs service. This script also stops the netfs service when an interface goes down and no default route remains.  Effectively, this will mount your NFS and CIFS shares when you have access to the network, and will unmount those same shares when the network goes down.  Using this script as an example, you can easily write your own scripts to run various commands as the network state changes.</p>
<h2>How can I best use NetworkManager in the field?</h2>
<p>Now that you have a good idea of how NetworkManager works and what it can do, let&#8217;s talk about how to best use NetworkManager in the field. Now that you have NetworkManager managing your network connectivity, make sure your network interfaces are not trying to start on boot. Nothing is more annoying than having your laptop tell you that your wired network is not available when you are sitting on a plane.  If you are using NetworkManager 0.70 (currently in Fedora 9), you should also disable the network service itself, as it may conflict with NetworkManager.</p>
<p>You can go further, writing NetworkManager scripts to activate various services only when they are needed. Many of the init scripts in Linux make the assumption that your system is a server or a workstation with continuous access to the network. Things like ntp, cups, sshd, even rhnsd do not need to be running while you have no network connectivity. These services can be disabled, set to run only when NetworkManager starts them via a custom script on a network state change. </p>
<p>Using the previously posted script as a guide, a script to manage sshd might look like this:</p>
<pre>
# cat /etc/NetworkManager/dispatcher.d/10-sshd

#!/bin/sh
#
# Start and stop sshd based on network availability using NetworkManager
#

export LC_ALL=C

if [ "$2" = "down" ]; then
        /sbin/ip route ls | grep -q ^default || {
                [ -f /var/lock/subsys/sshd ] &#038;&#038; /etc/rc.d/init.d/sshd stop
        }
fi

if [ "$2" = "up" ]; then
        /sbin/ip -o route show dev "$1" | grep -q '^default' &#038;&#038; {
                /sbin/chkconfig sshd &#038;&#038; /etc/rc.d/init.d/sshd start
        }
fi
</pre>
<p>You could substitute &#8220;rhnsd&#8221; or &#8220;cups&#8221; for &#8220;sshd&#8221;, and the script should work equally well for those tasks..</p>
<p>If you are a administrator tasked with managing Red Hat or Fedora systems of remote employees, the scripting functionality can be even more handy. You can write a script that looks for the activation of the VPN interface then sends an email letting you know the system is online. You could have the system check in with a Satellite server located within your firewall, installing updates you previously scheduled for it. The possible uses here are many.</p>
<h2>The student is now the master</h2>
<p>No longer do I envy my Windows-based peers and their easy  mobile connectivity. NetworkManager is constantly impressing me, adding functionality and allowing me to be more efficient on the road. This Swiss Army knife of Linux networking gives me the control I need over my connectivity whether at home, coffee house, or airport. Now that you know what NetworkManager is, how it works, and how best to use it, try it out of your own system. I trust you will find NetworkManager works as well for you as it did for me.</p>
<h2>More information</h2>
<ol>
<li><a href="http://www.gnome.org/projects/NetworkManager">NetworkManager main project page</a></li>
<li><a href="http://fedoraproject.org/wiki/Tools/NetworkManager">NetworkManager in Fedora</a></li>
<li><a href="http://www.freedesktop.org/wiki/Software/dbus">dbus</a> and <a href="http://www.freedesktop.org/wiki/Software/hal<br />
">hal</a></li>
<li><a href="http://en.opensuse.org/Projects/KNetworkManager">KNetworkManager</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.redhatmagazine.com/2008/07/22/networkmanager-secret-weapon-for-the-linux-road-warrior/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open source systems management: Two conferences, two talks</title>
		<link>http://www.redhatmagazine.com/2008/07/08/open-source-systems-management-two-conferences-two-talks/</link>
		<comments>http://www.redhatmagazine.com/2008/07/08/open-source-systems-management-two-conferences-two-talks/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 19:37:27 +0000</pubDate>
		<dc:creator>Michael DeHaan</dc:creator>
		
		<category>Fedora</category>

		<category>Red Hat Enterprise Linux</category>

		<category>events</category>

		<guid isPermaLink="false">http://www.redhatmagazine.com/2008/07/08/open-source-systems-management-two-conferences-two-talks/</guid>
		<description><![CDATA[I had the privilege of giving not one but two talks at the Red Hat Summit&#8211;both about open source systems management topics.   A good deal of this content was also shared with a different audience at FudCON&#8211;the Fedora Users and Developers Conference.  This was a great trip to Boston, and a fantastic [...]]]></description>
			<content:encoded><![CDATA[<p>I had the privilege of giving not one but two talks at the Red Hat Summit&#8211;both about open source systems management topics.   A good deal of this content was also shared with a different audience at FudCON&#8211;the Fedora Users and Developers Conference.  This was a great trip to Boston, and a fantastic chance to talk with users, administrators, and developers of all types.</p>
<p>The first talk I had a part in was <a href="http://www.redhatmagazine.com/2008/02/21/open-source-project-func-the-fedora-unified-network-controller/">Func</a>, which I co-presented with Adrian Likins. Func, as mentioned before in Red Hat Magazine, is an API for controlling lots of nodes for arbitrary systems management tasks. It is ideally suited for replacing legacy SSH infrastructure as well as building new network applications that require secure network communications infrastructure.</p>
<p>We gave an overview for folks that hadn&#8217;t heard of Func before, and showed off several examples of things you can do with the Python API. Interest in Func is growing, and lots of folks are using it in ways we hadn&#8217;t originally intended (which is, of course, the idea).<a id="more-961"></a>  </p>
<p>One such application that surprised us was <a href="http://opensymbolic.org">Open Symbolic</a>, which aims to be a user-friendly systems management application written on Func.   Additionally, some of our own IT folks have written a very lightweight “cloud” type management application using Func, which you should hear more about shortly. At the conclusion of that talk there were some very good questions about how things work, and also some interest in future expansions (with hopefully some patches coming down the pipe).</p>
<p>My second talk was about <a href="http://www.redhatmagazine.com/2007/08/10/cobbler-how-to-set-up-a-network-boot-server-in-10-minutes/">Cobbler</a>, our next-generation installation server. I was very pleased to see Cobbler&#8217;s talk was standing-room only, showing that there is a lot of need for good tools to help streamline Linux installations and low-level datacenter setup tasks. Again, there were a tremendously good set of questions asked, and the community is already getting a lot larger with people trying out Cobbler after hearing about it at Summit.  I&#8217;m happy to see that.   </p>
<p>The current idea behind Cobbler is to build a common installation service that various applications can use to deploy Linux (more on this below)rather than having to keep creating these components.   I&#8217;ll also be extending it to deal with image-based deployments in addition to traditional kickstart deployments.  </p>
<p>As always, we&#8217;ll continue to gather a large community of sysadmins to work together and build common tooling we can all share.  The basic premise is that by working together, we can build tools that are more powerful than the tools we could build alone. By following an open development model with shared tools, the need to reinvent the same wheels to do the same tasks goes away.   </p>
<p>We&#8217;re also building a large set of community documentation based on deployment best practices and tricks, and I hope to roll this into a nice openly licensed manual and deployment guide later this year.   Open community, open code, open docs &#8212; neat!</p>
<p>And while all of this is nice, the most exciting part of Summit was the announcement about <a href="http://spacewalk.redhat.com">Spacewalk</a>.   Spacewalk is the project name for the open-sourcing of Red Hat Satellite Server.    This is not a “community edition”, it&#8217;s everything. The upstream for all code in the project is going to <a href="http://fedorahosted.org/spacewalk">the website</a>, and we&#8217;re already seeing a lot of interest from existing Satellite customers and prospective users. We had a lot of great discussion at FudCON about places the project might go, and there have already been several non-Red Hat patches made against the codebase. </p>
<p>We also announced that Satellite will be using Cobbler to provide advanced deployment support next year, so we can already see the advantages of getting these tools to work together.   Planned work includes adding open source database alternatives and improving our support for Fedora and derivative distributions.   </p>
<p>In the future, Func may have a place  in Spacewalk as well. We can also look at incorporating other proven open source management applications, tools, and libraries.   Everyone is encouraged to join the Spacewalk mailing lists or IRC channels (#spacewalk on irc.freenode.net) if they are interested in learning more or have ideas/questions.</p>
<p>These three applications, in general, constitute a new way of thinking.  Namely, how can we apply the Fedora Development model towards enterprise management applications and sysadmin-level tools and processes?  </p>
<p>Rather than buy tooling from a vendor or inventing internal frameworks that disappear when one changes jobs or departments, what can we share and openly build together and re-use? While we use the Fedora model to produce a community-driven distribution, we&#8217;re now also using it to produce better ways to manage Enterprise Linux. This development model applies just as equally to Enterprise Linux as it does Fedora. It just works.</p>
<p>As Paul Frields (the Fedora Project Leader) indicated at FudCON, the future of Fedora (and in turn, Fedora Hosted Projects and Extras Packages for Enterprise Linux (EPEL)) is about lowering barriers to entry and encouraging collaboration&#8211;we are already doing well on technical grounds. How do we encourage more collaboration around management software? For starters, we work at making it easier to install. And we must make sure the communities remain active and integral, and continue to grow.  </p>
<p>A lot of management software is hard to find and install because it&#8217;s not yet part of the distribution.  I would encourage all ISVs out there that write open source software to look at getting their content into <a href="http://fedoraproject.org/wiki/EPEL">EPEL</a>, where it can be easily found via search and is yum-installable. I&#8217;d also like them to take a look at how we are building strong communities around our projects using Fedora Hosted Infrastructure&#8211;and to take those examples to their own projects and communities.   </p>
<p>Regardless of who we work for, open communication and collaboration are how we get ahead&#8211;and Fedora (and EPEL) are providing an outstanding breeding ground for open source software now&#8211;even in what was previously thought of as an “Enterprise” type cathedral environment. I should also mention that the Fedora community is full of packaging experts and smart folks who can help you.   Join #fedora-devel on irc.freenode.net and say hi.   </p>
<p>If you&#8217;re not interested in development, but adminster systems and want to know how you can help out, take a look at Mike McGrath&#8217;s new <a href="https://fedorahosted.org/csi/">CSI venture</a>.</p>
<p>Good ideas come from where we least expect them. The Fedora development model and infrastructure are really powerful ways to create software, documentation, and tools that solve problems for people who need to manage their Linux infrastructure.   Whether you are interested in Cobbler, Func, or Spacewalk&#8211;or even if you&#8217;re interested in Linux systems management in general&#8211;let&#8217;s get together, find better ways to collaborate, and invest in the operating systems that we all love.    </p>
<p>So, that&#8217;s my summary of the Red Hat Summit and FUDCon. Boston&#8217;s a beautiful city and I will give it a pass for not having sweet tea at all available restaurants. I look forward to Summit and FUDCon next year&#8211;we&#8217;re growing fast in Fedora and Red Hat Enterprise Linux land, and there&#8217;s still many more places to go.
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redhatmagazine.com/2008/07/08/open-source-systems-management-two-conferences-two-talks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Writing policy for confined SELinux users</title>
		<link>http://www.redhatmagazine.com/2008/07/02/writing-policy-for-confined-selinux-users/</link>
		<comments>http://www.redhatmagazine.com/2008/07/02/writing-policy-for-confined-selinux-users/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 20:39:31 +0000</pubDate>
		<dc:creator>Dan Walsh</dc:creator>
		
		<category>Fedora</category>

		<category>technical</category>

		<guid isPermaLink="false">http://www.redhatmagazine.com/2008/07/02/writing-policy-for-confined-selinux-users/</guid>
		<description><![CDATA[Last month, I wrote about confining the user with SELinux.  I explained that&#8211;as of Fedora 9&#8211;SELinux supports the concept of the confined user and comes with 5 confined user types defined.  

guest_t – Terminal login, nosetuid, nonetwork, noxwindows, noexec in homedir
xguest_t – X Windows Login and terminal login, nosetuid, nonetwork, noexec in homedir
user_t [...]]]></description>
			<content:encoded><![CDATA[<p>Last month, I wrote about <a href=http://www.redhatmagazine.com/2008/04/17/fedora-9-and-summit-preview-confining-the-user-with-selinux/>confining the user with SELinux</a>.  I explained that&#8211;as of Fedora 9&#8211;SELinux supports the concept of the confined user and comes with 5 confined user types defined.  </p>
<ul>
<li><strong>guest_t</strong> – Terminal login, nosetuid, nonetwork, noxwindows, noexec in homedir</li>
<li><strong>xguest_t</strong> – X Windows Login and terminal login, nosetuid, nonetwork, noexec in homedir</li>
<li><strong>user_t</strong> - X Windows Login and terminal login, nosetuid, noexec in homedir</li>
<li><strong>staff_t</strong> - X Windows Login and terminal login, nosetuid except sudo</li>
<li><strong>unconfined_t</strong> – Full login, able to run with almost all privs as with SELinux disabled.</li>
</ul>
<p>These confined users are a great starting point,  but what if you want to create a confined user with different privileges?<a id="more-953"></a></p>
<blockquote><p>
<em>I want to create a limited privilege terminal login user with the ability to send mail and read/write files in the /maildir directory.</em></p>
<p><em>My son Timothy uses his confined xguest account, but is not happy because he wants to communicate with his friends using AOL.</em>
</p></blockquote>
<p>Fedora 9 has the solution.  The SELinux management environment (system-config-selinux) has been updated and includes the ability to build customized SELinux policy modules for the confinement of users.</p>
<p>Remember, this tool is just a wizard&#8211;it helps create a framework for building policy.  You can then use tools like audit2allow or the package eclipse-slide for further editing of the policy.  Thiswill give you a good head start.  </p>
<p>In the toolbar panel select: </p>
<p>System-&gt;Administration-&gt;SELinux Management</p>
<p>This starts system-config-selinux.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2626321006/" title="Fig 1 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3170/2626321006_85ca2a0c4e.jpg" width="500" height="313" alt="Fig 1" /></a></p>
<p>Select Policy Module and then Select the New button.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2626320180/" title="Fig 2 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3122/2626320180_0942a5f5a6.jpg" width="500" height="313" alt="Fig 2" /></a></p>
<p>This will start the policy template generator (polgengui).</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2625500713/" title="Fig 3 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3171/2625500713_b470b3cf70.jpg" width="500" height="231" alt="Fig 3" /></a></p>
<p>Click Forward.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2625498701/" title="Fig 4 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3116/2625498701_635ab93032.jpg" width="500" height="246" alt="Fig 4" /></a></p>
<p>As you can see, this screen has been enhanced to allow the creation of policy for confined users as well as confined applications.  Writing policy for confined applications was described in a <a href=http://www.redhatmagazine.com/2008/04/17/fedora-9-and-summit-preview-confining-the-user-with-selinux/>previous article</a>.</p>
<p>The second column, Login Users,  allows you to build policy modules that either customize existing user roles or create brand new roles.  Selecting Existing User Roles allows you to build policy to change one of the default user types defined above. (guest, xguest, user, staff).   Select one of the other radio buttons to define a new user role, based off of the 4 default user roles.</p>
<ul>
<li>Minimal Terminal User Role == guest_t</li>
<li>Minimal X Windows User Role == xguest_t</li>
<li>User Role == user_t</li>
<li>Admin Role == staff_t</li>
</ul>
<p>The final column, Root Users,  allows you to define a user type that other user types can transition to when they are running as root.  For example you could define a root role, dbadm,  to administer the mysql database. You could set up the staff role  to transition to this role using sudo.  </p>
<blockquote><p>
<em>I want to create a limited privilege terminal login user with the ability to send mail and read/write files in the /maildir directory?</em>
</p></blockquote>
<p>In order to  answer this question, we want to create a new Minimal Terminal User Role called mailuser.</p>
<p>Select Minimal Terminal User Role, and press Forward.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2626320592/" title="Fig 5 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3075/2626320592_d0ab5cd7c9.jpg" width="500" height="231" alt="Fig 5" /></a></p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2626319162/" title="Fig 6 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3266/2626319162_b86c249f76.jpg" width="500" height="231" alt="Fig 6" /></a></p>
<p>This screen displays a list of confined domains to which this role might transition.  For example, if you wanted the mailuser to transition to the ethereal domain you would select this now.  Since we do not want any transitions we will just hit forward.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2626319670/" title="Fig 7 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3188/2626319670_ec193388b6.jpg" width="500" height="231" alt="Fig 7" /></a></p>
<p>This screen allows you to select other roles to which the current role can transition.  This is where you would define the transition to dbadm from staff role described above.   We will just hit Forward.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2626320454/" title="Fig 8 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3075/2626320454_70bd9a05cb.jpg" width="500" height="231" alt="Fig 8" /></a></p>
<p>This screen allows you to select ports that the user can listen to.  If the confined user was going to run a network server you could select the ports here.  We will just select Forward.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2625498373/" title="Fig 9 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3187/2625498373_923b6316f3.jpg" width="500" height="231" alt="Fig 9" /></a></p>
<p>Finally, we get to a screen which defines the ports the confined user can connect to.  We will select the smtp port #25 and then go forward again.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2625500527/" title="Fig 10 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3063/2625500527_0a46a3fb33.jpg" width="500" height="231" alt="Fig 10" /></a></p>
<p>This screen allows you to define a boolean.  If you wanted to allow our confined user to connect to the mail port, only if the &#8220;allow_mailuser_sendmail&#8221; boolean is set, we could create the boolean here.  We are not going to do this so select forward.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2625499379/" title="Fig 11 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3184/2625499379_9f814369b2.jpg" width="500" height="231" alt="Fig 11" /></a></p>
<p>This screen allows us to select the directory to write the policy framework into. The directory must already exist.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2625498863/" title="Fig 12 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3184/2625498863_eb3b3b749d.jpg" width="500" height="231" alt="Fig 12" /></a></p>
<p>This final screen tells you which files you are about to create.  Press Apply.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2626319914/" title="Fig 13 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3281/2626319914_1b99936641_o.png" width="397" height="176" alt="Fig 13" /></a></p>
<p>The tool will create the following policy:</p>
<pre>
#vi /root/mailuser/mailuser.te
     policy_module(mailuser,1.0.0)
     ########################################
     #
     # Declarations
     #
     userdom_restricted_user_template(mailuser)
</pre>
<p>This one interface defines all the interaction of a guest user.</p>
<pre>
     #######################################
     #
     # mailuser local policy
     #
     sysnet_dns_name_resolve(mailuser_t)
     corenet_all_recvfrom_unlabeled(mailuser_t)
     allow mailuser_t self:tcp_socket create_stream_socket_perms;
     corenet_tcp_sendrecv_all_if(mailuser_t)
     corenet_tcp_sendrecv_all_nodes(mailuser_t)
     corenet_tcp_sendrecv_all_ports(mailuser_t)
     corenet_tcp_connect_smtp_port(mailuser_t)
</pre>
<p>These interfaces allow the mailuser_t to communicate with the smtp ports.  Also, the policy generation tool added an interface to resolve host names.  We now have enough policy to allow a mailuser_t to login to a machine and connect to a mail server, but not to read/write files to /maildir.  This tool is just a framework-generating tool, not a policy editor.  We will need to write policy for handing the /maildir directory ourselves.  Since we want a directory that the mailuser can read/write to, we need to define a new type, mailuser_rw_t, then we need to tell the system that this is a type that affects files.</p>
<pre>
type mailuser_rw_t;
file_type(mailuser_rw_t)
</pre>
<p>We also need to allow mailuser_t to manage files and directories of this type:</p>
<pre>
manage_dirs_pattern(mailuser_t, mailuser_rw_t, mailuser_rw_t)
manage_files_pattern(mailuser_t, mailuser_rw_t, mailuser_rw_t)
</pre>
<p>We are done with the mailuser.te file.</p>
<p>Now, we want to define the file context  in the mailuser.fc file:</p>
<pre>
# vi /root/mailuser/mailuser.fc

/var/maildir(/.*)?                  gen_context(system_u:object_r:mailuser_rw_t,s0)
</pre>
<p>We use regular expressions to define the path.</p>
<p>Now we can run the shell script to compile the policy and install it to the test system.</p>
<pre>
#  sh mailuser.sh
Building and Loading Policy
+ make -f /usr/share/selinux/devel/Makefile
Compiling targeted mailuser module
/usr/bin/checkmodule:  loading policy configuration from tmp/mailuser.tmp
/usr/bin/checkmodule:  policy configuration loaded
/usr/bin/checkmodule:  writing binary representation (version 8) to tmp/mailuser.mod
Creating targeted mailuser.pp policy package
rm tmp/mailuser.mod.fc tmp/mailuser.mod
+ /usr/sbin/semodule -i mailuser.pp
+ /usr/sbin/semanage user -a -R mailuser_r mailuser_u
</pre>
<p>At this point we have a new SELinx user mailuser_u installed on the machine.  We want to assign a linux user to this type: </p>
<pre>
# semanage login -a -s mailuser_u dwalsh
</pre>
<p>We also want to create the directories /var/maildir:</p>
<pre>
# mkdir /var/maildir
# restorecon /var/maildir
# chown dwalsh:dwalsh /maildir
</pre>
<p>Now dwalsh can log in and use the /var/maildir directories.</p>
<p>But what about my son and his friends on AOL?</p>
<blockquote><p>
<em>My son Timothy uses his confined xguest account, but is not happy because he wants to communicate with his friends using AOL.</em>
</p></blockquote>
<p>I want to confine my son&#8217;s account so that only Firefox can talk to internet ports&#8211;but I want to allow his account to communicate with AIM/AOL.  I can customize the xguest account and add this access.</p>
<p>Back at system-config-selinux I select New to create a new policy module.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2626320180/" title="Fig 2 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3122/2626320180_0942a5f5a6.jpg" width="500" height="313" alt="Fig 2" /></a></p>
<p>I click forward through the intro screen to get to the policy module selection screen.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2625500121/" title="Fig 14 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3071/2625500121_28d50e7577.jpg" width="500" height="246" alt="Fig 14" /></a></p>
<p>I want to modify an existing user role, so I click on Existing User Roles and then click forward.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2626319798/" title="Fig 15 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3042/2626319798_f63940d392.jpg" width="500" height="246" alt="Fig 15" /></a></p>
<p>The next box shows me the list of all exising user roles. Select xguest.  The tool will add “my” to the policy name and create policy files named myxguest.</p>
<p>Click forward through the next couple of screens, until you reach the network connect screen.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2625498229/" title="Fig 16 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3058/2625498229_dd59fb4f46.jpg" width="500" height="246" alt="Fig 16" /></a></p>
<p>Add the AOL Ports as a comma separated list, then click forward until the end.</p>
<p><a href="http://www.flickr.com/photos/redhatmagazine/2626320300/" title="Fig 17 by redhatmag, on Flickr"><img src="http://farm4.static.flickr.com/3162/2626320300_f8c818b062_o.png" width="352" height="201" alt="Fig 17" /></a></p>
<p>Now take a look at the myxguest.te file that was created:</p>
<pre>
policy_module(myxguest,1.0.0) 

gen_require(`
      type xguest_t, xguest_devpts_t, xguest_tty_device_t;
      role xguest_r;
') 

########################################
#
# xguest customized policy
# 

sysnet_dns_name_resolve(xguest_t)
corenet_all_recvfrom_unlabeled(xguest_t) 

allow xguest_t self:tcp_socket create_stream_socket_perms;
corenet_tcp_sendrecv_all_if(xguest_t)
corenet_tcp_sendrecv_all_nodes(xguest_t)
corenet_tcp_sendrecv_all_ports(xguest_t)
corenet_tcp_connect_aol_port(xguest_t) 

allow xguest_t self:udp_socket { create_socket_perms listen };
corenet_udp_sendrecv_all_if(xguest_t)
corenet_udp_sendrecv_all_nodes(xguest_t)
corenet_udp_sendrecv_all_ports(xguest_t)
</pre>
<p>The tool added the AOL ports and the ability to resolve their hosts.</p>
<p>Compile to install the new policy like so:</p>
<pre>
sh myxguest.sh
</pre>
<p>Since I had previously set my son up to log in as xguest_u, no user management would need to be done. He can now use AOL Instant Messages in a secure environment.</p>
<p>If I had not set up his account I would need to execute:</p>
<pre>
# semodule login -a -s xguest_u twalsh
</pre>
<p>or </p>
<pre>
usermod -Z xguest_u twalsh
</pre>
<p>These examples show that it is fairly simple to extend SELinux confined users.  If you need more advanced features, you can use system-config-selinux to build the framework and then use audit2allow or eclipse-slide to do further policy generation.</p>
<p>Next time, we will cover confinement of the root user.
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redhatmagazine.com/2008/07/02/writing-policy-for-confined-selinux-users/feed/</wfw:commentRss>
		</item>
		<item>
		<title>FUDCon report from the Fedora Project Leader</title>
		<link>http://www.redhatmagazine.com/2008/06/23/fudcon-report-from-the-fedora-project-leader/</link>
		<comments>http://www.redhatmagazine.com/2008/06/23/fudcon-report-from-the-fedora-project-leader/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 17:44:30 +0000</pubDate>
		<dc:creator>Paul Frields</dc:creator>
		
		<category>Fedora</category>

		<category>culture</category>

		<category>events</category>

		<guid isPermaLink="false">http://www.redhatmagazine.com/2008/06/23/fudcon-report-from-the-fedora-project-leader/</guid>
		<description><![CDATA[FUDCon comes on the heels of the Red Hat Summit, with many of the speakers and developers doing double-duty.  Even Red Hat&#8217;s CEO showed up for both events. Did you miss out? Never fear, there&#8217;s always another FUDCon coming up, and the Fedora Project Leader is happy to give you the report from this [...]]]></description>
			<content:encoded><![CDATA[<p><em>FUDCon comes on the heels of the Red Hat Summit, with many of the speakers and developers doing double-duty.  Even Red Hat&#8217;s CEO showed up for both events. Did you miss out? Never fear, there&#8217;s always <a href="http://fedoraproject.org/wiki/FUDCon">another FUDCon coming up</a>, and the Fedora Project Leader is happy to give you the report from this one.</em></p>
<h3>From FUDCon Boston, June 20, 2008:</h3>
<p>The <a href="http://fedoraproject.org/wiki/FUDCon/FUDConF10">Fedora Users and Developers Conference (FUDCon)</a> is in full swing on its second day.  We have another full day of exceptional hacking taking place on the third floor of the Hynes Convention Center in Boston. Just as the <a href="http://redhat.com/promo/summit/">Red Hat Summit</a> is drawing to a close downstairs&#8211;winding up with a half-day of sessions and panels&#8211;we&#8217;re just now kicking into high gear. This has been an exceptional way to introduce open source customers to the larger ecosystem behind the products they love, and the community that powers Fedora, the upstream for <a href="http://www.redhat.com/rhel/">Red Hat Enterprise Linux</a>.<a id="more-944"></a></p>
<p>Last night at the close of FUDCon Day 1, we had two huge events&#8211;the first came courtesy of Fedora&#8217;s <a href="https://fedoraproject.org/wiki/Infrastructure">Infrastructure</a> team. Over the last couple of years, the team has built a world-class infrastructure for hosting and communication throughout the entire Fedora community. Last night, Infrastructure team leader <a href="http://mmcgrath.livejournal.com/18768.html">Mike McGrath announced</a> a one-two punch of free software goodness for Fedora.  First, our Fedora Account System is now an <a href="http://openid.org/">OpenID</a> provider. This means that the identity you create in the Fedora Project can be used across thousands of web sites. The other big announcement was the new <a href="http://talk.fedoraproject.org/">Fedora telephony system</a>, “Fedora Talk,” based on the juggernaut free software VoIP project <a href="http://asterisk.org/">Asterisk</a>.</p>
<p>That&#8217;s right, Fedora contributors will be able to use VoIP to set up voice meetings that facilitate better and more efficient collaboration. There will also be features to ensure that those conversations don&#8217;t damage the openness and transparency on which Fedora thrives. As Mike announced in <a href="http://mmcgrath.livejournal.com/18768.html">this recent blog post</a>, the hardware and bandwidth have been provided courtesy of our friends at <a href="http://serverbeach.com/">ServerBeach</a>, and the dial-in numbers by <a href="http://www.arrivaltel.com/">Arrival Telecom</a> and <a href="http://www.diddiscount.com/">DiDDiscount</a>.</p>
<p>Red Hat CEO Jim Whitehurst arrived in the FUDCon space just in time for Mike&#8217;s big announcement. I saw a smile spread across his face as he saw the incredible work done by our Infrastructure team&#8211;just a recent example of the constant, continuous improvements in Fedora. If you&#8217;re interested in what Jim had to say, Fedora engineer Jeremy Katz <a href="http://katzj.livejournal.com/430216.html">posted an excellent summary</a> of the speech and subsequent Q&#038;A.</p>
<p>This morning things kicked into high gear again.  Some of today&#8217;s highlights:</p>
<ul>
<li>Our QA and Triage teams continued some very intense work on Fedora&#8217;s testing processes, and discussing the current and future use of Rawhide and how it can be used most effectively to improve the distribution.</li>
<li>A brainstorming session was held by Max Spevack and Mairin Duffy on the future of the Spins website, and how to generate a user-friendly experience for people who want to create and consume customized versions of Fedora (“spins”). Max and Mairin make a great team for keeping the talk on-track and focused on the user experience (or “story”) before lunch, and afterward narrowing in on guidelines and goals for the spin process itself.</li>
<li>The <a href="https://fedoraproject.org/wiki/EPEL">Extra Packages for Enterprise Linux (EPEL)</a> group members here at FUDCon also formed a hackfest session. The EPEL special interest group is all about helping enterprise Linux users use more of the thousands of software packages available in Fedora.</li>
<li>The <a href="https://fedoraproject.org/wiki/CommunityArchitecture">Community Architecture</a> group had a long strategy meeting to talk about its funding for the rest of 2008&#8211;making sure it&#8217;s spent in a way that maximizes the benefits to Fedora and our community building <a href="https://fedoraproject.org/wiki/CommunityArchitecture/Goals">goals</a>.  One of the most interesting things about our CA team&#8211;and frankly, one of the reasons many others want to emulate the way they build Fedora&#8217;s community&#8211;is that they conduct all this work openly and transparently.  Anyone is free to see how we allocate our funds, set our priorities, and produce results from our community work.</li>
<li>Thanks to our friends at <a href="http://digium.com/">Digium</a>, the company behind Asterisk, many of our Infrastructure team, some folks who operate in remote areas of the globe, and a handful of other Fedora team leaders and engineers were able to receive SIP handsets. We&#8217;ll use those with the new Fedora Talk to test and implement new communications solutions for all our contributors.</li>
<li>Around all this activity, there were a constant stream of visitors from the Red Hat Summit&#8211;people interested in the ways in which our community brings innovative new ideas and software to the world of free and open source software.  Educators, engineers, system administrators, editors, students, journalists, C-level executives, and enthusiasts all were well represented.</li>
</ul>
<p>It&#8217;s been an exhausting but incredibly fulfilling couple of days thus far&#8211;and the BarCamp day on Saturday is sure to be just as solid. Just another few days in the whirlwind of community-powered goodness that we call the Fedora Project.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redhatmagazine.com/2008/06/23/fudcon-report-from-the-fedora-project-leader/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fedora&#8217;s Extra Packages for Enterprise Linux – the Extra Mile</title>
		<link>http://www.redhatmagazine.com/2008/06/19/fedoras-extra-packages-for-enterprise-linux-%e2%80%93-the-extra-mile/</link>
		<comments>http://www.redhatmagazine.com/2008/06/19/fedoras-extra-packages-for-enterprise-linux-%e2%80%93-the-extra-mile/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 14:32:20 +0000</pubDate>
		<dc:creator>Karsten Wade</dc:creator>
		
		<category>Fedora</category>

		<guid isPermaLink="false">http://www.redhatmagazine.com/2008/06/19/fedoras-extra-packages-for-enterprise-linux-%e2%80%93-the-extra-mile/</guid>
		<description><![CDATA[What started as an effort to package software not included in Red Hat Enterprise Linux has grown to be the most interesting part of Fedora for some ISVs.  Extra Packages for Enterprise Linux, or EPEL, is not a mass rebuild of all Fedora software for Enterprise Linux.  It is a disciplined set of [...]]]></description>
			<content:encoded><![CDATA[<p>What started as an effort to package software not included in Red Hat Enterprise Linux has grown to be the most interesting part of Fedora for some ISVs.  Extra Packages for Enterprise Linux, or EPEL, is not a mass rebuild of all Fedora software for Enterprise Linux.  It is a disciplined set of packages with a maintenance philosophy that aligns with Enterprise Linux. </p>
<p>Today I am <a href="http://www.redhat.com/promo/summit/2008/agenda/schedule.html">presenting at the Red Hat Summit in Boston</a> on the topic of &#8220;Fedora Packages for Red Hat Enterprise Linux&#8221;.  This article is derived from that talk.  <a id="more-919"></a></p>
<p>There  are two aspects of EPEL that are important to note.  EPEL packages first provide system administrators with a proven, trusted set of packages that are <i>dependency complete</i>.  This means that every piece of software needed to let that package build and install is already within the repository or part of Red Hat Enterprise Linux (RHEL).  Because of this, EPEL packages do not replace or duplicate RPMs that ship in RHEL or any add-on RHEL solutions, such as <a href="http://www.redhat.com/cluster_suite/">Red Hat Cluster Suite</a> or <a href="http://www.redhat.com/appstack/">Red Hat Application Stack</a>.</p>
<p>The other aspect of EPEL is the way it can help software vendors and open source projects improve the quality of their applications, while lowering costs, <b>and</b> making it easier to get certified to run on the next version of RHEL.  Fedora EPEL is a major reason to participate in the open source process, with all the subsequent benefit.</p>
<p>ISVs and projects benefit through packaging their applications as part of Fedora, gaining the thousands and millions of testers and users, learning and using Fedora best practices for software production and maintenance.  Since all this work occurs six, twelve, or more months in advance of the next RHEL alpha cycle, it is a significant jump on the certification process for an ISV.  The more the ISVs participate in the open source process, the lower their certification costs can be, as they improve the software incrementally toward a ready-for-RHEL state through the Fedora community.</p>
<p>The benefit is not limited to ISVs.  Anyone who has extra software they want available for their RHEL subscription can use or contribute to EPEL.  This could be an IT or applications group in an enterprise, academic, or other institution.  It could be a small coding boutique or a start-up, looking to ride the social connection toward a larger audience and a stronger code base.</p>
<p>One of the <a href="http://fedoraproject.org/wiki/EPEL/GuidelinesAndPolicies#Package_Maintainer_Details">best practices that EPEL teaches</a> is to create a <a href="http://fedoraproject.org/wiki/EPEL/PackageMaintainer/GenericJobDescription">job description for your Fedora package maintainers</a>, and have this job description baked in to a role in your organization.  This separates the individual who may have championed the original package creation from the ongoing role of package maintainer.  Individuals change jobs and duties, and an integrated job description allows them to pass on the tasks.  This overall improves longevity across EPEL.</p>
<p>If you are interested in learning more about EPEL, there is a useful <a href="http://fedoraproject.org/wiki/EPEL/FAQ">FAQ</a>, and you want to be sure to <a href="http://join.fedoraproject.org">join</a> and <a href="http://fedoraproject.org/wiki/PackageMaintainers/Join">learn more about packaging in Fedora</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redhatmagazine.com/2008/06/19/fedoras-extra-packages-for-enterprise-linux-%e2%80%93-the-extra-mile/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Book review: Patent Failure</title>
		<link>http://www.redhatmagazine.com/2008/06/12/book-review-patent-failure/</link>
		<comments>http://www.redhatmagazine.com/2008/06/12/book-review-patent-failure/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 18:11:23 +0000</pubDate>
		<dc:creator>Ruth Suehle</dc:creator>
		
		<category>Fedora</category>

		<category>culture</category>

		<category>review</category>

		<category>truth</category>

		<guid isPermaLink="false">http://www.redhatmagazine.com/2008/06/12/book-review-patent-failure/</guid>
		<description><![CDATA[
Authors: James Bessen and Michael J. Meurer
Publisher: Princeton University Press
Publication Date: March 2008
Patent Failure examines the current state of the American patent system based on the way it has traditionally been treated&#8211;as a type of property system. Using the yardstick of property rights and the economics they influence, Bessen and Meurer analyze the costs and [...]]]></description>
			<content:encoded><![CDATA[<div class="alignLeft"><a href="http://www.amazon.com/gp/product/069113491X?ie=UTF8&#038;tag=wwwredhatcom-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=069113491X"><img src="http://farm4.static.flickr.com/3184/2572925775_d92f9c2fcc.jpg?v=0"></a></div>
<p>Authors: James Bessen and Michael J. Meurer<br />
Publisher: <a href="http://press.princeton.edu">Princeton University Press</a><br />
Publication Date: March 2008</p>
<p><em>Patent Failure</em> examines the current state of the American patent system based on the way it has traditionally been treated&#8211;as a type of property system. Using the yardstick of property rights and the economics they influence, Bessen and Meurer analyze the costs and benefits of patents to innovators. Their qualification: &#8220;If the estimated costs of the patent system to an innovator exceed the estimated benefits, then patents fail as property.&#8221;</p>
<p><a id="more-929"></a>The authors rightly point out that many of the criticisms of the patent system are anecdotal. We&#8217;ve all heard about the <a href="http://www.ipfrontline.com/depts/article.asp?id=14617&#038;deptid=3">peanut-butter-and-jelly patent</a>. So what are we to base reforms on then? <em>Patent Failure</em> answers that with empirical evidence, largely economic, but also from history, international comparison, and legal precedent. The book focuses quite a bit (some might say a bit too much) on the <a href="http://news.cnet.com/Court-guts-E-Data-patent/2100-1023_3-211350.html">claims brought by E-Data</a>, now a decade-old case.</p>
<p>For quite a few years, patents have been lumped in with the completely different systems of trademark and copyright under the title &#8220;intellectual property.&#8221; And, as the authors point out, the quotation marks have fallen away. Many, if not most, people now assume patents <em>are</em> property. But for certain industries, namely software, patents fail as a property system. </p>
<p>So what should we do?</p>
<p>That &#8220;for certain industries&#8221; part is a sticky point. I have to admit, it&#8217;s easy for me, and I suspect others, to forget that patents can work quite well outside of software. But because that&#8217;s where the controversy is, that&#8217;s where the media is, and so it&#8217;s the failures we hear about. Bessen and Meurer do plenty to build a separation, often making exceptions for chemical and pharmaceutical patents. Those types of patents come much closer to passing the patent-as-property test than software. </p>
<p>The authors then devote chapter 9 to &#8220;Abstract Patents and Software,&#8221; the entirety of which you can <a href="http://www.researchoninnovation.org/dopatentswork/">download as a book preview</a>. They point out that &#8220;no other technology has experienced anything like the broad industry opposition to software patents that arose during the 1960s.&#8221; That is to say, this unprecedented opposition is coming from <em>within the industry the patents ideally help protect.</em> <a href="http://www.sciencedirect.com/science?_ob=ArticleURL&#038;_udi=B6VD0-3TTCD4S-4&#038;_user=10&#038;_rdoc=1&#038;_fmt=&#038;_orig=search&#038;_sort=d&#038;view=c&#038;_acct=C000050221&#038;_version=1&#038;_urlVersion=0&#038;_userid=10&#038;md5=e9459821eafd00b01c7a2acbc23cee9f">Software developers oppose patents on their own work</a>. You simply cannot draw the same fence around the property lines of software patents the way you would around the property boundaries of the land you own. The authors conclude:</p>
<blockquote><p>[Software patents] play a central role in the failure of the patent system as a whole. Any serious effort at patent reform must address these problems and the failure to deal with the problems of software patents&#8211;either with software-specific measures or general reforms&#8211;will likely doom any reform effort.</p></blockquote>
<p>Like not giving away the end of the movie, I&#8217;ll leave it to you to read and form your own opinion of their recommendations that follow that chapter. You can also read excerpts and some interesting discussion about the book on <A href="http://www.patentlyo.com/patent/2008/03/do-patents-stim.html">PatentlyO</a>, a patent law blog.</p>
<p>And if you&#8217;re interested in hearing more about the authors&#8217; ideas firsthand, Michael Meurer will be presenting a session about <em>Patent Failure</em> at the <a href="http://www.redhat.com/promo/summit/2008">Red Hat Summit</a> on Thursday, June 19 at 11:30.
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redhatmagazine.com/2008/06/12/book-review-patent-failure/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Run-levels:  Create, use, modify, and master</title>
		<link>http://www.redhatmagazine.com/2008/06/03/run-levels-create-use-modify-and-master/</link>
		<comments>http://www.redhatmagazine.com/2008/06/03/run-levels-create-use-modify-and-master/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 21:41:34 +0000</pubDate>
		<dc:creator>Noah Gift</dc:creator>
		
		<category>Fedora</category>

		<category>Red Hat Enterprise Linux</category>

		<category>technical</category>

		<guid isPermaLink="false">http://www.redhatmagazine.com/2008/06/03/run-levels-create-use-modify-and-master/</guid>
		<description><![CDATA[The phone rings. You pick it up, and it is the recruiter for your dream job. Your palms begin to sweat as the technical interview starts.
&#8220;You want to know the run-levels for Red Hat&#174; Enterprise Linux&#174; or Fedora&#174;?&#8221; You pause, thinking. &#8220;Well, I use Linux every day, and I know single user mode is level [...]]]></description>
			<content:encoded><![CDATA[<p>The phone rings. You pick it up, and it is the recruiter for your dream job. Your palms begin to sweat as the technical interview starts.</p>
<p>&#8220;You want to know the run-levels for Red Hat&reg; Enterprise Linux&reg; or Fedora&reg;?&#8221; You pause, thinking. &#8220;Well, I use Linux every day, and I know single user mode is level 1&#8230;&#8221;.  You stammer a bit, and say you&#8217;re drawing a blank for the rest.  The recruiter thanks you in that &#8220;sorry&#8221; tone-of-voice, and hangs up the phone.</p>
<p>Let&#8217;s cross that question off the recruiter&#8217;s list forever. (Sorry, recruiters.) In this article, we cover how to create, use, modify, and ultimately master run-levels.  Bookmark this page with your favorite bookmarking service, and rest easy about ever missing that interview question again.</p>
<p>Of course, there are more reasons to know about run-levels than just to pass an interview.  Interacting with run-levels is quite useful once you get used to it.  In this article we are going to cover the basics, and then go beyond that to create our own run-level that we write a script against.<a id="more-914"></a></p>
<h2>What&#8217;s a run-level?</h2>
<p>A run-level is a system state that is defined by the services listed in <code>/etc/rc.d</code>.  Typically, advanced administration of a machine is done by switching run-levels (or state) to perform tasks such as minimal resource usage, run-level 3, shutdown run-level 0, or maintenance. Maintenance is run-level 1&#8211;or single user mode, as it is commonly known.</p>
<h2>Unix/Linux run-level comparison chart</h2>
<p>If you happen to work with AIX, Solaris, HP-UX, Ubuntu, Fedora, Free BSD and/or Red Hat Enterprise Linux, then it can get a bit confusing figuring out which run-level does what.  Please refer to the Wikipedia reference at the bottom of this article to get more information on cross platform run-level comparisons.</p>
<h2>Red Hat run-level chart</h2>
<p>Here is a chart of Red Hat-specific run-levels:</p>
<table style="border: 1px solid #999; border-collapse: collapse;">
<tr>
<th>LEVEL</th>
<th>NAME</th>
<th>DESCRIPTION</th>
</tr>
<tr style="background-color: #999;">
<td>0</td>
<td>Halt</td>
<td>Immediately shuts down system and powers it off, if it can</td>
</tr>
<tr>
<td>1</td>
<td>Single user</td>
<td>Brings system to a bare essentials mode for maintenance</td>
</tr>
<tr style="background-color: #999;">
<td>2</td>
<td>User-defined</td>
<td>Custom</td>
</tr>
<tr>
<td>3</td>
<td>Multi-user with console only</td>
<td>All services are running but X11</td>
</tr>
<tr style="background-color: #999;">
<td>4</td>
<td>User-defined</td>
<td>Custom</td>
</tr>
<tr>
<td>5</td>
<td>Multi-user with display and console</td>
<td>All services are running including X11 (or GUI)</td>
</tr>
<tr style="background-color: #999;">
<td>6</td>
<td>Reboot</td>
<td>Reboots the machine</td>
</tr>
</table>
<h2>What run-level am I?</h2>
<p>Just like life, with an operating system you need to know where you are now, in order to get to where you want to go next.  If you are planning on modifying your run-level, you need to first know what your current run-level is.  In order to do this, you can use one of two commands, like so:</p>
<pre>
[root@localhost ~]# who -r
         run-level 3  2008-04-29 08:17                   last=5
[root@localhost ~]# runlevel
5 3
</pre>
<p>If we look at the output of who -r, we can tell that we are currently running at run-level 3&#8211;which is multi-user, but console only.We can also tell that we were previously running at run-level 5, which is multi-user with console and X11 login. </p>
<h2>Changing run-levels</h2>
<p>Once you know what run-level you are at, it is very simple to change to a different one.  All you need to do is type:  &#8220;init&#8221; followed by number of the runlevel you would like to switch to.  Here is an example of switching to single user mode, or runlevel 1:</p>
<pre>
init 1
</pre>
<p>This command will change your system to single user mode, and it will ask you for the root password.  When you arrive in single user mode, there are no services running, as this level it is most often used for maintenance, backup, or recovery.  Once you are in single user mode it is quite common to enable, for example, network and NFS to backup your operating system, like so:</p>
<pre>
service network start; service nfs start
</pre>
<p>When you are done with your work, type in the run-level you would like to go to&#8211;perhaps run-level 5 which brings up the X11 login window:</p>
<p><code>init 5</code></p>
<p>Later in this article, we will write our own run-level and then use it to script a maintenance operation.</p>
<h2>Permanently changing the default run-level</h2>
<p>While changing the runlevel manually is most common, sometimes it is useful to change the default run-level from level 5 to level 3 permanently. This can help conserve resources inside of, for example, a virtual machine.  You may also choose to define your own custom run-level, and wish to make that the default.</p>
<p>You will need to edit /etc/inittab and change this line with your favorite text editor:</p>
<pre>
id:5:initdefault:
</pre>
<p>Change &#8216;5&#8242; to the run-level you wish your machine to be at when it boots.  To change the run-level so that it never loads the GUI on boot would look like this:</p>
<pre>
id:3:initdefault:
</pre>
<dl class="adnote">
<dt>Note:</dt>
<dd>A word of caution on editing /etc/inittab.  It is very important to keep /etc/inittab in version control, and/or keep a backup of it when you are editing the file.  If you make a change incorrectly you can render your operating system unbootable.</dd>
</dl>
<dl class="adtip">
<dt>Tip:</dt>
<dd>If you happen to get yourself in this pickle, there is a way out.  You can interrupt the Grub boot loader and press &#8220;A&#8221;, and then append the word &#8220;emergency&#8221; to the end of the kernel arguments.  This will boot the operating system without using init. Then, you can fix what you altered by copying back the original version of /etc/inittab.</dd>
</dl>
<h2>Creating your own run-level HACK</h2>
<p>First, a word of caution. Do not do this on a production machine, period! This section is a VERY dirty hack that you should only use on a virtual machine you can experiment with, or a machine you don&#8217;t mind rebuilding..  It is always a good idea to do testing inside of a virtual machine before doing something that could potentially render a box unbootable. This is a very quick and dirty way to alter a run-level for the purposes of learning, but perhaps you can get some ideas from it that can be used in a more production-oriented way.  Ideally, some of the readers of this article will post some production quality hacks to creating custom run levels.</p>
<ol>
<li>cd to <code>/etc/rc.d/rc4.d/</code></li>
<li>do a sanity check to make sure you are running Red Hat:  <code>cat /etc/redhat-release</code></li>
<li>backup existing run-level directory:
<pre>
mkdir /tmp/rc4.d.original/
cp /etc/rc.d/rc4.d/* /tmp/rc4.d.original/
</pre>
</li>
<li><code>rm -f /etc/rc.d/rc4.d/*</code></li>
</ol>
<p>At this point </p>
<pre>
 cp /etc/rc.d/rc1.d/* /etc/rc.d/rc4.d/
</pre>
<p>We have now copied the run-level scripts for single user mode into our own custom run-level 4. We can hijack the the S99single script and tell it to do something different.  In this example, we are going to write a custom Python script that gets forked to the background and backs up the machine over rsync.  Let&#8217;s edit that file we copied:</p>
<pre>
vim /etc/rc.d/rc4.d/S99single
</pre>
<p>Change the last part of it to look like this:</p>
<pre>
# Now go to the single user level.
echo $"Telling INIT to go to single user mode."
echo "This is a custom code. Forking custom script"
/custom.py &#038;
exec init -t1 S
</pre>
<p>We&#8217;ve inserted two lines.  One echoes that we are forking off a custom script. The second line forks a python script, shown below, that backs up the machine via rsync.  Note that this assumes you have set up ssh keys on the remote backup server.</p>
<p>custom.py script:</p>
<pre>
#!/usr/bin/env python
import time
import subprocess

rsync = "rsync -av / 10.0.1.3:/Volumes/Backup/server_backup/"
network = "service network start"
init = "init 3"

cmds = [rsync, network]

def single_user_backup():
    """Starts network service, creates backup and returns to init 3"""
    try:
        subprocess.call(network, shell=True)
        subprocess.call(rsync, shell=True)
    finally:
        subprocess.call(init, shell=True)

def main():
    """Runs program"""
    print "sleeping for 60 seconds"
    #time.sleep(60)  #Gives machine time to quiesce
    single_user_backup()

main()
</pre>
<p>The main function runs a sleep command for 60 seconds, just to give the single user mode scripts time to quiesce the box. Remember, this script is forked to the background.  Next, function single_user_backup attempts to start network services and run rsync to remotely back up the whole / volume to another server.  This is obviously crude and there will be lots of errors trying to back up /proc, for example, but it give you an idea of how an automated backup could work with a custom run-level.  Finally, the machine gets called back to init 3, which is console only multi-user mode.</p>
<dl class="adtip">
<dt>Tip:</dt>
<dd>Again, this is just an idea for a backup script, but not one I would actually run in production in my wildest dreams.  One problem with this technique is that because of symbolic links in run level 1, we actually, changed run level 1 and our run level 4.  This is not acceptable, obviously, for any sane user, but it is acceptable as a way to have fun with a disposable virtual machine!</dd>
</dl>
<p>If you can think of a more realistic backup script that would work from a custom run-level, I would love to see it.  Create a how to on your blog, and then post a response to this article.  Also, it would interesting to see other things such as database backups and migration done with custom run-levels as well. Leave a comment and let me know what you&#8217;d do.</p>
<h2>Running your own run-level</h2>
<p>To run the newly created run-level, you only need to type:</p>
<pre>
init 4
</pre>
<p>You will then see the custom print statements we inserted. The machine<br />
will sleep for 60 seconds, and then run the rsync backup.</p>
<h2>Summary</h2>
<p>This article covered quite a bit of ground in a short while.  We went over what a run-level was, how to tell what run-level you are at, how to change run-levels, and, finally, how to make your own run-level with custom, frankenstein quality, code.  Hopefully, this showed you some new tricks and spurs some ideas for further innovation with run-levels.</p>
<h2>References</h2>
<ul>
<li><a href="http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/en-US/System_Administration_Guide/Controlling_Access_to_Services-Runlevels.html">Section 19.1. Runlevels</a> (Red Hat Enterprise Linux 4 manual)</li>
<li><a href="http://en.wikipedia.org/wiki/Runlevel">Wikipedia: Runlevel</a></li>
<li><a href="http://en.wikipedia.org/wiki/Init">Wikipedia: Init</a></li>
<li><a href="http://www.redhatmagazine.com/2008/02/07/python-for-bash-scripters-a-well-kept-secret/">Python for bash scripters: A well-kept secret</a> (RHM, Feb 2008)</li>
</ul>
<h2>About the author</h2>
<p>Noah Gift is the co-author of <em>Python For Unix and Linux</em> by O&#8217;Reilly Publishers.  He is an author, speaker, consultant, and community leader,  writing for publications such as IBM Developerworks, Red Hat Magazine, O&#8217;Reilly, and MacTech.  His has both a <a href="http://www.giftcs.com">consulting company</a> and a <a href="http://www.noahgift.com">personal website</a>.  Noah is also the current organizer for the <a href="http://www.pyatl.org">www.pyatl.org&#8221;>Python User Group for Atlanta, GA</a>.   He has given presentations at PyCon and PyAtl.   In his free time, he enjoys spending time with his wife Leah, and their son Liam, playing the piano, and exercising religiously.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redhatmagazine.com/2008/06/03/run-levels-create-use-modify-and-master/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Friday Fedora reviews wrap-up</title>
		<link>http://www.redhatmagazine.com/2008/05/23/friday-fedora-reviews-wrap-up/</link>
		<comments>http://www.redhatmagazine.com/2008/05/23/friday-fedora-reviews-wrap-up/#comments</comments>
		<pubDate>Fri, 23 May 2008 16:37:16 +0000</pubDate>
		<dc:creator>Jonathan Roberts</dc:creator>
		
		<category>Fedora</category>

		<category>review</category>

		<guid isPermaLink="false">http://www.redhatmagazine.com/2008/05/23/friday-fedora-reviews-wrap-up/</guid>
		<description><![CDATA[Fedora 9 was released last week, and in the wake of it, the Internet has been full of reviews. What&#8217;s even more exciting is that the vast majority of the reviews have been overwhelmingly positive. So to celebrate the release, the hard work of all the contributors, and the fantastic welcome that it&#8217;s received, we [...]]]></description>
			<content:encoded><![CDATA[<p>Fedora 9 was released last week, and in the wake of it, the Internet has been full of reviews. What&#8217;s even more exciting is that the vast majority of the reviews have been overwhelmingly positive. So to celebrate the release, the hard work of all the contributors, and the fantastic welcome that it&#8217;s received, we thought we&#8217;d share some of the best of the reviews with you. <a id="more-902"></a></p>
<p><a href="http://www.linux.com">Linux.com</a>, like many of the reviews, not only picked up on the technical innovation that Fedora leads, but the community that is at the center of everything the project does.</p>
<p><a href="http://www.linux.com/feature/135102">http://www.linux.com/feature/135102</a></p>
<blockquote><p>&#8220;The Fedora distribution has a reputation for innovation, and the new Fedora 9, released today, is no exception. With features that range from easy filesystem encryption to support for the ext4 format, it includes a wide range of features that are likely to become standard in other distributions in the next six months. But for Paul W. Frields, who became Fedora project leader in February, what distinguishes the release is less the technology than the community that supports it, and how the technology contributes to the larger free software world.&#8221;</p></blockquote>
<p>PC Pro, on the other hand, focused largely on the other two features that have been widely regarded as resounding sucesses for Fedora:</p>
<p><a href="http://www.pcpro.co.uk/news/196605/red-hat-dons-stylish-new-fedora.html">http://www.pcpro.co.uk/news/196605/red-hat-dons-stylish-new-fedora.html</a></p>
<blockquote><p>&#8220;Fedora 9 will be put up for download today, and continues the trend of making Linux a more inviting proposition for newcomers&#8230;</p>
<p>Fedora 9 also allows you to carry a persistent version of the operating system around on a 1GB or greater USB stick, which maintains all your updates and saved files, meaning you need never leave home without your operating system again.&#8221;
</p></blockquote>
<p>And bit-tech.net won the award for the most accurate and succinct report of all:</p>
<p><a href="http://www.bit-tech.net/news/2008/05/12/fedora-9-leaked/1">http://www.bit-tech.net/news/2008/05/12/fedora-9-leaked/1</a></p>
<blockquote><p>&#8220;With the official release due tomorrow, it&#8217;s clear that there&#8217;s plenty for fans of the Fedora distribution to look forward to.&#8221;
</p></blockquote>
<p>If you&#8217;re interested in reading more reviews about Fedora 9, the project is keeping a regularly updated list of all the reviews they come across, and you can find it at <a href="http://fedoraproject.org/wiki/Marketing/PressArchive/F9">the Fedora Project wiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redhatmagazine.com/2008/05/23/friday-fedora-reviews-wrap-up/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Open source project:  OpenJDK</title>
		<link>http://www.redhatmagazine.com/2008/05/16/open-source-project-openjdk/</link>
		<comments>http://www.redhatmagazine.com/2008/05/16/open-source-project-openjdk/#comments</comments>
		<pubDate>Fri, 16 May 2008 19:05:20 +0000</pubDate>
		<dc:creator>Andrew Haley</dc:creator>
		
		<category>Fedora</category>

		<category>culture</category>

		<category>technical</category>

		<category>truth</category>

		<category>JBoss</category>

		<guid isPermaLink="false">http://www.redhatmagazine.com/2008/05/16/open-source-project-openjdk/</guid>
		<description><![CDATA[Contributing writer: Thomas Fitzsimmons
At the 2006 JavaOne conference, Sun announced plans to open source Java.  This wasn&#8217;t exactly a surprise to those of us working on Java at Red Hat, given that there had been rumblings before. But this was a real announcement.  We were immediately interested in learning exactly which license Sun [...]]]></description>
			<content:encoded><![CDATA[<p><em>Contributing writer: Thomas Fitzsimmons</em></p>
<p>At the 2006 JavaOne conference, Sun announced plans to open source Java.  This wasn&#8217;t exactly a surprise to those of us working on Java at Red Hat, given that there had been rumblings before. But this was a real announcement.  We were immediately interested in learning exactly which license Sun would choose.  Even if it was a legitimate open source license, it still might not allow us to combine our code with Sun&#8217;s.</p>
<p>We have been working on free Java for many years&#8211;most particularly through gcj, a project started at Cygnus in 1998 by a developer named Per Bothner.  Gcj has been steadily improving over the years, but still wasn&#8217;t fully Java-compatible, partly because we couldn&#8217;t get permission to run the official Java compatibility test suite.  We had also been working on GNU Classpath, which is GNU&#8217;s free replacement for the core Java class libraries from Sun. We were very curious to see the &#8220;official version.&#8221;<a id="more-893"></a></p>
<p>We were thrilled to hear Sun announce in November 2006 that it had selected  the exact same license as GNU Classpath.</p>
<p>When the complete Java source code&#8211;now called OpenJDK&#8211;was released on May 9, 2007, there were a few challenges.  Most notably, some of the code was missing. Over the years, Sun had licensed Java libraries from a variety of sources, some of which would not allow their code to be open sourced.  In order to work with this encumbered code, Sun provided some &#8220;binary plugs&#8221; that were copied into the build.  This presented a problem as Fedora&#8217;s rules don&#8217;t allow the inclusion of anything that isn&#8217;t open source.  It&#8217;s hard for us to maintain confidence in code we can&#8217;t see.</p>
<p>We were 95 percent of the way to a truly free Java. The way to fill that last five percent became clear: use the code from GNU Classpath. We later discovered that one of the reasons Sun selected the Classpath license was so that they could work with the Classpath developers and the Linux distributions that already used GNU Classpath. This was a great vote of confidence.</p>
<p>We needed to start a project to combine OpenJDK with the GNU Classpath code. This project could have been hosted within Red Hat, but we didn&#8217;t want this to be seen as Red Hat only.  Classpath came to the rescue and Mark Wielaard, GNU Classpath maintainer, set up the <a href="http://icedtea.classpath.org">IcedTea project</a>.  This is the repository for the totally free version of OpenJDK.</p>
<p>Bootstrapping was another not-so-obvious problem. Much of OpenJDK is written in Java.  Sun built the first release of OpenJDK with its unfree Java. Fedora, however, doesn&#8217;t allow packages to depend on any unfree software.  This time, it was gcj that came to the rescue.  Since gcj is completely free software, we could use it to build OpenJDK. This also ensured that unfree code couldn&#8217;t &#8220;leak&#8221; into our OpenJDK package during the build process.</p>
<p>Over the next few weeks, a team within Red Hat worked vigilantly to create the OpenJDK and GNU Classpath hybrid that was to become IcedTea.  Less than a month after we received the OpenJDK source code, we were able to release IcedTea 1.0.  In a few cases, we had to create non-functional stubs for code we didn&#8217;t have, but the result was good enough to run many of the Java applications in Fedora. Since then, Sun has created replacements for many of the binary plugs and we have gradually been able to remove much of the GNU Classpath code.</p>
<p>The OpenJDK that Sun released only ran on i386 and AMD-64 machines. Fedora runs on other systems, in particular those based on the PowerPC.  To solve this problem, we started an IcedTea porting project. That project produced an interpreter-only OpenJDK port for the PowerPC, based on Sun&#8217;s C++ interpreter. This later became Zero, a truly portable &#8220;zero assembler&#8221; version.  As you might expect, a pure interpreter is not as fast as the high-performance JIT (Just In Time) compilers often used in Java implementations, but we&#8217;re working on that.</p>
<p>The OpenJDK code that Sun released was a preview of Java SE Version 7 rather than an implementation of Version 6.  Java SE Version 7 has not yet been released and neither has its specification, so IcedTea cannot officially be certified as compatible with anything.  Despite this, it works so well that we shipped it with Fedora 8.</p>
<p>Though it is not officially part of the Java platform, for many Fedora users the Java web browser plugin is essential to a complete desktop experience.  Sun did not open source its Java plugin with OpenJDK, presenting another opportunity to utilize IcedTea.  GNU Classpath includes a Java plugin named, for historical reasons, <code>gcjwebplugin</code>.  By adapting Sun&#8217;s applet viewer code slightly, we were able to integrate <code>gcjwebplugin</code> into IcedTea to provide a working Java plugin.  This plugin was released as part of Fedora 8, and is installed by default on both x86 and x86-64.  This was the first time a 64-bit Java plugin had been available to Fedora users; unfree Java plugins are 32-bit only.</p>
<p>The plugin is closely related to the other Java deployment technology, Java Web Start, which also currently lacks an open source replacement. We&#8217;re working on IcedTea to complete the support for both the plugin and Java Web Start.  We&#8217;ve integrated and extended NetX, an open source web start implementation; it is now nearing release-readiness for Fedora.  We&#8217;re making good progress on <code>gcjwebplugin</code>&#8217;s two missing features: a LiveConnect Java/JavaScript bridge and signed applet verification.  Future Fedora releases will boast increasingly better integration of these Java deployment technologies. </p>
<p>After the release of Fedora 8, the lack of an open source version of Java SE Version 6 became more of a problem.  Developers were using IcedTea on Fedora, but as it was a preview of Version 7, there was a risk that people might rely on libraries and interfaces that would change when Version 7 was released.  Sun started an OpenJDK 6 project, which took the OpenJDK 7 code base and made the changes necessary for it to be compatible with Version 6.  We immediately realized that this would be far more useful to Fedora users and developers..  After some discussion, we decided to base the next Fedora&#8217;s OpenJDK on the Java 6 code.</p>
<p>At the same time, Sun decided to allow Fedora to use its OpenJDK trademark for IcedTea.  This makes perfect sense as there are now so few binary plugs needed to build OpenJDK that it&#8217;s a distinction without a real difference from a user&#8217;s point of view.  Fedora 9&#8217;s package is now called OpenJDK, not IcedTea, and it is based on OpenJDK 6.</p>
<p>We have also been permitted to run the official Java SE Compatibility test suite on OpenJDK.  This test suite has a crucial role in Java: to be called Java-compatible, an implementation must pass every one of tens of thousands of tests.  Simply running this test suite is a huge effort. We still fail some tests, so our OpenJDK package cannot yet claim to be Java compatible, but we are working on it.  Watch this space.  When we pass the last few tests, we will finally be able to say &#8220;Java is free!&#8221;
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redhatmagazine.com/2008/05/16/open-source-project-openjdk/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
