<?xml version="1.0"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://fedoraproject.org/people/">
	<title>Fedora People</title>
    <link>http://fedoraproject.org/people/</link>
        <description>Fedora People: http://planet.fedoraproject.org</description>
	<items>
		<rdf:Seq>
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-215030323250205086.post-2578938598473298681" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-215030323250205086.post-5275881182915363643" />
			<rdf:li rdf:resource="http://blogs.gnome.org/markmc/?p=203" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-215030323250205086.post-9062118795577823458" />
			<rdf:li rdf:resource="urn:md5:972125753321ecc876d4d9cd0adf22bf" />
			<rdf:li rdf:resource="http://ankursinha.in/blog/?p=1331" />
			<rdf:li rdf:resource="http://mether.wordpress.com/?p=430" />
			<rdf:li rdf:resource="http://gracca.github.io/blog/2013/05/24/tamano-de-un-repositorio-de-fedora-|-size-of-a-fedora-repository" />
			<rdf:li rdf:resource="http://ssp.impulsetrain.com/2013-05-25_The_Radix_Heap.html" />
			<rdf:li rdf:resource="http://codemonkey.org.uk/?p=479" />
			<rdf:li rdf:resource="http://groveronline.com/?p=393" />
			<rdf:li rdf:resource="http://codemonkey.org.uk/?p=478" />
			<rdf:li rdf:resource="tag:tirfa.com,2013-05-24:how-is-taskbot-different-from-autoqa.html" />
			<rdf:li rdf:resource="tag:tirfa.com,2013-05-24:an-initial-idea-for-taskbot.html" />
			<rdf:li rdf:resource="tag:tirfa.com,2013-05-24:down-with-test-automation-long-live-task-automation.html" />
			<rdf:li rdf:resource="tag:tirfa.com,2013-05-24:rejecting-qa-as-quality-assurance.html" />
			<rdf:li rdf:resource="http://www.alexhudson.com/?p=510" />
			<rdf:li rdf:resource="http://liquidat.wordpress.com/?p=2354" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=4384" />
			<rdf:li rdf:resource="http://matej.ceplovi.cz/blog/?p=452" />
			<rdf:li rdf:resource="http://cecinestpasunefromage.wordpress.com/?p=153" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=4381" />
			<rdf:li rdf:resource="http://www.fedora-blog.de/?p=4657" />
			<rdf:li rdf:resource="http://balanch.ir/?p=3173" />
			<rdf:li rdf:resource="http://rwmj.wordpress.com/?p=4377" />
			<rdf:li rdf:resource="http://goldmann.pl/blog/2013/05/24/domain-mode-in-fedoras-jboss-as/" />
			<rdf:li rdf:resource="http://codemonkey.org.uk/?p=477" />
			<rdf:li rdf:resource="http://threebean.org/blog/plugins-for-mailman3" />
			<rdf:li rdf:resource="http://www.americanteeth.org/category/tech/feed/kvRLs1NSy5AIPDrZ0rQEaRCygHU=" />
			<rdf:li rdf:resource="http://skvidal.wordpress.com/?p=1094" />
			<rdf:li rdf:resource="http://spot.livejournal.com/325053.html" />
			<rdf:li rdf:resource="http://www.fedora-blog.de/?p=4650" />
			<rdf:li rdf:resource="http://www.scrye.com/wordpress/nirik/?p=1267" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-1644341202676110182.post-414579411272730159" />
			<rdf:li rdf:resource="http://fhornain.wordpress.com/?p=1657" />
			<rdf:li rdf:resource="http://lukas.zapletalovi.com/2013/05/openvpn-root-down-plugin-update-in-fedora-18" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-13843503.post-2601606102860473557" />
			<rdf:li rdf:resource="http://codemonkey.org.uk/?p=476" />
			<rdf:li rdf:resource="http://www.adriansoliard.com/?p=473" />
			<rdf:li rdf:resource="http://mether.wordpress.com/?p=418" />
			<rdf:li rdf:resource="http://danwalsh.livejournal.com/64493.html" />
			<rdf:li rdf:resource="http://major.io/?p=4306" />
			<rdf:li rdf:resource="http://fossjon.wordpress.com/?p=951" />
			<rdf:li rdf:resource="http://cecinestpasunefromage.wordpress.com/?p=151" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-3511301649044744817.post-1254687433994968589" />
			<rdf:li rdf:resource="http://blog.printf.net/?p=40302" />
			<rdf:li rdf:resource="http://codemonkey.org.uk/?p=472" />
			<rdf:li rdf:resource="http://cicku.me/?p=2059" />
			<rdf:li rdf:resource="http://ankursinha.in/blog/?p=1328" />
			<rdf:li rdf:resource="http://major.io/?p=4293" />
		</rdf:Seq>
	</items>
</channel>

<item rdf:about="tag:blogger.com,1999:blog-215030323250205086.post-2578938598473298681">
	<title>Paul Mellors: Fedora Wifi - Flashing LED</title>
    <link>http://www.paulmellors.net/2013/05/fedora-wifi-flashing-led.html</link>
	<content:encoded>As with Ubuntu, I got sick of my Wifi LED flashing when accessing the internet, pain in the neck.  I managed to fix it in the same way.  I've Dell Inspiron E6510.&lt;br /&gt;&lt;br /&gt;lspci&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Network controller: Intel Corporation Centrino Advanced-N 6200 (rev 35)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;lspci -vv -s 03:00.0&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;03:00.0 Network controller: Intel Corporation Centrino Advanced-N 6200 (rev 35)&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot; class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;Subsystem: Intel Corporation Centrino Advanced-N 6200 2x2 AGN&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot; class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot; class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast &amp;gt;TAbort- &amp;lt;TAbort- &amp;lt;MAbort- &amp;gt;SERR- &amp;lt;PERR- INTx-&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot; class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;Latency: 0, Cache Line Size: 64 bytes&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot; class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;Interrupt: pin A routed to IRQ 43&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot; class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;Region 0: Memory at e6e00000 (64-bit, non-prefetchable) [size=8K]&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot; class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;Capabilities: &amp;lt;access denied&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot; class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;Kernel driver in use: iwlwifi&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So that's my wireless information, if yours is similar then all you need to do is create a file in /etc/modprobe.d called iwlwifi.conf and add the line&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;options iwlwifi led_mode=1&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;save the file and reboot.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Blinking LEG begone.....&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-25T20:03:00+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-215030323250205086.post-5275881182915363643">
	<title>Paul Mellors: Fedora 18 Desktop</title>
    <link>http://www.paulmellors.net/2013/05/fedora-18-desktop.html</link>
	<content:encoded>These settings will give your Fedora 18 a much more familiar look and feel. This will move you to fallback mode and enable your desktop.&lt;br /&gt;&lt;br /&gt;Step 1:&lt;br /&gt;open terminal and type the following (double check&lt;br /&gt;your typings!!)&lt;br /&gt;&lt;br /&gt;gsettings set org.gnome.desktop.session session-name gnome-fallback&lt;br /&gt;gsettings set org.gnome.desktop.background show-desktop-icons true&lt;br /&gt;gnome-session-quit&lt;br /&gt;**your desktop will be logged out**&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 2:&lt;br /&gt;log back in&lt;br /&gt;&lt;br /&gt;How To Return Back:&lt;br /&gt;&lt;br /&gt;Step 1:&lt;br /&gt;open terminal and type the following (double check&lt;br /&gt; your typings!!)&lt;br /&gt;&lt;br /&gt;gsettings set org.gnome.desktop.session session-name gnome&lt;br /&gt;gsettings set org.gnome.desktop.background show-desktop-icons false&lt;br /&gt;gnome-session-quit&lt;br /&gt;**your desktop will be logged out**&lt;br /&gt;&lt;br /&gt;Step 2:&lt;br /&gt;log back in&lt;br /&gt;&lt;br /&gt;Article origially written here -&lt;br /&gt;http://foobaring.blogspot.co.uk/2013/01/howto-enabled-desktop-in-fedora-18.html</content:encoded>
	<dc:date>2013-05-25T14:58:00+00:00</dc:date>
</item>
<item rdf:about="http://blogs.gnome.org/markmc/?p=203">
	<title>Mark McLoughlin: April 14th OpenStack Foundation Board Meeting</title>
    <link>http://blogs.gnome.org/markmc/2013/05/25/april-14th-openstack-foundation-board-meeting/</link>
	<content:encoded>&lt;p&gt;On April 14, the day before the OpenStack Summit in Portland began, the OpenStack Foundation Board held an all-day, in-person meeting. Like all of our board meetings, the &lt;a href=&quot;https://wiki.openstack.org/wiki/Governance/Foundation/14Apr2013BoardMeeting&quot;&gt;agenda&lt;/a&gt; was packed solid.&lt;/p&gt;
&lt;p&gt;After our meetings, the goal is for Jonathan to post a summary to the mailing list (like &lt;a href=&quot;http://lists.openstack.org/pipermail/foundation/2013-February/001364.html&quot;&gt;this one&lt;/a&gt;) and I try and follow up with a longer blog post with a bit more commentary. For a bunch of reasons, we’ve let things slide this time, but here’s my attempt at a summary anyway. It’s been a while since the meeting, so a lot of the details are pretty vague at this point.&lt;/p&gt;
&lt;p&gt;One thing I really liked about the meeting was that we had chairs set up so that anyone who wished to attend the meeting and listen were welcome to do so. With so many stackers already in town for the summit, it really was a great opportunity to open the workings of the board to anyone interested.&lt;/p&gt;
&lt;h3&gt;Transparency Committee&lt;/h3&gt;
&lt;p&gt;The first meaty item on the agenda was an update from Joshua McKenty on the progress of the board’s &lt;a href=&quot;http://lists.openstack.org/pipermail/foundation/2013-February/001362.html&quot;&gt;Transparency Committee&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We began by discussing Nick Barcet’s efforts to choose and implement a document management system for the board. OwnCloud, Google Drive, Dropbox and github have all been considered. Google Drive and Dropbox would not be accessible by all board members. It was noted that the Foundation staff will also require a document management system and we might be able to use the same system for both use cases. Conclusion was for Nick and Monty to see if the OpenStack Infrastructure team could host OwnCloud for this purpose.&lt;/p&gt;
&lt;p&gt;Next we discussed the transparency policy which Lauren Sell and Mark Radcliffe have been working on. The core concern is how to balance the need for having a culture of transparency and openness with the need for some information (like legal or personnel matters) to be kept confidential. The general approach discussed was having the board’s mailing list open, but confidential information would be shared via private documents in a document management system that could be referred to in mailing list posts. The distinction between confidential and embargoed information was discussed and it was agreed that embargoed information should have a disclosure date associated with it.&lt;/p&gt;
&lt;p&gt;There was also a brief discussion on the possibility of having a transparency ombudsman. This would be a person trusted by the community with whom complaints related to transparency could be raised. It was felt this could be a duty of a foundation employee, if that individual had already established the reputation for trustworthiness and independence required.&lt;/p&gt;
&lt;h3&gt;2013 Individual Director Elections&lt;/h3&gt;
&lt;p&gt;Next up, Rob Hirschfeld led a discussion on possible changes to the election process in time for the 2013 Individual Director elections.&lt;/p&gt;
&lt;p&gt;We began by discussing how we would go about making any required changes to &lt;a href=&quot;https://wiki.openstack.org/wiki/Governance/Foundation/Bylaws&quot;&gt;the bylaws&lt;/a&gt;. It was recognized that we would need a firm proposal to be made to the board in August so that notice could be given in September of a vote in October in time for the elections in November.&lt;/p&gt;
&lt;p&gt;It was also noted that a bylaws change would require a majority vote of the individual members with a voter turnout of 25%. For reference, we had a 28% turnout at the &lt;a href=&quot;https://www.bigpulse.com/pollresults?code=2888d7aPUFe5Euveb5kiYNGT&quot;&gt;previous election&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We also briefly discussed &lt;a href=&quot;https://etherpad.openstack.org/2013-Individual-Elections&quot;&gt;the potential objectives&lt;/a&gt; for any changes to the elections process but avoided going deep on this because of the limited time available on the agenda.&lt;/p&gt;
&lt;h3&gt;Legal Affairs Committee&lt;/h3&gt;
&lt;p&gt;Next on the agenda was a discussion (led by me) about the Legal Affairs Committee.&lt;/p&gt;
&lt;p&gt;The main concern I raise was the project (or the “Technical Community and Committee”, as I called it) needed the support of subject matter experts when dealing with the kina of legal issues regularly encountere by all open-source projects, particularly in the area of copyright and licensing. I proposed Richard Fontana’s idea that, rather than dependinging exclusively on the Legal Affairs Committee or the Foundation’s legal counsel for help with such matters, we would create a legal-discuss mailing list where any subject matter experts could contribute to resolving issues raise by the technical community. The idea was that we would also have a FAQ wiki page to document any conclusions reache on the list. There was some discussion about whether opinions expressed on the list could be construed as legal advice and it was agreed to put in place disclaimers to avoid that perception.&lt;/p&gt;
&lt;p&gt;(For the record, we’ve since create &lt;a href=&quot;http://lists.openstack.org/cgi-bin/mailman/listinfo/legal-discuss&quot;&gt;the legal-discuss mailing list&lt;/a&gt; and &lt;a href=&quot;https://wiki.openstack.org/wiki/LegalIssuesFAQ&quot;&gt;the legal issues FAQ&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;We also discussed whether the description of scope of the Legal Affairs Committee in the bylaws could be improved and whether the strict five member limit in the bylaws was really such a good idea. It was agreed that I would work with Alice King to see if we can address those issues.&lt;/p&gt;
&lt;p&gt;(Again for the record, Alice and I had a productive discussion and we put together &lt;a href=&quot;https://wiki.openstack.org/wiki/Governance/Foundation/LegalAffairsCommittee&quot;&gt;the Legal Affairs Committee wiki page&lt;/a&gt; to at least ensure the committee’s scope, membership and progress could be properly documented.)&lt;/p&gt;
&lt;h3&gt;Gold Member Applications&lt;/h3&gt;
&lt;p&gt;Next up, we had presentations from &lt;a href=&quot;https://wiki.openstack.org/w/images/4/4a/JuniperGoldApplication.pdf&quot;&gt;Juniper&lt;/a&gt; and &lt;a href=&quot;https://wiki.openstack.org/w/images/9/94/Ericsson_application_openstack.pdf&quot;&gt;Ericsson&lt;/a&gt; on their applications for Gold Membersip. Once the presentations had been completed, we convened an executive session to discuss the applications in private.&lt;/p&gt;
&lt;p&gt;During the executive session, the board reviewed each application using the [https://wiki.openstack.org/wiki/Governance/Foundation/PotentialMemberCriteria previously agreed criteria].&lt;/p&gt;
&lt;p&gt;Once the executive session was completed, the board reconvened the meeting and carried out the official, public vote on the new member applications. The applications of both Ericsson and Juniper were approved.&lt;/p&gt;
&lt;p&gt;As part of the voting process, some directors chose to publicly restate their concerns with the applications that had been discussed during the executive session. One concern raised by Rob Hirschfeld and Joshua McKenty was that, while both applicants shared their plans for increasing their OpenStack engagement, it could be argued that future plans aren’t the same as the “demonstrated commitment” talked about in the membership criteria.&lt;/p&gt;
&lt;p&gt;Another concern discussed at length was that applicants could provide much more in the way of written detail about how they meet the membership criteria. One take on this was that applicants should be expected to provide a resume of their involvement with, and commitment, to OpenStack. Simon Anderson proposed that we form a membership committee which would mentor applicants and advise them on how to prepare their application.&lt;/p&gt;
&lt;p&gt;In total, discussion of these applications and the process for new gold members took up 4 hours of the board’s time. While this may seem excessive, it was very apparent that everyone on the board was keen for the Foundation to have gold members that would help drive OpenStack’s success. With the addition of Ericsson and Juniper, we now have 16 of the 24 gold member slots filled. As the number of remaining slots shrink, I think we will see the board having higher expectations of applications.&lt;/p&gt;
&lt;h3&gt;Programs&lt;/h3&gt;
&lt;p&gt;At this point, the board seemed collectively quite drained of energy and the agenda had to be significantly reworked because there wasn’t much time remaining.&lt;/p&gt;
&lt;p&gt;Monty took the opportunity to briefly discuss an idea he had to introduce the concept of “programs” in addition to our current concept of projects. We would use this to recognize efforts like documentation and CI on equal footing with the integrated projects. Other efforts like Oslo, TripleO and puppet recipes were also mentioned as potential programs.&lt;/p&gt;
&lt;p&gt;Rather than go into too detailed discussion on the topic, we generally expressed support for the concept but agreed it needed further discussion.&lt;/p&gt;
&lt;h3&gt;Joint Session&lt;/h3&gt;
&lt;p&gt;Part of the agenda for the meeting was that members of the Technical Committee were invited to join the meeting for a joint session. Monty and I were obviously already present, but Michael Still and Thierry Carrez also joined. Other TC members had not yet arrived in Portland or weren’t fully aware of the joint session. We had some discussion about how to have a joint session with better attendance from both groups and the idea of a joint design summit session at the next summit was mooted.&lt;/p&gt;
&lt;h3&gt;User Committee&lt;/h3&gt;
&lt;p&gt;Tim Bell stepped up next to give an overview of the results of the User Committee’s recently completed survey of OpenStack users.&lt;/p&gt;
&lt;p&gt;Tim is presenting these exciting results at the summit, so I won’t repeat them here. However, we did have an interesting discussion about how representative the survey was of OpenStack deployments. Tim offered 50-75% as his gut feeling for the percentage of deployments covered but Joshua McKenty reckoned it was probably less than 25%. There was some discussion about future surveys and the potential for an opt-in usage stats tracking tool to increase the percentage of deployments we know about.&lt;/p&gt;
&lt;h3&gt;Incubation Update Committee&lt;/h3&gt;
&lt;p&gt;Next up, Alan Clark presented the &lt;a href=&quot;https://wiki.openstack.org/wiki/Governance/Foundation/IncubationUpdate2013&quot;&gt;final report of the Incubation Update Committee&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The board was generally very supportive of the work of the committee, but it was clear further discussion was required on the topic of Core status and the board’s trademark usage program. Much discussion was had around the desire for projects like Heat and Ceilometer to be able to adopt official OpenStack project names (like “OpenStack Measurement” for Ceilometer) and whether this was all that would be implied by Core status. However, there is also the question of whether clouds which wish to use the OpenStack brand should be required to use all Core projects or whether a trademark program around more targetted interoperability testing made more sense.&lt;/p&gt;
&lt;p&gt;It was agreed that this was an incredibly important and urgent topic but that we had run out of time at this meeting to make progress on it.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-25T14:44:28+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-215030323250205086.post-9062118795577823458">
	<title>Paul Mellors: Fedora</title>
    <link>http://www.paulmellors.net/2013/05/fedora.html</link>
	<content:encoded>Hello Planet Fedora&lt;br /&gt;&lt;br /&gt;Just a quick message to say, I'm back :)</content:encoded>
	<dc:date>2013-05-25T13:17:00+00:00</dc:date>
</item>
<item rdf:about="urn:md5:972125753321ecc876d4d9cd0adf22bf">
	<title>Mathieu Bridon (bochecha): IBus Cangjie in distributions</title>
    <link>http://blog.fedora-fr.org/bochecha/post/2013/05/IBus-Cangjie-in-distributions</link>
	<content:encoded>&lt;p&gt;I recently &lt;a href=&quot;http://blog.fedora-fr.org/bochecha/post/2013/05/IBus-Cangjie-1.0-is-out&quot;&gt;released
IBus Cangjie 1.0&lt;/a&gt;, and since then, I got it pushed to the Fedora
repositories.&lt;/p&gt;
&lt;p&gt;That means the following distributions now provide packages for easy
installation of IBus Cangjie:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://aur.archlinux.org/packages/ibus-cangjie/&quot;&gt;Arch Linux (in
AUR)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://apps.fedoraproject.org/packages/ibus-cangjie&quot;&gt;Fedora &amp;gt;=
18&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://apps.ubuntu.com/cat/applications/raring/ibus-cangjie/&quot;&gt;Ubuntu &amp;gt;=
13.04&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition, Anthony Wong has started the work to get his Ubuntu packages
into Debian as well.&lt;/p&gt;
&lt;p&gt;If you want to help us by getting IBus Cangjie into your distribution,
&lt;a href=&quot;http://ibus-cangjie.opensource.hk/get_involved.html#come-talk-to-us&quot;&gt;let us
know&lt;/a&gt;, and we'll do our best to help. &lt;img src=&quot;http://blog.fedora-fr.org/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-25T04:23:00+00:00</dc:date>
</item>
<item rdf:about="http://ankursinha.in/blog/?p=1331">
	<title>Ankur Sinha "FranciscoD": Reminder: Fedora 20 election nominations and questionnaire close today!</title>
    <link>http://ankursinha.in/blog/2013/05/25/reminder-fedora-20-election-nominations-and-questionnaire-close-today/</link>
	<content:encoded>&lt;p&gt;Yep! &lt;strong&gt;TODAY!!&lt;/strong&gt; If you haven’t added your nomination yet, or haven’t added questions that you think will help you better judge your candidates, do it &lt;strong&gt;NOW!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://fedoraproject.org/wiki/Elections&quot; target=&quot;_blank&quot; title=&quot;https://fedoraproject.org/wiki/Elections&quot;&gt;https://fedoraproject.org/wiki/Elections&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://fedoraproject.org/wiki/Elections/Questionnaire&quot; target=&quot;_blank&quot; title=&quot;https://fedoraproject.org/wiki/Elections/Questionnaire&quot;&gt;https://fedoraproject.org/wiki/Elections/Questionnaire&lt;/a&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-25T03:33:12+00:00</dc:date>
</item>
<item rdf:about="http://mether.wordpress.com/?p=430">
	<title>Rahul Sundaram: Now GNU/Linux makes sense</title>
    <link>http://mether.wordpress.com/2013/05/25/now-gnulinux-makes-sense/</link>
	<content:encoded>&lt;p&gt;My motivation is not FSF advocacy however.  A few years back,  every Linux distribution used the GNU user space, so everybody just took it for granted.  While a number of Linux distributions have combined their typical packages with a different kernel (Debian GNU/Hurd, ArchBSD etc), the other way around never happened.  So when the community talked about Linux in a generic way, it meant a Linux distribution.&lt;/p&gt;
&lt;p&gt;However Android has risen as the most popular Linux distribution albeit for the mobile phone/tablet market.   I have heard some people protest that this is not a real Linux system but what they really mean is that this is not the Linux + GNU user space system that they are used to.  So perhaps GNU/Linux would serve as a shorthand to differentiate.   Thoughts?&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/mether.wordpress.com/430/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/mether.wordpress.com/430/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=mether.wordpress.com&amp;amp;blog=8042356&amp;amp;post=430&amp;amp;subd=mether&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-25T02:21:31+00:00</dc:date>
</item>
<item rdf:about="http://gracca.github.io/blog/2013/05/24/tamano-de-un-repositorio-de-fedora-|-size-of-a-fedora-repository">
	<title>Germán A. Racca: Tamaño de un repositorio de Fedora | Size of a Fedora repository</title>
    <link>http://gracca.github.io/blog/2013/05/24/tamano-de-un-repositorio-de-fedora-%7C-size-of-a-fedora-repository/</link>
	<content:encoded>&lt;p&gt;Para saber el tamaño total de algún repositorio que tengamos configurado en Fedora, digamos el repositorio &lt;code&gt;/etc/yum.repos.d/fedora.repo&lt;/code&gt;, utilizamos el siguiente comando:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ repoquery --disablerepo=\* --enablerepo=fedora -qa --qf='%{SIZE}' | awk '{sum+=$1} END{printf(&quot;Total size: %d MB\n&quot;, sum/1024/1024)}'
  Total size: 33910 MB
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ese es el resultado que obtengo en mi caso usando Fedora 18. Podemos hacerlo con cualquier repositorio que aparezca en &lt;code&gt;/etc/yum.repos.d/&lt;/code&gt;. Inclusive podemos poner más de uno, por ejemplo usando &lt;code&gt;--enablerepo=fedora,updates&lt;/code&gt; sabremos el tamaño total de los repositorios &lt;code&gt;/etc/yum.repos.d/fedora.repo&lt;/code&gt; y &lt;code&gt;/etc/yum.repos.d/fedora-updates.repo&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;El comando &lt;a href=&quot;http://linux.die.net/man/1/repoquery&quot;&gt;repoquery&lt;/a&gt; (perteneciente al paquete &lt;code&gt;yum-utils&lt;/code&gt;), junto con las opciones que le pusimos, nos lista los tamaños de todos los paquetes que contiene.&lt;/p&gt;

&lt;p&gt;El comando &lt;a href=&quot;http://linux.die.net/man/1/awk&quot;&gt;awk&lt;/a&gt; en este caso va sumando todas las líneas, hasta que presentamos el valor final en megabytes (por eso la doble división al final).&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-25T01:09:00+00:00</dc:date>
</item>
<item rdf:about="http://ssp.impulsetrain.com/2013-05-25_The_Radix_Heap.html">
	<title>Søren Sandmann: The Radix Heap</title>
    <link>http://ssp.impulsetrain.com/2013-05-25_The_Radix_Heap.html</link>
	<content:encoded>&lt;p&gt;The &lt;em&gt;Radix Heap&lt;/em&gt; is a priority queue that has better caching behavior
than the well-known &lt;a href=&quot;http://en.wikipedia.org/wiki/Binary_Heap&quot;&gt;binary heap&lt;/a&gt;, but also two restrictions: (a)
that all the keys in the heap are integers and (b) that you can never
insert a new item that is smaller than all the other items currently
in the heap.&lt;/p&gt;
&lt;p&gt;These restrictions are not that severe. The Radix Heap still works in
many algorithms that use heaps as a subroutine: Dijkstra’s
shortest-path algorithm, Prim’s minimum spanning tree algorithm,
various sweepline algorithms in computational geometry.&lt;/p&gt;
&lt;p&gt;Here is how it works. If we assume that the keys are 32 bit integers,
the radix heap will have 33 buckets, each one containing a list of
items. We also maintain one global value &lt;code&gt;last_deleted&lt;/code&gt;, which is
initially &lt;code&gt;MIN_INT&lt;/code&gt; and otherwise contains the last value extracted
from the queue.&lt;/p&gt;
&lt;p&gt;The invariant is this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The items in bucket &amp;lt;mathjax&amp;gt;$k$&amp;lt;/mathjax&amp;gt; differ from &lt;code&gt;last_deleted&lt;/code&gt; in bit &amp;lt;mathjax&amp;gt;$k - 1$&amp;lt;/mathjax&amp;gt;,
  but not in bit &amp;lt;mathjax&amp;gt;$k$&amp;lt;/mathjax&amp;gt; or higher. The items in bucket 0 are equal to
  &lt;code&gt;last_deleted&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For example, if we compare an item from bucket 10 to &lt;code&gt;last_deleted&lt;/code&gt;,
we will find that bits 31–10 are equal, bit 9 is different, and bits
8–0 may or may not be different.&lt;/p&gt;
&lt;p&gt;Here is an example of a radix heap where the last extracted value was
7:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;http://ssp.impulsetrain.com/radix-heap/radix1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As an example, consider the item 13 in bucket 4. The bit pattern of 7
is 0111 and the bit pattern of 13 is 1101, so the highest bit that is
different is bit number 3. Therefore the item 13 belongs in bucket &amp;lt;mathjax&amp;gt;$3
+ 1 = 4$&amp;lt;/mathjax&amp;gt;. Buckets 1, 2, and 3 are empty, but that’s because a number
that differs from 7 in bits 0, 1, or 2 would be smaller than 7 and so
isn’t allowed in the heap according to restriction (b).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Operations&lt;/strong&gt;&lt;br /&gt;
When a new item is inserted, it has to be added to the correct
bucket. How can we compute the bucket number? We have to find the
highest bit where the new item differs from &lt;code&gt;last_deleted&lt;/code&gt;. This is
easily done by &lt;code&gt;XOR&lt;/code&gt;ing them together and then finding the highest bit
in the result. Adding one then gives the bucket number:&lt;/p&gt;
&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;bucket_no = highest_bit (new_element XOR last_deleted) + 1
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;where &lt;code&gt;highest_bit(x)&lt;/code&gt; is a function that returns the highest set bit
of &lt;code&gt;x&lt;/code&gt;, or &amp;lt;mathjax&amp;gt;$-1$&amp;lt;/mathjax&amp;gt; if &lt;code&gt;x&lt;/code&gt; is 0.&lt;/p&gt;
&lt;p&gt;Inserting the item clearly preserves the invariant because the new
item will be in the correct bucket, and &lt;code&gt;last_deleted&lt;/code&gt; didn’t change,
so all the existing items are still in the right place.&lt;/p&gt;
&lt;p&gt;Extracting the minimum involves first finding the minimal item by
walking the lowest-numbered non-empty bucket and finding the minimal
item in that bucket. Then that item is deleted and &lt;code&gt;last_deleted&lt;/code&gt; is
updated. Then the bucket is walked again and all the items are
redistributed into new buckets according to the new &lt;code&gt;last_deleted&lt;/code&gt;
item.&lt;/p&gt;
&lt;p&gt;The extracted item will be the minimal one in the data structure
because we picked the minimal item in the redistributed bucket, and
all the buckets with lower numbers are empty. And if there were a
smaller item in one of the buckets with higher numbers, it would be
differing from &lt;code&gt;last_deleted&lt;/code&gt; in one of the more significant bits, say
bit &amp;lt;mathjax&amp;gt;$k$&amp;lt;/mathjax&amp;gt;. But since the items in the redistributed bucket are equal to
&lt;code&gt;last_deleted&lt;/code&gt; in bit &amp;lt;mathjax&amp;gt;$k$&amp;lt;/mathjax&amp;gt;, the hypothetical smaller item would then
have to also be smaller than &lt;code&gt;last_deleted&lt;/code&gt;, which it can’t be because
of restriction (b) mentioned in the introduction. Note that this
argument also works for two-complement signed integers.&lt;/p&gt;
&lt;p&gt;We have to be sure this doesn’t violate the invariant. First note that
all the items that are being redistributed will satisfy the invariant
because they are simply being inserted. The items in a bucket with a
higher number &amp;lt;mathjax&amp;gt;$k$&amp;lt;/mathjax&amp;gt; were all different from the old &lt;code&gt;last_deleted&lt;/code&gt; in
the &amp;lt;mathjax&amp;gt;$(k-1)$&amp;lt;/mathjax&amp;gt;th bit. This bit must then necessarily also be different
from the &amp;lt;mathjax&amp;gt;$(k-1)$&amp;lt;/mathjax&amp;gt;th bit in the new &lt;code&gt;last_deleted&lt;/code&gt;, because if it
weren’t, the new &lt;code&gt;last_deleted&lt;/code&gt; would itself have belonged in bucket
&amp;lt;mathjax&amp;gt;$k$&amp;lt;/mathjax&amp;gt;. And finally, since the bucket being redistributed is the
lowest-numbered non-empty one, there can’t be any items in a bucket
with a lower number. So the invariant still holds.&lt;/p&gt;
&lt;p&gt;In the example above, if we extract the two ‘7’s from bucket 0 and the
‘8’ from bucket 4, the new heap will look like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;http://ssp.impulsetrain.com/radix-heap/radix8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Notice that bucket 4, where the ‘8’ came from, is now empty.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;br /&gt;
Inserting into the radix heap takes constant time because all we have
to do is add the new item to a list. Determining the highest set bit
can be done in constant time with an instruction such as &lt;code&gt;bsr&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The performance of extraction is dominated by the redistribution of
items. When a bucket is redistributed, it ends up being empty. To see
why, remember that all the items are different from &lt;code&gt;last_deleted&lt;/code&gt; in
the &amp;lt;mathjax&amp;gt;$(k - 1)$&amp;lt;/mathjax&amp;gt;th bit. Because the new &lt;code&gt;last_deleted&lt;/code&gt; comes from bucket
&amp;lt;mathjax&amp;gt;$k$&amp;lt;/mathjax&amp;gt;, the items are now all &lt;em&gt;equal&lt;/em&gt; to &lt;code&gt;last_deleted&lt;/code&gt; in the &amp;lt;mathjax&amp;gt;$(k -
1)th$&amp;lt;/mathjax&amp;gt; bit. Hence they will all be redistributed to a lower-numbered
bucket.&lt;/p&gt;
&lt;p&gt;Now consider the life-cycle of a single element. In the worst case it
starts out being added to bucket 31 and every time it is
redistributed, it moves to a lower-numbered bucket. When it reaches
bucket 0, it will be next in line for extraction. It follows that the
maximum number of redistributions that an element can experience is
31.&lt;/p&gt;
&lt;p&gt;Since a redistribution takes constant time per element distributed,
and since an element will only be redistributed &amp;lt;mathjax&amp;gt;$d$&amp;lt;/mathjax&amp;gt; times, where &amp;lt;mathjax&amp;gt;$d$&amp;lt;/mathjax&amp;gt;
is the number of bits in the element, it follows that the amortized
time complexity of extraction is &amp;lt;mathjax&amp;gt;$O(d)$&amp;lt;/mathjax&amp;gt;. In practice we will often do
better though, because most items will not move through all the
buckets.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caching performance&lt;/strong&gt;&lt;br /&gt;
Some descriptions of the radix heap recommend implementing the buckets
as doubly linked lists, but that would be a mistake because linked
lists have terrible cache locality. It is better to implement them as
dynamically growing arrays. If you do that, the top of the buckets
will tend to be hot which means the per-item number of cache misses
during redistribution of a bucket will tend to be &amp;lt;mathjax&amp;gt;$O(1/B)$&amp;lt;/mathjax&amp;gt;, where &amp;lt;mathjax&amp;gt;$B$&amp;lt;/mathjax&amp;gt;
is the number of integers in a cache line. This means the amortized
cache-miss complexity of extraction will be closer to &amp;lt;mathjax&amp;gt;$O(d/B)$&amp;lt;/mathjax&amp;gt; than to
&amp;lt;mathjax&amp;gt;$O(d)$&amp;lt;/mathjax&amp;gt;.&lt;/p&gt;
&lt;p&gt;In a regular binary heap, both insertion and extraction require
&amp;lt;mathjax&amp;gt;$\Theta(\log n)$&amp;lt;/mathjax&amp;gt; swaps in the worst case, and each swap (except for
those very close to the top of the heap) will cause a cache miss.&lt;/p&gt;
&lt;p&gt;In other words, if &amp;lt;mathjax&amp;gt;$d = \Theta(\log n)$&amp;lt;/mathjax&amp;gt;, extraction from a radix heap will
tend to generate &amp;lt;mathjax&amp;gt;$\Theta(\log n / B)$&amp;lt;/mathjax&amp;gt; cache misses, where a binary heap will
require &amp;lt;mathjax&amp;gt;$\Theta(\log n)$&amp;lt;/mathjax&amp;gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-25T00:00:00+00:00</dc:date>
</item>
<item rdf:about="http://codemonkey.org.uk/?p=479">
	<title>Dave Jones: daily log May 24th 2013</title>
    <link>http://codemonkey.org.uk/2013/05/24/daily-log-may-24th-2013/</link>
	<content:encoded>&lt;ul&gt;
&lt;li&gt;Woke up to find &lt;a href=&quot;https://lkml.org/lkml/2013/5/24/53&quot;&gt;a fix in my inbox for the XFS setattr bug&lt;/a&gt;. Bug turned out to be a few years old, and also highlighted a broken test in xfstests. Two bugs for the price of one.
&lt;/li&gt;&lt;li&gt;Applied the daily “fix trinity compile on old distros” bug.
&lt;/li&gt;&lt;li&gt;Briefly looked at &lt;a href=&quot;http://www.hpl.hp.com/personal/Hans_Boehm/gc/&quot;&gt;Boehm-Demers-Weiser garbage collector&lt;/a&gt; with a view to maybe using it in Trinity in the absence of better allocation tracking.
&lt;/li&gt;&lt;li&gt;Updated a &lt;a href=&quot;https://github.com/kernelslacker/scripts/blob/master/fkbug.sh&quot;&gt;triage script&lt;/a&gt; to add all the aliases we have for fedora kernel bugs. Hoping that in time that script can grow to be even more useful.
&lt;/li&gt;&lt;li&gt;Tried out &lt;a href=&quot;https://lkml.org/lkml/2013/5/24/379&quot;&gt;another potential fix for the RCU problems&lt;/a&gt; I’ve been seeing. Seems good so far.
&lt;/li&gt;&lt;li&gt;Looked at a bunch of &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=964335&quot;&gt;“can’t boot” bugs&lt;/a&gt; that came in since F18 got rebased to 3.9. Found a thread upstream that seems to be discussing the same bug.
&lt;/li&gt;&lt;li&gt;Spent the afternoon compiling &lt;a href=&quot;http://docs.oclint.org/en/dev/intro/build.html&quot;&gt;OCLint&lt;/a&gt; out of curiousity. Had no idea how long it would take, or how much it would increase the temperature in my office. After four hours of sitting in a simulated sauna, llvm finished building, but oclint wouldn’t build. Ran out of time to play with it. Something for next week.
&lt;/li&gt;&lt;li&gt;Seeding improvements from Kees to trinity.git
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;and now: three day weekend. \o/&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/24/daily-log-may-24th-2013/&quot;&gt;daily log May 24th 2013&lt;/a&gt; is a post from: &lt;a href=&quot;http://codemonkey.org.uk&quot;&gt;codemonkey.org.uk&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;yarpp-related-rss&quot;&gt;
&lt;p&gt;Related posts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/22/daily-log-may-22nd-2013/&quot; rel=&quot;bookmark&quot; title=&quot;daily log May 22nd 2013.&quot;&gt;daily log May 22nd 2013.&lt;/a&gt; &lt;small&gt;Going to try and continue yesterdays daily log format for...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/23/daily-log-may-23rd-2013/&quot; rel=&quot;bookmark&quot; title=&quot;daily log May 23rd 2013.&quot;&gt;daily log May 23rd 2013.&lt;/a&gt; &lt;small&gt;Continued chasing the xfs bug. Confirmed that with the pending...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/24/weekly-fedora-kernel-bug-statistics-may-24th-2013/&quot; rel=&quot;bookmark&quot; title=&quot;Weekly Fedora kernel bug statistics – May 24th 2013&quot;&gt;Weekly Fedora kernel bug statistics – May 24th 2013&lt;/a&gt; &lt;small&gt;  17 18 19 rawhide   Open: 276 380 104...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-24T23:20:13+00:00</dc:date>
</item>
<item rdf:about="http://groveronline.com/?p=393">
	<title>Andy Grover: Using qla2xxx with LIO on Fedora</title>
    <link>http://groveronline.com/2013/05/using-qla2xxx-with-lio-on-fedora/</link>
	<content:encoded>&lt;p&gt;In addition to turning your Fedora 18 box into an iSCSI target, LIO also supports other SCSI transport layers (‘fabrics’), such as Fibre Channel, with the qla2xxx fabric.&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The most crucial bit is to verify that the qla2xxx driver has initiator mode disabled — it should be operating in target mode only. You can check this with:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;cat /sys/module/qla2xxx/parameters/qlini_mode&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It should say ‘disabled’. If it doesn’t, create a file called /usr/lib/modprobe.d/qla2xxx.conf and put:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;options qla2xxx qlini_mode=disabled&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;in it. Then, run ‘dracut -f’ to rebuild your initrd, and reboot.&lt;/p&gt;
&lt;p&gt;Some of you may be wondering: why /usr/lib/modprobe.d instead of /etc/modprobe.d ? This is because qla2xxx is likely loaded from the kernel’s initial ramdisk (initrd), and dracut, the initrd building tool, omits “host-specific” settings in /etc/modprobe.d. While you’re mucking around, also make sure the firmware package for your qla device, such as ql2200-firmware or similar, is also installed.&lt;/p&gt;
&lt;p&gt;targetcli won’t let you create a qla2xxx fabric if qlini_mode is wrong. Once it lets you create the qla fabric, you can add luns to it and grant access permissions to acls exactly in the same manner as the other LIO fabrics.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-24T16:29:32+00:00</dc:date>
</item>
<item rdf:about="http://codemonkey.org.uk/?p=478">
	<title>Dave Jones: Weekly Fedora kernel bug statistics – May 24th 2013</title>
    <link>http://codemonkey.org.uk/2013/05/24/weekly-fedora-kernel-bug-statistics-may-24th-2013/</link>
	<content:encoded>&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;rawhide&lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open:&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;classification=Fedora&amp;amp;component=kernel&amp;amp;product=Fedora&amp;amp;query_format=advanced&amp;amp;version=17&amp;amp;order=bug_id&amp;amp;query_based_on=&quot;&gt;276&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;classification=Fedora&amp;amp;component=kernel&amp;amp;product=Fedora&amp;amp;query_format=advanced&amp;amp;version=18&amp;amp;order=bug_id&amp;amp;query_based_on=&quot;&gt;380&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;classification=Fedora&amp;amp;component=kernel&amp;amp;product=Fedora&amp;amp;query_format=advanced&amp;amp;version=19&amp;amp;order=bug_id&amp;amp;query_based_on=&quot;&gt;104&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;classification=Fedora&amp;amp;component=kernel&amp;amp;product=Fedora&amp;amp;query_format=advanced&amp;amp;version=rawhide&amp;amp;order=bug_id&amp;amp;query_based_on=&quot;&gt;66&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;(826)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opened since 2013-05-17&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?classification=Fedora&amp;amp;chfieldto=2013-05-24&amp;amp;chfield=[Bug%20creation]&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;bug_status=CLOSED&amp;amp;version=17&amp;amp;component=kernel&amp;amp;product=Fedora&quot;&gt;4&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?classification=Fedora&amp;amp;chfieldto=2013-05-24&amp;amp;chfield=[Bug%20creation]&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;bug_status=CLOSED&amp;amp;version=18&amp;amp;component=kernel&amp;amp;product=Fedora&quot;&gt;32&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?classification=Fedora&amp;amp;chfieldto=2013-05-24&amp;amp;chfield=[Bug%20creation]&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;bug_status=CLOSED&amp;amp;version=19&amp;amp;component=kernel&amp;amp;product=Fedora&quot;&gt;6&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?classification=Fedora&amp;amp;chfieldto=2013-05-24&amp;amp;chfield=[Bug%20creation]&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;bug_status=CLOSED&amp;amp;version=rawhide&amp;amp;component=kernel&amp;amp;product=Fedora&quot;&gt;3&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;(45)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Closed since 2013-05-17&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?chfieldto=2013-05-24&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=CLOSED&amp;amp;version=17&amp;amp;component=kernel&amp;amp;classification=Fedora&amp;amp;product=Fedora&amp;amp;order=short_desc%2Cbug_id&quot;&gt;3&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?chfieldto=2013-05-24&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=CLOSED&amp;amp;version=18&amp;amp;component=kernel&amp;amp;classification=Fedora&amp;amp;product=Fedora&amp;amp;order=short_desc%2Cbug_id&quot;&gt;11&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?chfieldto=2013-05-24&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=CLOSED&amp;amp;version=19&amp;amp;component=kernel&amp;amp;classification=Fedora&amp;amp;product=Fedora&amp;amp;order=short_desc%2Cbug_id&quot;&gt;4&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?chfieldto=2013-05-24&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=CLOSED&amp;amp;version=rawhide&amp;amp;component=kernel&amp;amp;classification=Fedora&amp;amp;product=Fedora&amp;amp;order=short_desc%2Cbug_id&quot;&gt;3&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;(21)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Changed since 2013-05-17&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?chfieldto=2013-05-24&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;version=17&amp;amp;component=kernel&amp;amp;classification=Fedora&amp;amp;product=Fedora&amp;amp;order=short_desc%2Cbug_id&quot;&gt;16&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?chfieldto=2013-05-24&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;version=18&amp;amp;component=kernel&amp;amp;classification=Fedora&amp;amp;product=Fedora&amp;amp;order=short_desc%2Cbug_id&quot;&gt;48&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?chfieldto=2013-05-24&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;version=19&amp;amp;component=kernel&amp;amp;classification=Fedora&amp;amp;product=Fedora&amp;amp;order=short_desc%2Cbug_id&quot;&gt;14&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;http://bugzilla.redhat.com/buglist.cgi?chfieldto=2013-05-24&amp;amp;query_format=advanced&amp;amp;chfieldfrom=2013-05-17&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=MODIFIED&amp;amp;bug_status=ON_DEV&amp;amp;bug_status=ON_QA&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=RELEASE_PENDING&amp;amp;bug_status=POST&amp;amp;version=rawhide&amp;amp;component=kernel&amp;amp;classification=Fedora&amp;amp;product=Fedora&amp;amp;order=short_desc%2Cbug_id&quot;&gt;5&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;(83)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/24/weekly-fedora-kernel-bug-statistics-may-24th-2013/&quot;&gt;Weekly Fedora kernel bug statistics – May 24th 2013&lt;/a&gt; is a post from: &lt;a href=&quot;http://codemonkey.org.uk&quot;&gt;codemonkey.org.uk&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;yarpp-related-rss&quot;&gt;
&lt;p&gt;Related posts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/03/08/weekly-fedora-kernel-bug-statistics-march-08-2013/&quot; rel=&quot;bookmark&quot; title=&quot;Weekly Fedora kernel bug statistics – March 08 2013&quot;&gt;Weekly Fedora kernel bug statistics – March 08 2013&lt;/a&gt; &lt;small&gt;  17 18 rawhide   Open: 453 406 241 (1100)...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/04/22/weekly-fedora-kernel-bug-statistics-april-19th-2013/&quot; rel=&quot;bookmark&quot; title=&quot;Weekly Fedora kernel bug statistics – April 19th 2013&quot;&gt;Weekly Fedora kernel bug statistics – April 19th 2013&lt;/a&gt; &lt;small&gt;I was a little distracted by local events last Friday,...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/03/29/monthly-fedora-kernel-bug-statistics-march-2013/&quot; rel=&quot;bookmark&quot; title=&quot;Monthly Fedora kernel bug statistics – March 2013&quot;&gt;Monthly Fedora kernel bug statistics – March 2013&lt;/a&gt; &lt;small&gt;I figured in addition to the weekly bug reports, I’m...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-24T16:10:15+00:00</dc:date>
</item>
<item rdf:about="tag:tirfa.com,2013-05-24:how-is-taskbot-different-from-autoqa.html">
	<title>Tim Flink: How is Taskbot Different from AutoQA?</title>
    <link>http://tirfa.com/how-is-taskbot-different-from-autoqa.html</link>
	<content:encoded>&lt;p&gt;I've done quite a bit of talking about how taskbot could be flexible but a lot
of it has been rather abstract and a more concrete example would be helpful.&lt;/p&gt;
&lt;div id=&quot;the-task&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;The Task&lt;/h2&gt;
&lt;p&gt;To step through this, I'm going to use one of the simpler tests from the existing
&lt;a href=&quot;https://fedoraproject.org/wiki/QA:Package_Update_Acceptance_Test_Plan&quot; class=&quot;reference external&quot;&gt;PUATP&lt;/a&gt; suite that is currently running in AutoQA: rpmlint.&lt;/p&gt;
&lt;p&gt;As described by the upstream project, &quot;rpmlint is a tool for checking common
errors in rpm packages.&quot;. It is rather straight-forward in terms of execution
and scheduling:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;rpmlint is run for every build done in koji&lt;ul&gt;
&lt;li&gt;it is run on &lt;strong&gt;only&lt;/strong&gt; one package at a time and is independent of other
updates/packages&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;rpmlint's results are the lines printed to stdout&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;There is a bit of complexity in which rpmlint warnings/errors constitute a
failure but for the sake of simplicity, I'm assuming the following for the sake
of discussion:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;strong&gt;PASS&lt;/strong&gt; - no errors or warnings from rpmlint&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WARN&lt;/strong&gt; - one or more warnings in the rpmlint output but &lt;em&gt;no&lt;/em&gt; errors&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FAIL&lt;/strong&gt; - one or more errors exist within the output from rpmlint&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;autoqa-execution-process&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;AutoQA Execution Process&lt;/h2&gt;
&lt;p&gt;AutoQA's execution process is currently as follows:&lt;/p&gt;
&lt;div id=&quot;scheduling&quot; class=&quot;section&quot;&gt;
&lt;h3&gt;Scheduling&lt;/h3&gt;
&lt;p&gt;A script is run through cron on the autoqa master server - this script looks for
any new builds in koji or updates in bodhi  since the last time it was run. If
there are new builds in koji which are queued for testing, the watcher script
creates an autotest job to run rpmlint on the rpms contained in that build.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;delegation&quot; class=&quot;section&quot;&gt;
&lt;h3&gt;Delegation&lt;/h3&gt;
&lt;p&gt;Once the rpmlint job has been scheduled in autotest, it will eventually be queued
for execution on one of the client machines (a mix of bare metal and VMs).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;execution&quot; class=&quot;section&quot;&gt;
&lt;h3&gt;Execution&lt;/h3&gt;
&lt;p&gt;The following is all executed and done on the test client but is coordinated by
the master.&lt;/p&gt;
&lt;div id=&quot;initialization&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Initialization&lt;/h4&gt;
&lt;p&gt;The client pulls in files from a specific place on the master - these files
contain&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;any tests not distributed with upstream autotest&lt;/li&gt;
&lt;li&gt;any libraries or executables that are needed for testing&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Once the workspace has been initialized, the arguments are read and the rpmlint
test (not the executable) is started.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;preparation&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Preparation&lt;/h4&gt;
&lt;p&gt;In order to run rpmlint, we need an rpm to run it against, so we download the
rpm from koji that corresponds to the envr passed in as an argument. The code
to do this is in the AutoQA library.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;id1&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Execution&lt;/h4&gt;
&lt;p&gt;The test executes rpmlint via subprocess, capturing the output and exit code from
the execution.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;analysis-and-reporting&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Analysis and Reporting&lt;/h4&gt;
&lt;p&gt;In the case of rpmlint, AutoQA doesn't do any reporting unless the package
maintainer has opted into receiving results via email. However, html logs are
generated for every test run.&lt;/p&gt;
&lt;p&gt;As this doesn't provide a great point for comparison, the options for reporting
in AutoQA are&lt;/p&gt;
&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Leave a comment on the relevant bodhi update (when scheduled against an
update instead of a koji build)&lt;/li&gt;
&lt;li&gt;Update or create an entry in &lt;a href=&quot;https://fedoraproject.org/wiki/ResultsDB&quot; class=&quot;reference external&quot;&gt;ResultsDB&lt;/a&gt; via XMLRPC&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Both of these operations use the AutoQA library downloaded from the master.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;cleanup&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Cleanup&lt;/h4&gt;
&lt;p&gt;The logs are shipped off to the autotest master before the test is complete and
the autotest master is notified that this client is ready for another test.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;taskbot-s-execution-process&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Taskbot's Execution Process&lt;/h2&gt;
&lt;p&gt;Taskbot is similar to AutoQA in how it approaches the test but there are some
important differences in a few of the details.&lt;/p&gt;
&lt;div id=&quot;id2&quot; class=&quot;section&quot;&gt;
&lt;h3&gt;Scheduling&lt;/h3&gt;
&lt;p&gt;When koji emits a message that a build has been completed, the rules engine
would submit a new task to the execution engine via its' restful interface with
the following contents:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;strong&gt;TASKNAME&lt;/strong&gt; : rpmlint&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ARGUMENTS&lt;/strong&gt;: build-to-test-1.2.3-4.fc99&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;id3&quot; class=&quot;section&quot;&gt;
&lt;h3&gt;Delegation&lt;/h3&gt;
&lt;p&gt;Once scheduled, the task execution engine would delegate the task to a buildslave
which does the actual work of the test.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;id4&quot; class=&quot;section&quot;&gt;
&lt;h3&gt;Execution&lt;/h3&gt;
&lt;p&gt;Once we get into execution, it becomes a little more difficult to describe
exactly what would happen in taskbot in general terms. By design, this part is
very flexible, allowing for multiple test runners or tasks which wouldn't
traditionally be defined as tests.&lt;/p&gt;
&lt;p&gt;What I have here is how I've started to implement rpmlint but it code isn't
finished and I suspect that things will change over time.&lt;/p&gt;
&lt;p&gt;The slave starts execution of the task, following a set of steps as defined by
the master:&lt;/p&gt;
&lt;div id=&quot;id5&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Initialization&lt;/h4&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Update the test libraries (equivalent to the AutoQA library) using yum or pip.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;The libraries needed for testing would be installed/updated at this time
but the process of changing these libraries would be independent of the
system as a whole.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Clone the 'rpmlint' task repository from a known central git server; similar to how
package building works&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Since we have control over this repository, we can safely assume that it
obeys a certain format with regard to the names and purposes of executable
files (python, bash, perl etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Run the 'INIT' executable in the cloned git repo to do other updating and
pre-test preparation.&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;In this case, we don't need to do anything as the rpmlint test is pretty simple&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;id6&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Preparation&lt;/h4&gt;
&lt;p&gt;Running the 'PREPARE' executable in the cloned git repository, the envr passed
in as an argument to this test would be used to lookup and download the matching
rpm from koji to ./rpms&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;id7&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Execution&lt;/h4&gt;
&lt;p&gt;Running the 'RUNTEST' executable, rpmlint would be run against all of the rpms
in ./rpms, keeping track of which output goes with which rpm. Output would be
saved in a known location, probably to disk as a semi-formatted text file&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;analysis&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Analysis&lt;/h4&gt;
&lt;p&gt;Running the 'ANALYSIS' executable, the output from execution would be read and
the result would be determined.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;reporting&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Reporting&lt;/h4&gt;
&lt;p&gt;Using the 'REPORT' executable, a comment would be made on the update and the
test result would be submitted to a &lt;a href=&quot;https://fedoraproject.org/wiki/ResultsDB&quot; class=&quot;reference external&quot;&gt;ResultsDB&lt;/a&gt;-like system using a RESTful
interface and json.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;id8&quot; class=&quot;section&quot;&gt;
&lt;h4&gt;Cleanup&lt;/h4&gt;
&lt;p&gt;Using the 'CLEANUP' executable, any downloaded rpms and intermediate files would
be purged from the system.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;differences&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Differences&lt;/h2&gt;
&lt;p&gt;To summarize what I see as the important differences between the two executions
as described above, we have a nifty table:&lt;/p&gt;
&lt;table border=&quot;1&quot; class=&quot;docutils&quot;&gt;
&lt;colgroup&gt;
&lt;col width=&quot;12%&quot; /&gt;
&lt;col width=&quot;35%&quot; /&gt;
&lt;col width=&quot;52%&quot; /&gt;
&lt;/colgroup&gt;
&lt;thead valign=&quot;bottom&quot;&gt;
&lt;tr&gt;&lt;th class=&quot;head&quot;&gt;Item&lt;/th&gt;
&lt;th class=&quot;head&quot;&gt;AutoQA&lt;/th&gt;
&lt;th class=&quot;head&quot;&gt;Taskbot&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody valign=&quot;top&quot;&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Core Library Updates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Updated on the master with a system update&lt;/td&gt;
&lt;td&gt;Updated via yum prior to test execution, completely independent of the system as a whole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Test Library Updates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Updated on the master with a system update&lt;/td&gt;
&lt;td&gt;Updated during initialization using any number of methods, independent of the system as a whole&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Test updates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Updated on the master with a system update&lt;/td&gt;
&lt;td&gt;Git head is pulled in at the start of test execution, git repo updates are 100% independent of the rest of the system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Non-Python Executables&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Can be done as a subprocess, currently no non-python support in AutoQA library&lt;/td&gt;
&lt;td&gt;Executables can be in any supported language as long as their results are compatible with taskbot&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Note that initial library support for Taskbot is likely to be python only. While
a main goal is to support the usage of many languages during tasks, limiting
initial library support is a way to keep the scope in check.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;conclusion&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope that a more concrete example helps to illustrate more of why I'm
proposing taskbot instead of just trying to incrementally improve AutoQA.&lt;/p&gt;
&lt;p&gt;Yes, I did gloss over some of the complexities and details and I know that there
are a few conceptual holes in what I'm proposing but keep in mind - it's not done
yet and it isn't final; the description is a &lt;strong&gt;proof of concept&lt;/strong&gt; so that we
can talk about more than abstract, un-implemented ideas.&lt;/p&gt;
&lt;p&gt;As usual, please send suggestions in the comments here or start/continue a thread
on &lt;a href=&quot;https://lists.fedoraproject.org/mailman/listinfo/qa-devel&quot; class=&quot;reference external&quot;&gt;qa-devel&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-24T15:36:00+00:00</dc:date>
</item>
<item rdf:about="tag:tirfa.com,2013-05-24:an-initial-idea-for-taskbot.html">
	<title>Tim Flink: An Initial Idea for Taskbot</title>
    <link>http://tirfa.com/an-initial-idea-for-taskbot.html</link>
	<content:encoded>&lt;p&gt;I've been talking about QA and test automation but haven't really gone into much
detail about what exactly I want to do. Hopefully, I've made a sufficiently strong
case for a task automation system vs. a strict test automation system already
but I'm open to other thoughts. Please keep in mind that most of this is
really early and there are still parts which still need to be planned out.&lt;/p&gt;
&lt;p&gt;If you think that all of this sounds a lot like AutoQA, you'd be right. From this
high level overview, a lot of this &lt;em&gt;does&lt;/em&gt; describe AutoQA - the major differences
are in the details of task execution and how tightly coupled all the compoents
are to eachother and to parts of the Fedora infrastructure.&lt;/p&gt;
&lt;div id=&quot;overview&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;The basic idea is modeled somewhat after continuous integration systems where
a scheduler listens for signals from fedmsg and schedules tasks based on the
content of those messages.&lt;/p&gt;
&lt;img src=&quot;http://tirfa.com/static/images/taskbot-overview.png&quot; alt=&quot;High level overview of taskbot&quot; class=&quot;align-center&quot; /&gt;
&lt;p&gt;Looks simple, right? Well, as in many cases - the devil is really in the details.
Any of those three boxes is a non-trivial project in itself&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;scheduler&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Scheduler&lt;/h2&gt;
&lt;p&gt;The scheduler, or rules engine, has a bunch of if-then rules that are run every
time an appropriate message from fedmsg is received. These rules can describe
situations like the following examples:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;If any package is submitted for testing, run rpmlint&lt;/li&gt;
&lt;li&gt;If any package is submitted for stable, run depcheck and upgradepath&lt;/li&gt;
&lt;li&gt;If any kernel package is built, run kernel tests on all supported arches&lt;/li&gt;
&lt;li&gt;If an anaconda update is pushed to testing, build a new test ISO&lt;/li&gt;
&lt;li&gt;If a test ISO is built, run the automated installation tests against it&lt;/li&gt;
&lt;li&gt;If a new fedup or fedup-dracut build is submitted for testing, run automated
upgrade tests on configurations X, Y and Z.&lt;/li&gt;
&lt;li&gt;If a package written in C is built, run static analysis against the new package&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;The possibilities are pretty much endless but I think that covers enough territory
to get a few ideas rolling.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;task-execution&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Task Execution&lt;/h2&gt;
&lt;p&gt;Task execution could be thought of as the center of taskbot. Once a task request
comes in from the scheduler, this component is responsible for properly setting
up and delegating the execution of said task.&lt;/p&gt;
&lt;p&gt;The process by which a task is executed would depend on the exact details of the
task but the general process would be:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol class=&quot;arabic&quot;&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Determine task type&lt;/p&gt;
&lt;p&gt;1a. Provision resources, if needed&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Direct the test client to clone the task's git repository&lt;/p&gt;
&lt;p&gt;2a. Run any preparation needed&lt;/p&gt;
&lt;p&gt;2b. Download any needed external files&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Direct the test client to run the task&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Report results to a results store (will be described in more detail later)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Run any needed cleanup or resource deallocation&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is a bit vague since I'm trying to encompass several divergent use cases with
the same description but I plan to describe the process in more detail with later
articles.&lt;/p&gt;
&lt;p&gt;The following execution paradigms would (eventually) be supported:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Test ISO generation&lt;/li&gt;
&lt;li&gt;Installation tests into a blank VM&lt;/li&gt;
&lt;li&gt;Cloud image spawning and testing&lt;/li&gt;
&lt;li&gt;Package specific tests (akin to rpmlint, upgradepath and the rest of the current
PUATP suite)&lt;/li&gt;
&lt;li&gt;Destructive testing that could leave the system under test in a non-usable or
unsafe state&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&quot;results-storage&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Results Storage&lt;/h2&gt;
&lt;p&gt;Result storage is purposely vague because it can cover a number of things from
the &lt;a href=&quot;https://fedoraproject.org/wiki/ResultsDB&quot; class=&quot;reference external&quot;&gt;ResultsDB&lt;/a&gt; which AutoQA is currently using to other result stores that hold
firehose data or something simple to hold the contents of a test ISO.&lt;/p&gt;
&lt;p&gt;In my mind, the important thing here is that results storage isn't limited to
one format or one backend. The task execution engine has its' own method for
storing the task result which is much less specialized and is likely independent
of the more specialized task's result.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;a-proof-of-concept-system&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;A Proof-of-Concept System&lt;/h2&gt;
&lt;p&gt;Instead of continuing to talk about taskbot in the completely abstract sense,
I've been working on a rough proof of concept system.&lt;/p&gt;
&lt;img src=&quot;http://tirfa.com/static/images/taskbot-poc-execution-overview.png&quot; alt=&quot;High level overview of taskbot's execution process&quot; class=&quot;align-center&quot; /&gt;
&lt;p&gt;This is somewhat a rehash of the earlier diagram but is more specific on how the
pieces work together as I've been implementing it so far. It isn't a representation
of where I want the system to be when it's done - just a decent representation
of what currently exists. Specifically, there is no support for the ephemeral task
clients that I mentioned earlier but I simple and more specific visual
representation of what currently exists would be useful for explanation.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;intitial-goals&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Intitial Goals&lt;/h2&gt;
&lt;p&gt;I've generally found that while some planning is required to have a project end
well, after a certain point the best way to find the limitations in something is
to implement a proof-of-concept system. With that in mind, I'm going to be
moving the proof-of-concept system I've started somewhere a bit more public than
running on my personal systems behind a firewall.&lt;/p&gt;
&lt;p&gt;What I'd like to eventually see in the proof-of-concept is the following:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Task triggering via fedmsg (working but rather hacky)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Multiple test types and examples of things which could fit into the types&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Basic package-level tests ( partially done but kind of hacky)&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;rpmlint is an example&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Tasks Requiring VM provisioning&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;basic install using &lt;a href=&quot;https://github.com/garretraziel/infinity&quot; class=&quot;reference external&quot;&gt;infinity&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Non-traditional tasks&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Test ISO builds&lt;/li&gt;
&lt;li&gt;Running the &lt;a href=&quot;https://github.com/davidmalcolm/gcc-python-plugin&quot; class=&quot;reference external&quot;&gt;gcc-python-plugin&lt;/a&gt;
against python packages with C extensions&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;One task per git repository, tasks cloned from repository @ run time (done)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Some form of results reporting ( about 65% done)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;This proof-of-concept system so far is built using &lt;a href=&quot;http://buildbot.net/&quot; class=&quot;reference external&quot;&gt;buildbot&lt;/a&gt;
as the task execution engine, some of the simpler tests from AutoQA, a simple
results storage mechanism and fedmsg-hub as the method for scheduling tests.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;next-steps&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Next Steps&lt;/h2&gt;
&lt;p&gt;I think that the next steps are a little bit more investigation and improving
the proof-of-concept system and some discussion about where all of this might go.&lt;/p&gt;
&lt;p&gt;With few exceptions, I see the implementation details as being relatively
flexible. In particular, I suspect that the choice of buildbot vs. autotest is
going to be interesting - both systems have their own advantages and disadvantages
and no matter what we choose, we'll need to start contributing code upstream.
Neither one is going to fulfill 100% of our needs out of the box but I've found
both upstream projects to be friendly and as long as we work with them as we
develop code, I imagine we would be able to upstream the changes which make sense.&lt;/p&gt;
&lt;p&gt;The choice isn't limited to just those two, beaker and (parts of) HTCondor have
been suggested as alternatives. I have my reasons for suspecting that neither
of those would be a good fit for taskbot but I'm happy to be wrong if I've
misunderstood something.&lt;/p&gt;
&lt;p&gt;I will write updates as I have them, feel free to comment here or on
&lt;a href=&quot;https://lists.fedoraproject.org/mailman/listinfo/qa-devel&quot; class=&quot;reference external&quot;&gt;qa-devel&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-24T15:34:00+00:00</dc:date>
</item>
<item rdf:about="tag:tirfa.com,2013-05-24:down-with-test-automation-long-live-task-automation.html">
	<title>Tim Flink: Down With Test Automation! Long Live Task Automation!</title>
    <link>http://tirfa.com/down-with-test-automation-long-live-task-automation.html</link>
	<content:encoded>&lt;p&gt;It seems like at least once or twice a year, there is a renewed call for more
automated testing or someone starts talking about some new form of automated
testing which we could do to make Fedora better. Every single time this comes up,
the response is along the lines of &quot;Yeah, that would be cool ... but AutoQA can't
do that because of X, Y and/or Z. If we had more resources, it'd get done faster
but we're hoping to get that real-soon-now © ...&quot;. I imagine that you all
are tired of hearing it, but I can pretty much guarantee you that we're even more
tired of &lt;em&gt;saying&lt;/em&gt; it.&lt;/p&gt;
&lt;p&gt;With that in mind, I've been thinking about how to go forward with AutoQA and
automated &quot;testing&quot; in Fedora. There has been &lt;a href=&quot;https://lists.fedorahosted.org/pipermail/autoqa-devel/2013-January/003488.html&quot; class=&quot;reference external&quot;&gt;a little bit of conversation around
requirements&lt;/a&gt;
, using &lt;a href=&quot;http://beaker-project.org/&quot; class=&quot;reference external&quot;&gt;beaker&lt;/a&gt; versus continuing to
use &lt;a href=&quot;http://autotest.github.io/&quot; class=&quot;reference external&quot;&gt;autotest&lt;/a&gt; but very little of that has actually
been productive - mostly talk.&lt;/p&gt;
&lt;p&gt;When I was at PyCon NA this year, I was talking to some other Fedora contributors
about a testing idea and three things happened:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol class=&quot;arabic simple&quot;&gt;
&lt;li&gt;I gave the usual &quot;AutoQA can't ...&quot; statement&lt;/li&gt;
&lt;li&gt;I said that it would be great to fix/replace AutoQA&lt;/li&gt;
&lt;li&gt;I asked what they were doing for the sprints as I hadn't figured out what I
would be contributing to yet.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;&quot;Why not take a stab at fixing AutoQA?&quot; - the question that pretty much defined
what I did at the sprints and have been working on since as time has allowed.&lt;/p&gt;
&lt;div id=&quot;what-needs-to-be-changed&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;What Needs to be Changed?&lt;/h2&gt;
&lt;p&gt;Previous automation efforts in Fedora have focused on an initial goal which we
call the &lt;a href=&quot;https://fedoraproject.org/wiki/QA:Package_Update_Acceptance_Test_Plan&quot; class=&quot;reference external&quot;&gt;Package Update Acceptance Test Plan (PUATP)&lt;/a&gt;.
The basic idea being that there should be automation support to make reasonable
assurances that a package isn't going to blow up and cause huge problems  once
it arrives in the stable repositories.&lt;/p&gt;
&lt;p&gt;Those tests are running reasonably well in AutoQA but we'd really like to start
running more kinds of tests:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Kernel tests&lt;/li&gt;
&lt;li&gt;Automated installation tests&lt;/li&gt;
&lt;li&gt;Cloud image sanity tests&lt;/li&gt;
&lt;li&gt;RHEL sourced tests (things that are currently run by Red Hat which would be
really useful for Fedora)&lt;/li&gt;
&lt;li&gt;Any number of other ideas which aren't mentioned here&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;In its current state, AutoQA isn't capable of running any of these things and
it's going to require a non-trivial amount of effort to really support them well.&lt;/p&gt;
&lt;p&gt;The problem is compounded by a few details in the current design of AutoQA&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;Tests have to be included in the main AutoQA package&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Test updates are a huge hassle since everything has to be updated at the
same time.&lt;/li&gt;
&lt;li&gt;Accepting test contributions from non-core devs is more problematic than
it should be&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class=&quot;first&quot;&gt;There is &lt;em&gt;very&lt;/em&gt; tight coupling between AutoQA tests, production Fedora
infrastructure (koji, bodhi etc.) and the test runner (autotest).&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Development environment setup is a huge pain and is not very well documented&lt;/li&gt;
&lt;li&gt;Testing anything is far more difficult than it should be. We've worked around
this a little bit by writing a fake bodhi provider but that has its own
set of problems.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;As I was going through the process of just figuring out what types of things
we would want to support, I started thinking about test image generation on
new anaconda builds, running automated installation smoke tests on those new
images and even other things that either don't fit into the traditional paradigm of
&quot;test automation&quot; or can't be done with the current iteration of AutoQA.&lt;/p&gt;
&lt;p&gt;Why limit ourselves to &quot;tests&quot; from the start? If QA meant &quot;Quality Assurance&quot;,
I can kind of see that but on the other hand, as &lt;a href=&quot;http://tirfa.com/feeds/content/rejecting-quality-assurance.rst&quot; class=&quot;reference external&quot;&gt;I've written about before&lt;/a&gt;, I reject the concept of &quot;Software
Quality &lt;strong&gt;Assurance&lt;/strong&gt;&quot;, especially in the context of Fedora QA.&lt;/p&gt;
&lt;p&gt;If we think of QA as &quot;Quality &lt;strong&gt;Assistance&lt;/strong&gt;&quot;, why limit ourselves to just working
on more traditional test automation? Why not work on things that help improve
the quality of Fedora even if that doesn't include things generally associated
with test automation.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;making-a-case-for-task-automation&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Making a Case for Task Automation&lt;/h2&gt;
&lt;p&gt;We could figure out how to shoehorn ephemeral test clients and beakerlib into
autotest or cloud instance creation and non-beaker tests into beaker without
using the full stack which beaker is designed for ... or we could focus on running
tasks and try to keep enough flexibility to let people run pretty much whatever
they can come up with.&lt;/p&gt;
&lt;p&gt;Am I suggesting that we do away with all automated testing or to burn the currently
existing AutoQA to the ground? No, I'm not - that would waste quite a bit of
effort. I'm not sure how much of the existing AutoQA codebase could be moved at
this point but I'd prefer to keep as much of it as possible.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;getting-started&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;I assume that I am not smart or experienced enough to anticipate every single
use case that Fedorans (developers or testers) could come up with and I'd probably
be a bit full of myself if I did pretend I was that smart. With AutoQA, we've
proven that we don't have enough human resources within the current AutoQA developers
to expand our automated testing very far - let's make something which is easy enough for
any developer or tester with scripting experience to use and flexible enough
to do any kind of quality task that they could come up with.&lt;/p&gt;
&lt;p&gt;Obviously, there is a cost-benefit trade-off with being too flexible but I think
we could come up with something which is a good enough balance between complexity
and flexibility so that it's actually used and useful.&lt;/p&gt;
&lt;p&gt;I spent quite a bit of time at PyCon and some time since then coming up with a
proof-of-concept system for what I'm calling &quot;Task Automation&quot; - an overall system
decouples task scheduling, task execution, result reporting and machine instance management
to the point where all the bits can work together but some parts (specifically
the tests and reporting) can operate standalone. For now, I'm calling the overall
system Taskbot.&lt;/p&gt;
&lt;p&gt;I have this proof-of-concept running on my own systems for now but I'm going to
be transitioning to publicly-viewable systems soon - I see little point in trying
to take this very far by myself, behind closed doors.&lt;/p&gt;
&lt;p&gt;Anyhow, this post is long enough already, so I'll start explaining the nitty-gritty
details of my vision for Taskbot and its components in another article :)&lt;/p&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-24T15:32:00+00:00</dc:date>
</item>
<item rdf:about="tag:tirfa.com,2013-05-24:rejecting-qa-as-quality-assurance.html">
	<title>Tim Flink: Rejecting QA as Quality Assurance</title>
    <link>http://tirfa.com/rejecting-qa-as-quality-assurance.html</link>
	<content:encoded>&lt;p&gt;This is something I've said a few times before but not so much in a formal sense.
It plays into some stuff I've been working on as of late and I figured it was
about time to write about it.&lt;/p&gt;
&lt;p&gt;As far as I know, the QA in Fedora QA is supposed to be short for &quot;Quality Assurance&quot;.
I completely reject the concept of &quot;Software Quality Assurance&quot;, especially in
the context of Fedora QA. The idea that we can somehow &lt;em&gt;assure&lt;/em&gt; users that
software is of a certain level of quality implies that we have &lt;strong&gt;control&lt;/strong&gt; over
the quality of that software. This implication fallacious at best and
irresponsible at worst.&lt;/p&gt;
&lt;div id=&quot;an-example&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;An Example&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: This is a completely contrived example, don't read too far into it or
take the example as what I may or may not think of Nouveau, X or Dell. This is
an extreme example that I have a &lt;em&gt;very&lt;/em&gt; hard time seeing actually happen. The
hyperbole is for &lt;strong&gt;illustrative purposes only&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Say we have a bug in nouveau that makes it impossible to install Fedora on 50% of all
Dell laptops with Nvidia graphics. If the Nouveau devs didn't think they could
fix the bug for 6-9 months or if they refused to fix the bug (say they thought it
was something in X and the X devs should fix it but the X devs claimed it was a
nouveau issue and we went into an eternal game of fingerpointing), what control
do I have as a tester? Block the release of Fedora and keep re-testing until a fix
magically falls out of the sky and makes everything better? Incessantly pester
the Nouveau and/or X devs until the bug gets fixed? Sit on my thumbs and cry
about it until &amp;lt;insert deity here&amp;gt; fixes the problem? No, I document the issue
as best I can, warn users about the problem and hope that the issue with foo
can either be worked around or fixed in the future.&lt;/p&gt;
&lt;p&gt;At some point, a decision about whether to release with the bug, rollback to an
earlier version which doesn't have the bug or any number of workaround which may
exist at that point. However, that decision isn't strictly a testing or a QA issue.&lt;/p&gt;
&lt;p&gt;The only position which could be thought of as &quot;Quality Assurance&quot; is the entity
which controls development resources (usually the developer(s) or the management
of said developer(s)). The developer is the only one who can fix the bug and
the entity which controls the developers' time decides whether not a specific
bug gets fixed and thus &quot;assures&quot; quality.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;holding-the-flashlight&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;Holding the Flashlight&lt;/h2&gt;
&lt;p&gt;I think of it along the lines of a testing motto : &lt;a href=&quot;http://www.exampler.com/testing-com/writings/another-motto.htm&quot; class=&quot;reference external&quot;&gt;&quot;We hold the flashlight&quot;&lt;/a&gt;. If the
software we're interested in is a house that is nice other than an unlit basement
full of bugs, the developers are the exterminators and the testers are
people who have flashlights.
The exterminators could wander around in the dark basement trying to get rid of
the bugs but without light, they're probably going to miss a bunch of bugs and
will spend quite a bit of time in places that don't really have bugs. The people
with flashlights could wander around the basement, trying to squish small bugs
with their shoes but you can't get rid of the really problematic infestations
that way and trying to squish all the bugs with only shoes will take forever,
if that's even possible.&lt;/p&gt;
&lt;p&gt;The best case scenario would be for the exterminators to team up with the
flashlight people so that the flashlight people find bugs and hold the
flashlight so that the exterminators can better see what they're doing and get
rid of more bugs. (Yes, I know the analogy isn't perfect - they almost never are
but that gets beyond the point I'm trying to make)&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;so-what-is-qa&quot; class=&quot;section&quot;&gt;
&lt;h2&gt;So, What is QA?&lt;/h2&gt;
&lt;p&gt;So if testers can't do &quot;Quality Assurance&quot;, what is QA? I think of the QA in
Fedora QA as being &quot;Quality Assistance&quot;. Our job is to &quot;hold the flashlight&quot; and
work towards making Fedora better. Does that mean that we're somehow lesser beings
because we can't &quot;assure&quot; quality? No, not in the least - it's just a better
description of what we, as testers, &lt;strong&gt;can&lt;/strong&gt; do and how we can make Fedora better.&lt;/p&gt;
&lt;p&gt;To take this a bit farther, I don't think that &quot;Quality Assistance&quot; is limited
to just &quot;testing&quot; or running through validation matrices. I'm not saying that
we should start trying to do everything, just that it might make sense to think
a little more &quot;outside the box&quot; (please excuse the buzzword) for things that may not
traditionally be within the realm of testing but could help improve the quality
of Fedora.&lt;/p&gt;
&lt;p&gt;In my mind, we're already doing this for the most part - look at the blocker
tracking app and the whole blocker bug process. How many other &quot;testing&quot;
organizations participate in and to a certain extent drive a process which more
traditionally falls under the responsibility of project or program management?&lt;/p&gt;
&lt;p&gt;Regardless of how we define QA or testing, the job is still the same: help make
Fedora better.&lt;/p&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-24T15:30:00+00:00</dc:date>
</item>
<item rdf:about="http://www.alexhudson.com/?p=510">
	<title>Alex Hudson: packaging a virtualenv: really not relocatable</title>
    <link>http://www.alexhudson.com/2013/05/24/packaging-a-virtualenv-really-not-relocatable/</link>
	<content:encoded>&lt;p style=&quot;padding-left: 30px; text-align: right;&quot;&gt;My irregular readers will notice I haven’t blogged in ages. For the most part, I’ve been putting that effort into writing a book – more about this next week – hopefully back to normal service now though.&lt;/p&gt;
&lt;p&gt;Recently I’ve been trying to bring an app running on a somewhat-old Python stack slightly more up-to-date. When this app was developed, the state of the art in terms of best practice was to use operating system packaging – RPM, in this case – as the means by which the application and its various attendant libraries would be deployed. This is a relatively rare mode of deployment even though it works fantastically well, because many developers are not happy maintaining the packaging-level skills required to maintain the system. From what I read the Mozilla systems administrators deploy their applications using this system.&lt;/p&gt;
&lt;p&gt;For various reasons, I needed to bring up an updated stack pretty quickly, and spending the time updating the various package specifications wasn’t really an option. It didn’t need to be production rock-solid, but it needed to be deployable on our current infrastructure. The approach that I took was to build a packaged virtualenv Python environment: I’ve read online about other people who had tried it to relative success, although there are not many particularly explicit guides. So, I thought I would share my experiences.&lt;/p&gt;
&lt;p&gt;The TL;DR version of this is that it was actually a relatively successful experiment: relying on pip to grab the various dependencies of the application meant that I could reliably build a strongly-versioned environment, and packaging the entire environment as a single unit reduced the amount of devops noodling. There is a significant downside: it’s a pretty severe mis-use of virtualenv, and it requires some relatively decent understanding of the operating system to get past the various issues.&lt;/p&gt;
&lt;h2&gt;Developing the package&lt;/h2&gt;
&lt;p&gt;As I have a Fedora background, I’m not really happy slapping together packages in hacky ways. One of the things I’m definitely not happy doing is building stuff as root: it hides errors, and there’s pretty much no good reason to do anything as root these days.&lt;/p&gt;
&lt;p&gt;In order to build a virtualenv you have to specify the directory in which it gets built, and without additional hacks that’s not going to be the directory to which it installs. So, the “no root build” thing immediately implies making the virtualenv relocatable.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.virtualenv.org/en/latest/&quot; target=&quot;_blank&quot; title=&quot;virtualenv homepage&quot;&gt;web page for virtualenv&lt;/a&gt; currently has this sage warning:&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;“The &lt;tt&gt;--relocatable&lt;/tt&gt; option currently has a number of issues, and is not guaranteed to work in all circumstances. It is possible that the option will be deprecated in a future version of &lt;tt&gt;virtualenv&lt;/tt&gt;.”&lt;/p&gt;
&lt;p&gt;Wise words indeed. There are a tonne of problems moving a virtualenv. Encoding the file paths directly into files is an obvious problem, and virtualenv makes a valiant attempt at fixing up things like executable shebangs. It doesn’t catch everything, so some stuff has to be rewritten manually (by which I mean, as part of the RPM build process – obviously not doing it by hand).&lt;/p&gt;
&lt;p&gt;Worse still, it actively mangles files. Consider one of pillow’s binaries, whose opening lines become:&lt;/p&gt;
&lt;pre&gt;#!/usr/bin/env python2.7

import os; activate_this=os.path.join(os.path.dirname(⏎
os.path.realpath(__file__)), 'activate_this.py');⏎
execfile(activate_this, dict(__file__=activate_this));⏎
del os, activate_this

from __future__ import print_function&lt;/pre&gt;
&lt;p&gt;Unfortunately this is just syntactically invalid python – future imports have to come first. Again, it’s fixable, but it’s manual clean-up work post-facto.&lt;/p&gt;
&lt;h2&gt;What to do about native libraries&lt;/h2&gt;
&lt;p&gt;Attempting to use python libraries having native portions, be it bindings or otherwise, is also an interesting problem. To begin with, you have to assume a couple of things: that native code will end up in the package, and not all of it will be cleanly built. The obvious example of both those rules is that the system binary python is copied in.&lt;/p&gt;
&lt;p&gt;This causes problems all over the shop. RPM will complain, for example, that the checksum of the binaries don’t match what it was expecting: this is because it reads the checksum from the binary directly rather than calculate it at package time, and prelink actually alters the binary contents (this happens after the RPM content is installed, but RPM ignores those changes for the purposes of its package verification).&lt;/p&gt;
&lt;p&gt;Another example of native content not playing well with being packaged is that binaries will quite often have an rpath encoded into them. This is used when installing into non-standard locations, so that libraries can be easily found without having to add each custom location into the link loader search path. However, RPM rightly objects to them. It’s possible to override RPM’s checks, but that’s pretty naive. Keeping rpaths means bizarre bugs turn up when the paths actually exist (e.g., installing the environment package on the development machine building the package – which is quite plausible, given the environment package may end up being a build-time dependency of another).&lt;/p&gt;
&lt;p&gt;Thankfully, binaries can usually be adjusted after the fact for both these things; it’s possible to remove the rpaths encoded into a binary, and undo the changes prelink.&lt;/p&gt;
&lt;p&gt;In the end, I actually made a slightly hacky choice here too: I decided that the virtualenv would allow system packages. This was the old default, but is no longer because it stops the built environments being essentially self-contained. This allowed me to build certain parts of the python stack as regular RPMs (for example, the MySQL connector library) and have that be available within the virtualenv. This is only possible if there is going to be one version of python available on the system (unless you build a separate stack on a separate path – always possible), and takes away many of the binary nasties, since the binary compilation process is then under the control of RPM (which tends to set different compiler flags and other things).&lt;/p&gt;
&lt;p&gt;The obvious downside to doing that is that system packages are already fulfilled when you come to build the virtualenv, meaning that the virtualenv would not be complete. If that’s the intention that’s ok, but that’s not always what’s wanted. I resorted to another hack: building the virtualenv without system packages, and then removing the no-global-site-packages flag manually. This means you have to feed pip a subset of the real requirements list, leaving out those things that would be installed globally, but that seemed to work out reasonably well for me.&lt;/p&gt;
&lt;p&gt;The rough scripts that I used, then, were these. First, the spec file for the environment itself:&lt;/p&gt;
&lt;pre&gt;%define        ENVNAME  whatever
Source:        $RPM_SOURCE_DIR/pyenv-%{ENVNAME}.tgz
BuildRoot:     %{_tmppath}/%{buildprefix}-buildroot
Provides:      %{name}
Requires:      /usr/bin/python2.7
BuildRequires: chrpath prelink

%description
A packaged virtualenv.

%prep
%setup -q -n %{name}

%build
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{prefix}
mv $RPM_BUILD_DIR/%{name}/* $RPM_BUILD_ROOT%{prefix}

# remove some things
rm -f $RPM_BUILD_ROOT/%{prefix}/*.spec

%install
# undo prelinking
find $RPM_BUILD_ROOT/opt/pyenv/%{ENVNAME}/bin/ -type f -perm /u+x,g+x -exec /usr/sbin/prelink -u {} \;
# remove rpath from build
chrpath -d $RPM_BUILD_ROOT/opt/pyenv/%{ENVNAME}/bin/uwsgi
# re-point the lib64 symlink - not needed on newer virtualenv
rm $RPM_BUILD_ROOT/opt/pyenv/%{ENVNAME}/lib64
ln -sf /opt/pyenv/%{ENVNAME}/lib $RPM_BUILD_ROOT/opt/pyenv/%{ENVNAME}/lib64

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root)
%{prefix}opt/pyenv/%{ENVNAME}&lt;/pre&gt;
&lt;p&gt;(Standard files like name and version are missing – using the default spec skeleton fills in the missing bits). It’s not totally obvious from this, but I actually ended up building the virtualenv first and using that effectively as the source package:&lt;/p&gt;
&lt;pre&gt;virtualenv --distribute $(VENV_PATH)
. $(VENV_PATH)/bin/activate &amp;amp;&amp;amp; pip install -r requirements/production.txt
virtualenv --relocatable $(VENV_PATH)
find $(VENV_PATH) -name \*py[co] -exec rm {} \;
find $(VENV_PATH) -name no-global-site-packages.txt -exec rm {} \;
sed -i &quot;s|`readlink -f $(VENV_ROOT)`||g&quot; $(VENV_PATH)/bin/*
cp ./conf/pyenv-$(VENV_NAME).spec $(VENV_ROOT)
tar -C ./build/ -cz pyenv-$(VENV_NAME) &amp;gt; $(VENV_ROOT).tgz
rm -rf $(VENV_ROOT)&lt;/pre&gt;
&lt;h2&gt; Improving on this idea&lt;/h2&gt;
&lt;p&gt;There’s a lot to like about this kind of system. I’ve ended up at a point where I have a somewhat bare-bones system python packaged, with a few extras, and then some almost-complete virtualenv environments alongside to provide the bulk of dependencies. The various system and web applications are packaged depending on both the environment and the run-time. The environments tend not to change particularly quickly, so although they’re large RPMs they’re rebuilt infrequently. I consider it a better solution than, say, using a chef/puppet or other scripted system to create an environment on production servers, largely because it means all the development tools stay on the build systems, and you can rely on the package system to ensure the thing has been properly deployed.&lt;/p&gt;
&lt;p&gt;However, it’s still a long, long way from being perfect. There are a few too many hacks in the process for me to be really happy with it, although most of those are largely unavoidable one way or another.&lt;/p&gt;
&lt;p&gt;I also don’t like building the environment as a tarball first. An improvement would be to move pretty much everything into the RPM specfile, and literally just have the application to be deployed (or, more specifically, its requirements list) as the source code. I investigated this briefly and to be honest, the RPM environment doesn’t play wonderfully with the stuff virtualenv does, but again these are probably all surmountable problems. It would then impose the more standard CFLAGS et al from the RPM environment, but I don’t know that it would end up removing too many of the other hacks.&lt;/p&gt;
&lt;h2&gt;The future&lt;/h2&gt;
&lt;p&gt;I’m not going to make any claims about this being a “one true way” or some such – it clearly isn’t, and for me, the native RPM approach is still measurably better. Yes, it is slightly more maintenance, but for the most part that’s just the cost of doing things right.&lt;/p&gt;
&lt;p&gt;What is interesting is that this kind of approach seems to be the way a number of other systems are going. virtualenv has been so successful that it’s now effectively &lt;a href=&quot;http://www.python.org/dev/peps/pep-0405/&quot; target=&quot;_blank&quot; title=&quot;PEP 0405 - Python virtual environments&quot;&gt;a standard piece of python&lt;/a&gt;, and rightly so – it’s an incredible tool. Notably, pyenv (the new tool) does not have the relocatable option available.&lt;/p&gt;
&lt;p&gt;I’m slightly excited about the &lt;a href=&quot;http://www.docker.io/&quot; target=&quot;_blank&quot; title=&quot;DockerIO containers&quot;&gt;docker.io “container engine&lt;/a&gt;” system as well. I haven’t actually tried this yet, so won’t speak about it in too concrete terms, but my understanding is that a container is basically a filesystem that can be overlaid onto a system image in a jailed environment (BSD readers should note I’m using “jail” in the general sense of the word – sorry!). It should be noted that systemd has &lt;a href=&quot;http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html&quot; target=&quot;_blank&quot; title=&quot;systemd nspawn&quot;&gt;very similar capability in nspawn&lt;/a&gt; too, albeit less specialist. Building a container as opposed to an RPM is slightly less satisfying: being able to quickly rebuild small select portions of a system is great for agile development, and having to spin large chunks of data to deploy into development is less ideal, but it may well be the benefits outweigh the costs.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-24T15:20:50+00:00</dc:date>
</item>
<item rdf:about="http://liquidat.wordpress.com/?p=2354">
	<title>Roland Wolters: Howto: Managing dotfiles with dfm</title>
    <link>http://liquidat.wordpress.com/2013/05/24/howto-managing-dotfiles-with-dfm/</link>
	<content:encoded>&lt;p&gt;&lt;img src=&quot;http://liquidat.files.wordpress.com/2013/02/920839987_135ba34fff-e1361203648365.jpg?w=780&quot; alt=&quot;920839987_135ba34fff&quot; class=&quot;alignright size-full wp-image-2107&quot; /&gt;&lt;em&gt;Most system administrators have a set of personalized dotfiles like .vimrc and .bashrc. Taking these files with you from host to host and keeping them up2date everywhere can be a quite wearisome task. There are various tools to ease the pain, and I like to shed some light on one of them: dfm – the dotfile manager.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;My background&lt;/h2&gt;
&lt;p&gt;On my machines I usually keep a set of personalized dotfiles which I don’t want to miss on any other server I have to administrate:&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;.screenrc
.bashrc
.inputrc
.vimrc
.vim/colors/jellybeans.vim
.vim/colors/desert256.vim
&lt;/pre&gt;
&lt;p&gt;I need these files on all machines which I regularly work on – and since there are quite some customer machines I have access to regularly I wrote my own, git backed Python script years ago to keep these files synced and up2date on each machine. While it was fun to write the script, I always knew that it did not cover all my use cases regarding dotfiles, and it was not really flexible in terms of complex directory structures and so on. Also, I knew there must be other people with the same problem out there – and thus I was sure better solutions already existed.&lt;/p&gt;
&lt;p&gt;And boy, there are so many of them!&lt;/p&gt;
&lt;h2&gt;Some interesting solutions for dotfile management&lt;/h2&gt;
&lt;p&gt;Many people have looked at this problem before – and solved it in their own ways. Most often the basic principle is that the files are stored and tracked via git in a hidden directory, and the tool of your choise manages symlinks between the files in the store and in &lt;code&gt;$HOME&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For example, a very interesting idea is to &lt;a href=&quot;http://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html&quot;&gt;use GNU Stow to manage dotfiles&lt;/a&gt;. It tracks the necessary files in subdirectories and of course links the files from there to the ‘real’ places in $HOME. I like reusing existing tools, so the idea of using GNU Stow appealed immediately. Also, the ‘packages’ or ‘group’ support it offers is tempting. Unfortunately, on most systems GNU Stow is not installed by default, and I cannot install new software on customer machines.&lt;/p&gt;
&lt;p&gt;The problem of necessary software installation is also relevant for another often mentioned solution: &lt;a href=&quot;https://github.com/technicalpickles/homesick&quot;&gt;Homesick&lt;/a&gt;. Homesick is Ruby based, and works similar to the GNU Stow solution mentioned above: files are stored in a hidden subdirectory, tracked with git, and linked in &lt;code&gt;$HOME&lt;/code&gt;. The main feature here is that it can keep the configuration files in various git repositories, called ‘castles’, so you can integrate the work of projects like &lt;a href=&quot;https://github.com/robbyrussell/oh-my-zsh&quot;&gt;oh-my-zsh&lt;/a&gt;.&lt;br /&gt;
While Homesick does offer quite some features, it is Ruby based – and I cannot expect a working Ruby environment on each system, so it is out of question. I can go with Perl or Python, but that’s about it.&lt;/p&gt;
&lt;p&gt;Other people had the same Ruby problem and created &lt;a href=&quot;https://github.com/andsens/homeshick&quot;&gt;Homeshick&lt;/a&gt; – a Homesick clone spelled with an additional ‘h’ and besides written in Bash. It is quite straight forward and offers all necessary features like listing and tracking various git repositories as source for dotfiles, linking the actual dotfiles to your home, and so on. This one is almost my favorite! I wouldn’t be surprised if it is the favorite for most of the users out there.&lt;/p&gt;
&lt;p&gt;But Homeshick is only almost my favorite – meet &lt;a href=&quot;https://github.com/justone/dfm&quot;&gt;dfm – a Utility to Manage Dotfiles&lt;/a&gt;! It is written in Perl and mainly does the same as mentioned above, even minus the support for more than one repository. But on the plus side it has the capability of ensuring file rights via chmod. I haven’t seen that in any other solution. Additionally it supports arbitrary scripts executed during the update process for example for host specific commands. And last but not least, using a three letter program feels, somehow, right &lt;img src=&quot;http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;h2&gt;Starting with dfm&lt;/h2&gt;
&lt;p&gt;So, first of course you have to get dfm. If you are hosting your dotfiles on github anyway, just &lt;a href=&quot;https://github.com/justone/dotfiles&quot;&gt;fork the dfm starter repo&lt;/a&gt;  and clone it. Otherwise, if you later want to host it yourself, clone the main dfm repo and change the remote URL. My choice was the second way:&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;$ git clone git@github.com:justone/dotfiles.git .dotfiles
Cloning into '.dotfiles'...
remote: Counting objects: 3212, done.
remote: Compressing objects: 100% (1531/1531), done.
remote: Total 3212 (delta 1413), reused 3096 (delta 1397)
Receiving objects: 100% (3212/3212), 4.22 MiB | 202 KiB/s, done.
Resolving deltas: 100% (1413/1413), done.
&lt;/pre&gt;
&lt;p&gt;Next I configured the just cloned repository to use my own URL since my dotfiles are not on github:&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;$ cd .dotfiles/
$ git remote -v
origin  git@github.com:justone/dotfiles.git (fetch)
origin  git@github.com:justone/dotfiles.git (push)
$ git remote set-url origin git@git.example.net:dotfiles
$ git push origin master
Counting objects: 402, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (139/139), done.
Writing objects: 100% (402/402), 58.03 KiB, done.
Total 402 (delta 207), reused 389 (delta 195)
To git@git.example.net:dotfiles
 * [new branch]      master -&amp;gt; master
&lt;/pre&gt;
&lt;p&gt;You now have the repository up and ready. So let’s install dfm as a tool available in &lt;code&gt;$PATH&lt;/code&gt;, meaning creating a symlink between &lt;code&gt;~/bin&lt;/code&gt; and &lt;code&gt;~/.dotfiles/bin&lt;/code&gt; and also extending the &lt;code&gt;$PATH&lt;/code&gt; variable in &lt;code&gt;.bashrc.load&lt;/code&gt;, which is added to &lt;code&gt;.bashrc&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;$ ./.dotfiles/bin/dfm
INFO: Installing dotfiles...
INFO:   Symlinking bin (.dotfiles/bin).
INFO:   Symlinking .bashrc.load (.dotfiles/.bashrc.load).
INFO: Appending loader to .bashrc
&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;.bashrc&lt;/code&gt; is hardly modified:&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;$ tail -n 1 .bashrc
. $HOME/.bashrc.load
&lt;/pre&gt;
&lt;p&gt;As a side node, I am not sure if I really want to drop all my customizations on the bashrc loader, but the &lt;a href=&quot;https://github.com/justone/dotfiles/wiki/Questions-and-Answers&quot;&gt;reasoning behind that move&lt;/a&gt; from the dfm author is rationale:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
Why .bashrc.load instead of .bashrc?&lt;/p&gt;
&lt;p&gt;Each OS or distribution generally has its own way of populating a default .bashrc in each new user’s home directory. This file works with the rest of the OS to load in special things like bash completion scripts or aliases. The idea behind using .bashrc.load is that dotfiles should add new things to a system rather than overwriting built-in funcitonality.&lt;/p&gt;
&lt;p&gt;For instance, if a system sources bash completion files for you, and your dotfiles overwrites the system-provided .bashrc, then you would have to replicate that functionality on your own.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;But no matter if you agree with it or not, the next step is to add further files to your dfm repository, which is quite easy because dfm comes along with an import function:&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;$ dfm import .vimrc
INFO: Importing .vimrc from /home/liquidat into /home/liquidat/.dotfiles
INFO:   Symlinking .vimrc (.dotfiles/.vimrc).
INFO: Committing with message 'importing .vimrc'
[master d7de67a] importing .vimrc
 1 file changed, 29 insertions(+)
 create mode 100644 .vimrc
&lt;/pre&gt;
&lt;p&gt;The usage is pretty straightforward, and supports directories as well:&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;$ dfm import .vim
INFO: Importing .vim from /home/liquidat into /home/liquidat/.dotfiles
INFO:   Symlinking .vim (.dotfiles/.vim).
INFO: Committing with message 'importing .vim'
[master e9bd60a] importing .vim
 3 files changed, 875 insertions(+)
 create mode 100644 .vim/colors/desert256.vim
 create mode 100644 .vim/colors/jellybeans.vim
&lt;/pre&gt;
&lt;h2&gt;Using dfm on a new system&lt;/h2&gt;
&lt;p&gt;Using dfm on a new system is straightforward as well: clone the repo, invocate dfm, and you are done:&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;$ git clone git@git.example.com:dotfiles .dotfiles
Cloning into '.dotfiles'...
remote: Counting objects: 418, done.
remote: Compressing objects: 100% (142/142), done.
remote: Total 418 (delta 211), reused 401 (delta 207)
Receiving objects: 100% (418/418), 66.83 KiB, done.
Resolving deltas: 100% (211/211), done.
$ ./.dotfiles/bin/dfm
INFO: Installing dotfiles...
INFO:   Backing up .vimrc.
INFO:   Symlinking .vimrc (.dotfiles/.vimrc).
INFO:   Backing up bin.
INFO:   Symlinking bin (.dotfiles/bin).
INFO:   Symlinking .bashrc.load (.dotfiles/.bashrc.load).
INFO:   Backing up .inputrc.
INFO:   Symlinking .inputrc (.dotfiles/.inputrc).
INFO:   Backing up .vim.
INFO:   Symlinking .vim (.dotfiles/.vim).
INFO: Appending loader to .bashrc
&lt;/pre&gt;
&lt;p&gt;As you see quite some files are backed up, that just means they are moved to &lt;code&gt;.backup&lt;/code&gt;, so in worst case you know where to look.&lt;/p&gt;
&lt;p&gt;Now lets see what happens when you change something.&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;$ cd ~/bin
$ ln -s /usr/bin/gnome-terminal gt
$ dfm add bin/gt
$ dfm commit -m &quot;Added gt symlink for gnome-terminal.&quot;
[master 441c067] Added gt symlink for gnome-terminal.
 1 file changed, 1 insertion(+)
 create mode 120000 bin/gt
$ dfm push
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 363 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
To git@sinoda:dotfiles
   b28dc11..441c067  master -&amp;gt; master
&lt;/pre&gt;
&lt;p&gt;As you see, dfm supports git pass through: git commands are directly handed over to git. The changes where added to the git repository, and the repository was pushed to the remote URL.&lt;/p&gt;
&lt;p&gt;So, to get the changes onto the other system you just have to ask dfm to update the files via &lt;code&gt;dfm umi&lt;/code&gt;. In this case I called it after I made changes to .screenrc:&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;$ dfm umi
[...]
INFO: re-installing dotfiles
INFO: Installing dotfiles...
INFO:   Symlinking .screenrc (.dotfiles/.screenrc).
&lt;/pre&gt;
&lt;h2&gt;dfm special features&lt;/h2&gt;
&lt;p&gt;As mentioned above, the strongest feature of dfm is to be able to ensure file system rights and to start scripts after an update. The first option comes in handy when you are sharing files in your ssh config directory. The second is useful whenever you have to alter files or do anything based for example on host names. Imagine that you have various build machines to build rpm files, but you have to use different packages names on each build environment (think of customer specific e-mail addresses here).&lt;/p&gt;
&lt;p&gt;It should be possible to create a script that would fill in the necessary details in the rpmmacros file based on IP or hostname. I haven’t given that a try, but it should be worth it… &lt;/p&gt;
&lt;h2&gt;Keeping dfm up2date&lt;/h2&gt;
&lt;p&gt;Last but not least, it is of course desirable to keep dfm itself up2date. The dfm wiki &lt;a href=&quot;https://github.com/justone/dotfiles/wiki/Cookbook&quot;&gt;proposes the following workflow&lt;/a&gt; for that:&lt;/p&gt;
&lt;pre class=&quot;brush: plain; title: ; notranslate&quot;&gt;$ dfm remote add upstream git://github.com/justone/dotfiles.git
$ dfm checkout master
$ dfm fetch upstream 
$ dfm merge upstream/master
&lt;/pre&gt;
&lt;p&gt;It is a pretty neat way, using git tools as they should be used, and is still easy enough to handle.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;So, summarizing I can say dfm offers a quite neat and easily understandable solution for managing dotfiles while not relying on languages or tools you probably cannot install on the systems you are working on. However, Homeshick comes in as a close second, and I might give that one a try at some other point in the future. In the end, both solutions are much better than self written solutions – or no solution at all.&lt;/p&gt;
&lt;br /&gt;Filed under: &lt;a href=&quot;http://liquidat.wordpress.com/category/debian/&quot;&gt;Debian&lt;/a&gt;, &lt;a href=&quot;http://liquidat.wordpress.com/category/fedora/&quot;&gt;Fedora&lt;/a&gt;, &lt;a href=&quot;http://liquidat.wordpress.com/category/howto/&quot;&gt;HowTo&lt;/a&gt;, &lt;a href=&quot;http://liquidat.wordpress.com/category/linux/&quot;&gt;Linux&lt;/a&gt;, &lt;a href=&quot;http://liquidat.wordpress.com/category/shell/&quot;&gt;Shell&lt;/a&gt;, &lt;a href=&quot;http://liquidat.wordpress.com/category/technology/&quot;&gt;Technology&lt;/a&gt;, &lt;a href=&quot;http://liquidat.wordpress.com/category/thoughts/&quot;&gt;Thoughts&lt;/a&gt;, &lt;a href=&quot;http://liquidat.wordpress.com/category/ubuntu/&quot;&gt;Ubuntu&lt;/a&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/liquidat.wordpress.com/2354/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/liquidat.wordpress.com/2354/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=liquidat.wordpress.com&amp;amp;blog=199237&amp;amp;post=2354&amp;amp;subd=liquidat&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-24T14:55:13+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=4384">
	<title>Richard W.M. Jones: libguestfs packages for Ubuntu</title>
    <link>http://rwmj.wordpress.com/2013/05/24/libguestfs-packages-for-ubuntu/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://libguestfs.org/download/binaries/ubuntu1210-packages/&quot;&gt;This directory&lt;/a&gt; contains experimental up to date libguestfs packages for Ubuntu 12.10.  You should be able to install them by adding this line to &lt;code&gt;/etc/apt/sources.list&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;deb http://libguestfs.org/download/binaries/ubuntu1210-packages/ /
&lt;/pre&gt;
&lt;p&gt;You will need to also:&lt;/p&gt;
&lt;pre&gt;sudo chmod 0644 /boot/vmlinuz-*
&lt;/pre&gt;
&lt;p&gt;because of &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725&quot;&gt;this Ubuntu bug&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let me know if the packages work.  Also what other versions of Ubuntu I should be building them for.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/4384/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/4384/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;amp;blog=6840703&amp;amp;post=4384&amp;amp;subd=rwmj&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-24T13:33:33+00:00</dc:date>
</item>
<item rdf:about="http://matej.ceplovi.cz/blog/?p=452">
	<title>Matěj Cepl: Firefox OS phone … first observations</title>
    <link>http://matej.ceplovi.cz/blog/2013/05/firefox-os-phone-first-observations/</link>
	<content:encoded>&lt;p&gt;Yes, even I’ve got my Geeksphone Peak, and yes I like it. I am sure, that I have collectible item in my hands … it will be either that historical model which changed the world to the open standards on mobile, or maybe it will be in one of those &lt;a href=&quot;http://www.maclife.com/article/top_10_apple_flops&quot;&gt;“10 biggest flops”&lt;/a&gt; articles (yes, I would love to have Lisa!). I am not sure about this mass success, but I feel like I may eventually like it for myself (which is actually all I care for; after all, I am a happy user of Linux). The first news is very good news: it works perfectly as a phone, which means I use it as my day to day phone (well, music player doesn't switch off on picking up the phone). Also, camera Just Works™, it is possible even lightly edit the image on the phone (a feat which the standard Android camera was not able to accomplish, BTW). Now the problematic parts.&lt;/p&gt;
&lt;p&gt;Calendar just doesn't work for me. It works with CalDAV on Firefox OS Simulator 3.0, but not &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=874946&quot;&gt;with my phone&lt;/a&gt;. Sad but expected (I don’t know why Calendars get so bad treatment by most software providers, not mentioning missing Tasks). Also, originally, Mail &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=869711&quot;&gt;didn’t work for me&lt;/a&gt;, but I was able to get it working more or less with some later images from Geeksphone (still from time to time the app doesn't load the body of the mail ever). Which leads to another problem: there are no OTA updates yet. I am willing to use Debian/unstable or Fedora/Rawhide, but I really need to be sure, that all those bugs which I hit will be soon fixed and delivered to me. Getting developing-quality with no updates, is really a bad experience for the user, I would say. In the end I at least found &lt;a href=&quot;http://downloads.geeksphone.com/peak/latest.html&quot;&gt;the latest images from Geeksphone&lt;/a&gt;, but that still has only 1.0.1 version, although there are rumours of 1.1 already existing on the Mozilla servers. Other bad experience is that fonts are tiny, almost unreadable, and I haven’t a way (even a one which would include adb or something similarly drastic) to work around it.&lt;/p&gt;
&lt;p&gt;The worst and the best part of the phone is the situation with Contacts. Out of the box, FF OS imports just from SIM card (who still uses contacts there?) and from Facebook (I don’t have an account, and even if I had I would never ever store my main address book there). That was pretty bad, as I really didn't look forward typing of couple hundred contacts I had on pretty crappy keyboard (with unreadably small characters). So, my programmer’s pride raised its head, and I have wrote &lt;a href=&quot;https://github.com/mcepl/parseLDIF&quot;&gt;Javascript LDIF parser&lt;/a&gt; and with that I was able to write &lt;a href=&quot;http://luther.ceplovi.cz/git/importLDIF.git&quot;&gt;a simple (and ugly) single-webapp for importing a LDIF file to the system address book&lt;/a&gt;. While doing that I have found that there is already &lt;a href=&quot;https://github.com/arcturus/firefoxos-contacts-importer&quot;&gt;Importer from GMail Contacts&lt;/a&gt;. I don’t use GMail, so it wasn’t useful for me as such, but eventually I hope to merge my code into this app, because it has much better user interface.&lt;/p&gt;
&lt;p&gt;Generally I am enjoying the ride so far, and I am looking to the time where I could get my fix of nightlies everyday.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-24T13:26:02+00:00</dc:date>
</item>
<item rdf:about="http://cecinestpasunefromage.wordpress.com/?p=153">
	<title>Jon Ciesla: Muphry’s law in action</title>
    <link>http://cecinestpasunefromage.wordpress.com/2013/05/24/muphrys-law-in-action/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=966850&quot;&gt;&lt;b&gt;Bug 966850&lt;/b&gt;&lt;/a&gt; – Typo in zfs-fuse.service file&lt;/p&gt;
&lt;p&gt;commit d5aff9d9d96657ae68c977e81e523d2f5dd87e0a&lt;br /&gt;
Author: Jon Ciesla &amp;lt;limburgher@gmail.com&amp;gt;&lt;br /&gt;
Date:   Fri May 24 08:12:57 2013 -0500&lt;/p&gt;
&lt;p&gt;Fir unit file typo.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;#winning&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/cecinestpasunefromage.wordpress.com/153/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/cecinestpasunefromage.wordpress.com/153/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=cecinestpasunefromage.wordpress.com&amp;amp;blog=34472042&amp;amp;post=153&amp;amp;subd=cecinestpasunefromage&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-24T13:21:34+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=4381">
	<title>Richard W.M. Jones: CentOS Dojo and Barbecue (UK)</title>
    <link>http://rwmj.wordpress.com/2013/05/24/centos-dojo-and-barbecue-uk/</link>
	<content:encoded>&lt;p&gt;It looks like I might be doing a short talk at the &lt;a href=&quot;http://wiki.centos.org/Events/Dojo/Aldershot2013&quot;&gt;CentOS Dojo and Barbecue at Aldershot, UK, Friday 12th July 2013&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It’ll probably be about scripting/programming libvirt and the virt tools, but mainly it’ll be a chance for Q&amp;amp;A about any virtualization topic in RHEL / CentOS.&lt;/p&gt;
&lt;p&gt;Also they have a BBQ — with beer!  Sadly since I’m driving there I won’t be able to drink any of the beer.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;(Thanks Karanbir Singh, Justin Clift)&lt;/i&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/4381/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/4381/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;amp;blog=6840703&amp;amp;post=4381&amp;amp;subd=rwmj&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-24T12:24:29+00:00</dc:date>
</item>
<item rdf:about="http://www.fedora-blog.de/?p=4657">
	<title>Fedora-Blog.de: Mit rpm schnell nach einem Paket suchen</title>
    <link>http://feedproxy.google.com/~r/Fedora-blogde/~3/YYbvYGDfoxU/</link>
	<content:encoded>&lt;div class=&quot;warning&quot;&gt;&lt;em&gt;Bitte beachten Sie auch die &lt;a href=&quot;http://www.fedora-blog.de/anmerkungen-zu-den-howtos/&quot; target=&quot;_blank&quot; title=&quot;Anmerkungen zu den HowTos&quot;&gt;Anmerkungen zu den HowTos&lt;/a&gt;!&lt;/em&gt;&lt;/div&gt;&lt;p&gt;Wenn es darum geht, beispielsweise alle installierten Kernel-Pakete aufgelistet zu bekommen, verwenden viele entweder&lt;/p&gt;&lt;pre&gt;rpm -qa | gerp kernel&lt;/pre&gt;&lt;p&gt;oder&lt;/p&gt;&lt;pre&gt;yum list installed | grep kernel&lt;/pre&gt;&lt;p&gt;Beide Möglichkeiten sind jedoch nicht unbedingt performant, da man eine große Menge an Daten abruft und diese dann gefiltert ausgibt.&lt;/p&gt;&lt;p&gt;Schneller geht es mit folgendem Befehl&lt;/p&gt;&lt;pre&gt;rpm -qa kernel\*&lt;/pre&gt;&lt;p&gt;An sich kann rpm zwar nicht mit dem * als Wildcard umgehen, da es als normales Zeichen interpretiert wird. Stellt man dem Sternchen jedoch einen Backslash voran, sagt man der Shell damit, das sie das Sternchen nicht (selber) interpretieren sondern an rpm weiterreichen soll.&lt;/p&gt;&lt;p&gt;Der Vorteil dieser Methode ist, das man sich nicht erst die komplette Liste der installierten Pakete ausgeben lässt, sondern das rpm nur die Pakete ausgibt, deren Name mit dem übergebenen Namen übereinstimmt.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; Eine weitere recht performante Möglichkeit ist, yums Cache abzufragen. Das lässt sich über folgendes Kommando bewerkstelligen:&lt;/p&gt;&lt;pre&gt;su -c'yum -C list installed kernel\*'&lt;/pre&gt;&lt;p&gt;&lt;em&gt;Danke an Kai für den Hinweis!&lt;/em&gt;&lt;/p&gt; &lt;img src=&quot;http://feeds.feedburner.com/~r/Fedora-blogde/~4/YYbvYGDfoxU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-24T11:33:25+00:00</dc:date>
</item>
<item rdf:about="http://balanch.ir/?p=3173">
	<title>Mostafa Daneshvar: لینوکس در ایستگاه فضایی</title>
    <link>http://balanch.ir/1392/03/03/3173/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://fa.wikipedia.org/wiki/%D8%A7%DB%8C%D8%B3%D8%AA%DA%AF%D8%A7%D9%87_%D9%81%D8%B6%D8%A7%DB%8C%DB%8C_%D8%A8%DB%8C%D9%86%E2%80%8C%D8%A7%D9%84%D9%85%D9%84%D9%84%DB%8C&quot;&gt;ایستگاه فضایی بین‌المللی&lt;/a&gt; قصد دارد از سیستم عامل لینوکس به جای ویندوز در لپتاپ‌های خود استفاده کند.&lt;br /&gt;
در این ایستگاه تعدادی لپتاپ وجود دارد که فضانوردان از آنها در ماموریت‌های خود استفاده می کنند. ناسا تا کنونی از سیستم عامل ویندوز بر روی این گونه لپتاپ‌ها استفاده کرده است اما قصد دارد یک سیستم عامل امن و قابل اعتماد را جایگزین آن نماید.&lt;/p&gt;
&lt;div style=&quot;width: 310px;&quot; class=&quot;wp-caption alignnone&quot;&gt;&lt;img src=&quot;http://upload.wikimedia.org/wikipedia/commons/d/d7/STS-133_International_Space_Station_after_undocking_5.jpg&quot; alt=&quot;ایستگاه فضایی بین‌المللی&quot; height=&quot;300&quot; class=&quot; &quot; width=&quot;300&quot; /&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;ایستگاه فضایی بین‌المللی&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;یکی از کارشناسان ناسا در این زمینه می گوید ما در حال مهاجرت از ویندوز به سمت لینوکس هستیم چون ما نیاز به سیستم عاملی داریم که پایدار و قابل اعتماد باشد و به ما توان کنترل از راه دور در مرکز را بدهد. چنانچه اگر نیاز به نصب وصله‌ها، تنظیم و تغییر داشته باشیم به راحتی بتوانیم این کار را انجام دهیم.&lt;br /&gt;
چووالا، کارشناس ناسا، می گوید ما از لینوکس علمی به دبیان ۶ مهاجرت کرده‌ایم. وی افزود لپتاپ‌هایی که در بردهای ایستگاه توسط افرادی استفاده می شوند که نیازها و مسئولیت‌های بسیار ویژه‌ای دارند.&lt;br /&gt;
استفاده از لینوکس در ناسا چیزی جدیدی نیست. قبلا در پروژه‌هایی همانند فرستادن کاوشگر به مریخ از این سیستم عامل استفاده شد. هر چند این تغییر و تحولات وقت زیادی را در زمینه جابه‌جایی برنامه‌های قدیمی ویندوزی خواهد گرفت اما نگرانی ناسا را در زمینه امنیت و آسیب‌پذیری کم خواهد کرد.&lt;/p&gt;
&lt;div class=&quot;betterrelated&quot;&gt;&lt;p&gt;&lt;strong&gt;در همین زمینه:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt; &lt;a href=&quot;http://balanch.ir/1391/05/04/2465/&quot; title=&quot;Permanent link to QNX&quot;&gt;QNX&lt;/a&gt;  &lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://balanch.ir/1391/04/14/2414/&quot; title=&quot;Permanent link to لینوکس و ذره هیگز&quot;&gt;لینوکس و ذره هیگز&lt;/a&gt;  &lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://balanch.ir/1392/02/15/3145/&quot; title=&quot;Permanent link to دبیان ۷ آمد&quot;&gt;دبیان ۷ آمد&lt;/a&gt;  &lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://balanch.ir/1387/07/27/112/&quot; title=&quot;Permanent link to سیستم عامل کامپیوتر من&quot;&gt;سیستم عامل کامپیوتر من&lt;/a&gt;  &lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://balanch.ir/1390/03/26/1200/&quot; title=&quot;Permanent link to حذف ایندکس لینوکس از گوگل&quot;&gt;حذف ایندکس لینوکس از گوگل&lt;/a&gt;  &lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-24T11:06:29+00:00</dc:date>
</item>
<item rdf:about="http://rwmj.wordpress.com/?p=4377">
	<title>Richard W.M. Jones: libguestfs 1.22 released</title>
    <link>http://rwmj.wordpress.com/2013/05/24/libguestfs-1-22-released/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://libguestfs.org/&quot;&gt;libguestfs&lt;/a&gt; 1.22 &lt;a href=&quot;https://www.redhat.com/archives/libguestfs/2013-May/msg00069.html&quot;&gt;was released yesterday&lt;/a&gt;.  You can &lt;a href=&quot;http://libguestfs.org/guestfs-release-notes.1.html&quot;&gt;read the release notes here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://libguestfs.org/fish.png&quot; style=&quot;border: 20px solid #009df8;&quot; /&gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/rwmj.wordpress.com/4377/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/rwmj.wordpress.com/4377/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=rwmj.wordpress.com&amp;amp;blog=6840703&amp;amp;post=4377&amp;amp;subd=rwmj&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-24T11:01:56+00:00</dc:date>
</item>
<item rdf:about="http://goldmann.pl/blog/2013/05/24/domain-mode-in-fedoras-jboss-as/">
	<title>Marek Goldmann: Domain mode in Fedora's JBoss AS</title>
    <link>http://goldmann.pl/blog/2013/05/24/domain-mode-in-fedoras-jboss-as/</link>
	<content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.jboss.org/jbossas&quot;&gt;JBoss Application Server&lt;/a&gt; shipped in
      &lt;a href=&quot;https://fedoraproject.org/&quot;&gt;Fedora&lt;/a&gt; makes it easy to run it as a system
      service. So far you could launch only the &lt;code&gt;standalone&lt;/code&gt; mode, there was no easy
      way to run it in the &lt;code&gt;domain&lt;/code&gt; mode. This is going to change.&lt;/p&gt;
      
      &lt;p&gt;If you're not familiar with the operating modes, I highly recommend you reading
      the &lt;a href=&quot;https://docs.jboss.org/author/display/AS71/Operating+modes&quot;&gt;introduction to
      it&lt;/a&gt;. In short, in
      domain mode you can launch more than one server on one host easily. But this
      is not everything – you get a single entry point for management for all
      these instances. This means that you can deploy applications one all instances
      by just executing one command!&lt;/p&gt;
      
      &lt;div class=&quot;alert alert-info&quot;&gt;&lt;h4&gt;Available with the next jboss-as package update&lt;/h4&gt;Domain mode will be available with the next jboss-as package update &lt;strong&gt;7.1.1-19&lt;/strong&gt; on &lt;strong&gt;Fedora 19+&lt;/strong&gt;.&lt;/div&gt;
      
      
      &lt;h2&gt;Configuration&lt;/h2&gt;
      
      &lt;p&gt;With the
      &lt;a href=&quot;https://admin.fedoraproject.org/updates/jboss-as-7.1.1-19.fc19&quot;&gt;&lt;code&gt;jboss-as-7.1.1-19&lt;/code&gt;&lt;/a&gt;
      update you'll be able to select which mode should be used when running the
      systemd service for JBoss AS. To do this you need to edit the
      &lt;code&gt;/etc/jboss-as/jboss-as.conf&lt;/code&gt; file.&lt;/p&gt;
      
      &lt;p&gt;You can choose the mode by setting the &lt;code&gt;JBOSS_MODE&lt;/code&gt; environment variable. Do
      not forget to select a valid configuration file by setting the &lt;code&gt;JBOSS_CONFIG&lt;/code&gt;
      variable.&lt;/p&gt;
      
      &lt;pre&gt;&lt;code&gt;# The configuration you want to run
#
# JBOSS_CONFIG=standalone.xml
JBOSS_CONFIG=domain.xml

# The mode you want to run
# JBOSS_MODE=standalone
JBOSS_MODE=domain

# The address to bind to
#
JBOSS_BIND=0.0.0.0
&lt;/code&gt;&lt;/pre&gt;
      
      &lt;p&gt;Afterwards you can restart the server by simply using the &lt;code&gt;systemctl&lt;/code&gt; command:&lt;/p&gt;
      
      &lt;pre&gt;&lt;code&gt;$ systemctl restart jboss-as.service
&lt;/code&gt;&lt;/pre&gt;
      
      &lt;p&gt;And voila – domain mode is running with two JBoss AS instances (default case):&lt;/p&gt;
      
      &lt;pre&gt;&lt;code&gt;$ systemctl status jboss-as.service
jboss-as.service - The JBoss Application Server
   Loaded: loaded (/usr/lib/systemd/system/jboss-as.service; disabled)
   Active: active (running) since pią 2013-05-24 10:56:30 CEST; 7s ago
 Main PID: 1325 (launch.sh)
   CGroup: name=systemd:/system/jboss-as.service
           ├─1325 /bin/sh /usr/share/jboss-as/bin/launch.sh domain domain.xml 0.0.0.0
           ├─1326 /bin/sh /usr/share/jboss-as/bin/domain.sh -c domain.xml -b 0.0.0.0
           ├─1368 java -D[Process Controller] -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byt...
           ├─1382 java -D[Host Controller] -Dorg.jboss.boot.log.file=/usr/share/jboss-as/domain/log/host-controller.log -Dlogging.configuration=file:/usr/share/jboss-as/domain/configuration/logging.properties -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Sta...
           ├─1433 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64/jre/bin/java -D[Server:server-one] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms64m -Xmx512m -server -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.bind.address=0.0.0.0 -Dsun...
           └─1451 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64/jre/bin/java -D[Server:server-two] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms64m -Xmx512m -server -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.bind.address=0.0.0.0 -Dsun...
&lt;/code&gt;&lt;/pre&gt;
      
      &lt;h2&gt;Domain management examples&lt;/h2&gt;
      
      &lt;p&gt;The JBoss AS domain is so powerful that you can launch another server instance by using just the CLI:&lt;/p&gt;
      
      &lt;pre&gt;&lt;code&gt;[domain@localhost:9999 /] /host=master/server-config=server-three:start
{
    &quot;outcome&quot; =&amp;gt; &quot;success&quot;,
    &quot;result&quot; =&amp;gt; &quot;STARTING&quot;
}
[domain@localhost:9999 /] /host=master/server-config=server-three:read-resource(include-runtime=true)
{
    &quot;outcome&quot; =&amp;gt; &quot;success&quot;,
    &quot;result&quot; =&amp;gt; {
        &quot;auto-start&quot; =&amp;gt; false,
        &quot;group&quot; =&amp;gt; &quot;other-server-group&quot;,
        &quot;interface&quot; =&amp;gt; undefined,
        &quot;jvm&quot; =&amp;gt; undefined,
        &quot;name&quot; =&amp;gt; &quot;server-three&quot;,
        &quot;path&quot; =&amp;gt; undefined,
        &quot;socket-binding-group&quot; =&amp;gt; undefined,
        &quot;socket-binding-port-offset&quot; =&amp;gt; 250,
        &quot;status&quot; =&amp;gt; &quot;STARTED&quot;,
        &quot;system-property&quot; =&amp;gt; undefined
    }
}
&lt;/code&gt;&lt;/pre&gt;
      
      &lt;p&gt;You can check the status of the service to confirm that the server is actually a new instance:&lt;/p&gt;
      
      &lt;pre&gt;&lt;code&gt;$ systemctl status jboss-as.service
jboss-as.service - The JBoss Application Server
   Loaded: loaded (/usr/lib/systemd/system/jboss-as.service; disabled)
   Active: active (running) since pią 2013-05-24 10:56:30 CEST; 8min ago
 Main PID: 1325 (launch.sh)
   CGroup: name=systemd:/system/jboss-as.service
           ├─1325 /bin/sh /usr/share/jboss-as/bin/launch.sh domain domain.xml 0.0.0.0
           ├─1326 /bin/sh /usr/share/jboss-as/bin/domain.sh -c domain.xml -b 0.0.0.0
           ├─1368 java -D[Process Controller] -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byt...
           ├─1382 java -D[Host Controller] -Dorg.jboss.boot.log.file=/usr/share/jboss-as/domain/log/host-controller.log -Dlogging.configuration=file:/usr/share/jboss-as/domain/configuration/logging.properties -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Sta...
           ├─1433 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64/jre/bin/java -D[Server:server-one] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms64m -Xmx512m -server -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.bind.address=0.0.0.0 -Dsun...
           ├─1954 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64/jre/bin/java -D[Server:server-two] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms64m -Xmx512m -server -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.bind.address=0.0.0.0 -Dsun...
           └─2076 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64/jre/bin/java -D[Server:server-three] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms64m -Xmx512m -server -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.bind.address=0.0.0.0 -Ds...
&lt;/code&gt;&lt;/pre&gt;
      
      &lt;p&gt;Now you can use the JBoss AS CLI to deploy application to &lt;strong&gt;all running instances&lt;/strong&gt; in one step:&lt;/p&gt;
      
      &lt;pre&gt;&lt;code&gt;[domain@localhost:9999 /] deploy node-info.war --all-server-groups
&lt;/code&gt;&lt;/pre&gt;
      
      &lt;p&gt;Nice, isn't?&lt;/p&gt;
      
      &lt;p&gt;Of course there is more stuff you can do with it, please read &lt;a href=&quot;https://docs.jboss.org/author/display/AS71/Admin+Guide&quot;&gt;the
      documentation&lt;/a&gt;.&lt;/p&gt;
      
      &lt;p&gt;The update was &lt;a href=&quot;https://admin.fedoraproject.org/updates/jboss-as-7.1.1-19.fc19&quot;&gt;submitted to Fedora
      19&lt;/a&gt; and is
      already available in Rawhide. Please give it a shot and add some karma!&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-24T09:30:00+00:00</dc:date>
</item>
<item rdf:about="http://codemonkey.org.uk/?p=477">
	<title>Dave Jones: daily log May 23rd 2013.</title>
    <link>http://codemonkey.org.uk/2013/05/23/daily-log-may-23rd-2013/</link>
	<content:encoded>&lt;ul&gt;
&lt;li&gt;Continued chasing the xfs bug.  Confirmed that with the pending fix in the XFS tree, I can no longer reproduce the bug I saw. Then 3-4 hours later, it popped up again.&lt;br /&gt;
Annoying. Finally got some debug info to Dave Chinner at the end of the day.&lt;br /&gt;
Timezone differences making it even more annoying to debug.&lt;p&gt;&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;Fixed up a compile problem on older distros in trinity since the recent perf changes.
&lt;/li&gt;&lt;li&gt;Vince Weaver’s perf specific trinity fork is finding more bugs in the perf syscall already &lt;a href=&quot;https://lkml.org/lkml/2013/5/22/525&quot;&gt;[1]&lt;/a&gt;, &lt;a href=&quot;https://lkml.org/lkml/2013/5/23/323&quot;&gt;[2]&lt;/a&gt;.
&lt;/li&gt;&lt;li&gt;Merged trinity patch from Daniel Borkmann to &lt;a href=&quot;http://git.codemonkey.org.uk/?p=trinity.git;a=commitdiff;h=3d0d7854efb721857ac616a32f83cf8a1b2293b8&quot;&gt;add randomized seccomp filters generated by markov chain&lt;/a&gt;. Interesting stuff.
&lt;/li&gt;&lt;li&gt;Planning for some interesting testing work next week.
&lt;/li&gt;&lt;li&gt;Started some prep work for trinity 1.2
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;My 3.10-rc2 outstanding issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RCU/NOHZ_FULL bugs &lt;a href=&quot;https://lkml.org/lkml/2013/5/21/327&quot;&gt;[1]&lt;/a&gt;, &lt;a href=&quot;https://lkml.org/lkml/2013/5/21/510&quot;&gt;[2]&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;RCU bootmem allocator trace.http://codemonkey.org.uk/?p=477&amp;amp;preview=true
&lt;/li&gt;&lt;li&gt;tickbroadcast bootmem allocator trace.
&lt;/li&gt;&lt;li&gt;XFS Slab corruption (&lt;a href=&quot;http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/xfs.git;a=commitdiff;h=52c24ad39ff02d7bd73c92eb0c926fb44984a41d&quot;&gt;pending fix&lt;/a&gt;)
&lt;/li&gt;&lt;li&gt;XFS &lt;a href=&quot;https://lkml.org/lkml/2013/5/21/477&quot;&gt;xfs_setattr_size assertion&lt;/a&gt;
&lt;/li&gt;&lt;li&gt;T430s Lid events no longer put machine to sleep (actually an old bug since 3.9-rc1, but laptop is out of action until next week)
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Puzzling website of the day: &lt;a href=&quot;http://1010.co.uk/org/pain.html&quot;&gt;pain registers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/23/daily-log-may-23rd-2013/&quot;&gt;daily log May 23rd 2013.&lt;/a&gt; is a post from: &lt;a href=&quot;http://codemonkey.org.uk&quot;&gt;codemonkey.org.uk&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;yarpp-related-rss&quot;&gt;
&lt;p&gt;Related posts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/22/daily-log-may-22nd-2013/&quot; rel=&quot;bookmark&quot; title=&quot;daily log May 22nd 2013.&quot;&gt;daily log May 22nd 2013.&lt;/a&gt; &lt;small&gt;Going to try and continue yesterdays daily log format for...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/15/310rc1-testing-status/&quot; rel=&quot;bookmark&quot; title=&quot;3.10rc1 testing status&quot;&gt;3.10rc1 testing status&lt;/a&gt; &lt;small&gt;3.10rc1 came out a few days ago. At 12,000 changesets,...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/16/cve-2013-2094/&quot; rel=&quot;bookmark&quot; title=&quot;CVE-2013-2094. Another day, another fuzzed bug.&quot;&gt;CVE-2013-2094. Another day, another fuzzed bug.&lt;/a&gt; &lt;small&gt;Last month Tommi found a kernel bug in perf_swevent_init using...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-24T04:25:45+00:00</dc:date>
</item>
<item rdf:about="http://threebean.org/blog/plugins-for-mailman3">
	<title>Ralph Bean: Writing plugins for Mailman 3</title>
    <link>http://threebean.org/blog/plugins-for-mailman3</link>
	<content:encoded>&lt;div class=&quot;document&quot;&gt;
&lt;p&gt;GNU Mailman 3 (the long-awaited revamp of the widely-used, widely-despised
GNU Mailman 2) is &lt;a href=&quot;http://pyvideo.org/video/688/mailman-3&quot; class=&quot;reference external&quot;&gt;on the way&lt;/a&gt;, and
Fedora's &lt;a href=&quot;http://aurelien.bompard.org/&quot; class=&quot;reference external&quot;&gt;Aurélien Bompard&lt;/a&gt; has been working
on a new frontend for it (here's a &lt;a href=&quot;http://threebean.org/hyperkitty-screencast.webm&quot; class=&quot;reference external&quot;&gt;before and after screencast&lt;/a&gt; showing some of
it off).
I set out to write a &lt;a href=&quot;http://fedmsg.com&quot; class=&quot;reference external&quot;&gt;fedmsg&lt;/a&gt; plugin for mm3 so we
can add it to &lt;a href=&quot;http://ralph.fedorapeople.org/so-i-turned-the-fedmsg-data-into-a-git-log-and.webm&quot; class=&quot;reference external&quot;&gt;cool visualizations&lt;/a&gt;,
gather more data on non-development contributions to Fedora (which is always
hard to quantify), and to support future fedmsg use cases we haven't yet
thought of.&lt;/p&gt;
&lt;p&gt;I searched for documentation, but didn't find anything directly on how to
write plugins.  I found &lt;a href=&quot;http://www.aosabook.org/en/mailman.html&quot; class=&quot;reference external&quot;&gt;Barry's chapter in AOSA&lt;/a&gt; to be a really helpful guide
before diving into the mailman3 source itself.  This blog post is meant to
relay my findings:  two (of many) different ways to write plugins for
mailman3.&lt;/p&gt;
&lt;div id=&quot;adding-a-new-handler-to-the-pipeline&quot; class=&quot;section&quot;&gt;
&lt;h1&gt;Adding a new Handler to the Pipeline&lt;/h1&gt;
&lt;p&gt;At the end of the day, all we want to do is publish a &lt;a href=&quot;https://zeromq.org&quot; class=&quot;reference external&quot;&gt;ØMQ&lt;/a&gt; message on a &lt;tt class=&quot;docutils literal&quot;&gt;zmq.PUB&lt;/tt&gt; socket for every
mail that makes its way through mailman.&lt;/p&gt;
&lt;p&gt;I learned that at its core mailman is composed of two sequential
processing steps.  First, a &lt;em&gt;chain&lt;/em&gt; of &lt;em&gt;rules&lt;/em&gt; that make &lt;em&gt;moderation&lt;/em&gt;
decisions about a message (should it be posted to the list? rejected?
discarded?).  Second, a &lt;em&gt;pipeline&lt;/em&gt; of &lt;em&gt;handlers&lt;/em&gt; that perform &lt;em&gt;manipulation&lt;/em&gt;
operations on a message (should special text be added to the end?  headers?
should it be archived?  added to the digest?).&lt;/p&gt;
&lt;p&gt;I came up with this template while trying to figure out how to add another
handler to that second pipeline.  It works! (but its not the approach we
ended up using.  read further!):&lt;/p&gt;


&lt;div class=&quot;pygments_monokai&quot;&gt;&lt;pre&gt;&lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; An example template for setting up a custom pipeline for Mailman 3.&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;Message processing in mailman 3 is split into two phases, &quot;moderation&quot;&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;and &quot;modification&quot;.  This pipeline is for the second phase which&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;will only be invoked *after* a message has been cleared for delivery.&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;In order to have this module imported and setup by mailman, our ``initialize``&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;function needs to be called.  This can be accomplished with the mailman 3&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;``post_hook`` in the config file::&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;    [mailman]&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;    post_hook: mm3_custom_handler_template.initialize&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;After our ``initialize`` function has been called, the&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;'custom-posting-pipeline' should be available internally to mailman.&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;In mailman 3, each mailing list can have its *own* pipeline; precisely&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;which pipeline gets used at runtime is configured in the database --&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;through postorious.&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;:Author: Ralph Bean &amp;lt;rbean@redhat.com&amp;gt;&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot;&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;__future__&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;absolute_import&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;print_function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;unicode_literals&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;logging&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;zope.interface&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;implementer&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;zope.interface.verify&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;verifyObject&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mailman.config&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mailman.core.i18n&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mailman.core.pipelines&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;PostingPipeline&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mailman.interfaces.handler&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;IHandler&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;__all__&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;'CustomHandler'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;'CustomPostingPipeline'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;'initialize'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;elog&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;logging&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;getLogger&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;mailman.error&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;


&lt;span class=&quot;nd&quot;&gt;@implementer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;CustomHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; Do something.. anything with the message. &quot;&quot;&quot;&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'my-custom-handler'&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;description&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'Do something.. anything with the message.'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mlist&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;msgdata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; See `IHandler` &quot;&quot;&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;elog&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;CUSTOM HANDLER: &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%r&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%r&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%r&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mlist&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;msgdata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;


&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;CustomPostingPipeline&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PostingPipeline&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; A custom posting pipeline that adds our custom handler &quot;&quot;&quot;&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'my-custom-posting-pipeline'&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;description&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'My custom posting pipeline'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;_default_handlers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;PostingPipeline&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;_default_handlers&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;'my-custom-handler'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;


&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;initialize&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;():&lt;/span&gt;
    &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; Initialize our custom objects.&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;    This should be called as the `config.mailman.post_hook` callable&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;    during the third phase of initialization, *after* the other default&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;    pipelines have been set up.&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;    &quot;&quot;&quot;&lt;/span&gt;

    &lt;span class=&quot;c&quot;&gt;# Initialize our handler and make it available&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;handler&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;CustomHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;verifyObject&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;assert&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;handlers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;'Duplicate handler &quot;{0}&quot; found in {1}'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;CustomHandler&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;handlers&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;handler&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;handler&lt;/span&gt;

    &lt;span class=&quot;c&quot;&gt;# Initialize our pipeline and make it available&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;pipeline&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;CustomPostingPipeline&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pipelines&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pipeline&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pipeline&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;The above approach works, but it involves a lot of hacking to get mailman
to &lt;em&gt;load&lt;/em&gt; our code into the pipeline.  We have to occupy the mailman
&lt;tt class=&quot;docutils literal&quot;&gt;post_hook&lt;/tt&gt; and then kind-of hot-patch our pipeline into the list of
existing pipelines.&lt;/p&gt;
&lt;p&gt;A benefit of this approach is that we could use &lt;tt class=&quot;docutils literal&quot;&gt;postorious&lt;/tt&gt;
(the DB) to control &lt;em&gt;which&lt;/em&gt; mailing lists included our plugin and which
didn't.  The &lt;em&gt;site&lt;/em&gt; administrator can leave some decisions up to the &lt;em&gt;list&lt;/em&gt;
administrators.&lt;/p&gt;
&lt;p&gt;I ended up abandoning the above approach and instead landed on...&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;adding-a-second-archiver&quot; class=&quot;section&quot;&gt;
&lt;h1&gt;Adding a second Archiver&lt;/h1&gt;
&lt;p&gt;One of the Handlers in the default pipeline is the &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;to-archive&lt;/span&gt;&lt;/tt&gt; Handler.
It has a somewhat nicer API for defining multiple destinations for archival.
One of those is typically HyperKitty (or... kittystore)... but you can
add as many as you like.&lt;/p&gt;
&lt;p&gt;I wrote this &quot;archiver&quot; (and threw it up on
&lt;a href=&quot;https://github.com/fedora-infra/mailman3-fedmsg-plugin&quot; class=&quot;reference external&quot;&gt;github&lt;/a&gt;,
&lt;a href=&quot;https://pypi.python.org/pypi/mailman3-fedmsg-plugin&quot; class=&quot;reference external&quot;&gt;pypi&lt;/a&gt;, and
&lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=966732&quot; class=&quot;reference external&quot;&gt;fedora&lt;/a&gt;).
Barring tweaks and modifications, I think its the approach we'll end
up using down the road:&lt;/p&gt;


&lt;div class=&quot;pygments_monokai&quot;&gt;&lt;pre&gt;&lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; Publish notifications about mails to the fedmsg bus.&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;Enable this by adding the following to your mailman.cfg file::&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;    [archiver.fedmsg]&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;    # The class implementing the IArchiver interface.&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;    class: mailman3_fedmsg_plugin.Archiver&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;    enable: yes&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;You can exclude certain lists from fedmsg publication by&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;adding them to a 'mailman.excluded_lists' list in /etc/fedmsg.d/::&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;    config = {&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;        'mailman.excluded_lists': ['bugzilla', 'commits'],&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;    }&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot;&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;zope.interface&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;implements&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mailman.interfaces.archiver&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;IArchiver&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;socket&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;fedmsg&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;fedmsg.config&lt;/span&gt;


&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Archiver&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; A mailman 3 archiver that forwards messages to the fedmsg bus. &quot;&quot;&quot;&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;implements&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;IArchiver&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;fedmsg&quot;&lt;/span&gt;

    &lt;span class=&quot;c&quot;&gt;# This is a list of the headers we're interested in publishing.&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;keys&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;archived-at&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;delivered-to&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;from&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;cc&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;to&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;in-reply-to&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;message-id&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;subject&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;x-message-id-hash&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;references&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;x-mailman-rule-hits&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&quot;x-mailman-rule-misses&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; Just initialize fedmsg. &quot;&quot;&quot;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;hostname&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;socket&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;gethostname&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;getattr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;getattr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fedmsg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'__local'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;None&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'__context'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;None&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;fedmsg&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;mailman.&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;%s&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hostname&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;fedmsg&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;load_config&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;


    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;archive_message&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mlist&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot;Send the message to the &quot;archiver&quot;.&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;        In our case, we just publish it to the fedmsg bus.&lt;/span&gt;

&lt;span class=&quot;sd&quot;&gt;        :param mlist: The IMailingList object.&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;        :param msg: The message object.&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;        &quot;&quot;&quot;&lt;/span&gt;

        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mlist&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;list_name&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;config&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'mailman.excluded_lists'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]):&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;lambda&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;value&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;unicode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;msg_metadata&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;dict&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;k&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;keys&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;lst_metadata&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;dict&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;list_name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mlist&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;list_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;fedmsg&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;publish&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;topic&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'receive'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;modname&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'mailman'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                       &lt;span class=&quot;n&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;dict&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;msg_metadata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mlist&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lst_metadata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;list_url&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mlist&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; This doesn't make sense for fedmsg.&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;        But we must implement for IArchiver.&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;        &quot;&quot;&quot;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;None&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;permalink&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mlist&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;msg&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;sd&quot;&gt;&quot;&quot;&quot; This doesn't make sense for fedmsg.&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;        But we must implement for IArchiver.&lt;/span&gt;
&lt;span class=&quot;sd&quot;&gt;        &quot;&quot;&quot;&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;None&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;



&lt;/div&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-24T03:17:00+00:00</dc:date>
</item>
<item rdf:about="http://www.americanteeth.org/category/tech/feed/kvRLs1NSy5AIPDrZ0rQEaRCygHU=">
	<title>Casey Dahlin: Luftballons</title>
    <link>http://www.americanteeth.org/2013/05/23/luftballons</link>
	<content:encoded>&lt;p&gt;Remember in my &lt;a href=&quot;http://www.americanteeth.org/2013/05/17/the-future-of-information-exchange/&quot;&gt;last
post&lt;/a&gt;
when I talked about video games as an example of economic inefficency created
by proprietary software, because they duplicate so much effort? I've actually
been thinking about that idea a lot, for a long time. More specifically I've
been thinking about it in terms of the technology; the graphics engines etc.
Studios are constantly competing to best eachother in graphics, and they end up
creating more or less the same product; most games are about on a level. The
competition is clearly driving some innovation, but the fact that they can't
build on eachother's work means a lot of wasted effort to maintain what tends
to look like a stalemate from without.  It's not a terribly gross example of IP
going haywire; again, the innovation is getting driven, but open source has
been very good at cutting out this kind of inefficiency, for better or
&lt;a href=&quot;https://shop.oracle.com/pls/ostore/product?p1=oraclelinux&amp;amp;p2=&amp;amp;p3=&amp;amp;p4=&amp;amp;sckw=NAMK08051423MPP019_Linux%20110_g_00020&quot;&gt;worse.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I guess what I'm trying to say is I'm writing a video game engine.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://luftengine.org&quot;&gt;Meet Luftballons.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There's more than a few open video game engines out there. It's probably fair to ask
why write another one. To be fair, the eventual scope of Luftballons is to be
much more than an engine; I'd like to build an entire suite of open source game
development tools that will allow users to develop games from start to finish
(there's some proprietary things like this already, but for paranoia's sake I'm
not mentioning them). I could build that around another engine, and of the
other options out there I'd say I probably looked closest at the nominally
successful &lt;a href=&quot;http://www.ogre3d.org/&quot;&gt;Ogre3d&lt;/a&gt;, but after reading that it did not
intend to support deferred rendering pipelines, I decided to sniff around
elsewhere. Eventually I conceptualized something unique enough that I felt it
was worth striking out on my own.&lt;/p&gt;
&lt;p&gt;Luftballons is basically an experiment in how much difficulty I can remove from
the OpenGL API without removing &lt;em&gt;any&lt;/em&gt; significant functionality. I chose to
aggressively target modern OpenGL (somewhat tempered by Mesa only just barely
implementing OpenGL 3 on most hardware), and build a framework that would cater
to most of the use cases in question, but be dramatically less intricate than
OpenGL. The trick is in considering &lt;em&gt;what&lt;/em&gt; the OpenGL API can do, but
abstracting away the &lt;em&gt;how&lt;/em&gt;; removing all the tiny decisions around order of
operations and allocation methods and whether to use instanced geometry, etc.
The theory is that we can expose a simpler API that is feature-competitive with
the raw drawing API if we don't worry about performance and just assume the
most obvious way to draw is fine for everyone. The much more exciting theory is
that we can then teach the implementation to be clever and do the optimization
behind the scenes without hassling the user with more details. More
importantly, a simple API is inherently more future-proof, as new OpenGL
features just mean small API extensions or improvements to that under-the-hood
optimization.&lt;/p&gt;
&lt;p&gt;There's obviously a lot more to do, as well as some cleanup on what I already
have (hand-rolling makefiles is great! I've only done it for one project and
already my hatred of Automake is completely gone! (seriously, early adopters, I
swear it will be in autotools within a week. Promise.)) but I have high hopes.
Absorbing that inefficiency I mentioned means creating a ubiquitous open source
game development platform. Whether it is this project or something else that
does it, I'm hoping to one day reach a point where building a new game without
using the most common open game engine is as absurd as building a new embedded
platform without using the Linux kernel.&lt;/p&gt;
&lt;p&gt;In the meantime, who wants to play with GLSL?&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-24T01:01:51+00:00</dc:date>
</item>
<item rdf:about="http://skvidal.wordpress.com/?p=1094">
	<title>Seth vidal: documenting for posterity – ansible – wait for a dir to exist before continuing</title>
    <link>http://skvidal.wordpress.com/2013/05/23/documenting-for-posterity-ansible-wait-for-a-dir-to-exist-before-continuing/</link>
	<content:encoded>&lt;p&gt;Got a ridiculous process **cough**Jenkins**Cough** that you have to wait to create a dir before doing things?&lt;/p&gt;
&lt;p&gt;This might help you as godawful ugly as it is.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;  – name: wait for a dir to exist – this is just ugly&lt;br /&gt;
    shell: while `true`; do [ -d /var/lib/jenkins/plugins/openid/WEB-INF/lib/ ] &amp;amp;&amp;amp; break; sleep 5; done&lt;br /&gt;
    async: 1800&lt;br /&gt;
    poll: 20
&lt;/p&gt;&lt;/blockquote&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/skvidal.wordpress.com/1094/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/skvidal.wordpress.com/1094/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=skvidal.wordpress.com&amp;amp;blog=579402&amp;amp;post=1094&amp;amp;subd=skvidal&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-23T21:07:15+00:00</dc:date>
</item>
<item rdf:about="http://spot.livejournal.com/325053.html">
	<title>Tom 'spot' Callaway: Flock deadlines approaching - May 31, 2013</title>
    <link>http://spot.livejournal.com/325053.html</link>
	<content:encoded>The call for talks (and workshops/sprints/hackfests) for Flock 2013 is due to close on May 31, 2013. We've got some great submissions already, but we really would love some more.&lt;br /&gt;&lt;br /&gt;Flock is your chance to present your project or your ideas to the Fedora Community for consideration. Think we should do something differently? This is the forum to do that. Want to influence the future for releases like Red Hat Enterprise Linux and CentOS? It happens in Fedora first. Want to teach others how to do something in Fedora? Propose a workshop. Want to build something new for Fedora? Lead a hackfest!&lt;br /&gt;&lt;br /&gt;It is easy and cheap to complain about something, but it is more worthwhile to contribute to solving a problem or making something better. Flock is that chance, and we need you!&lt;br /&gt;&lt;br /&gt;To register: &lt;a href=&quot;http://register.flocktofedora.org/new&quot;&gt;http://register.flocktofedora.org/new&lt;/a&gt;&lt;br /&gt;To propose a talk/workshop/hackfest: &lt;a href=&quot;http://register.flocktofedora.org/submit_proposal&quot;&gt;http://register.flocktofedora.org/submit_proposal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For more details on Flock: &lt;a href=&quot;http://flocktofedora.org/&quot;&gt;http://flocktofedora.org/&lt;/a&gt;</content:encoded>
	<dc:date>2013-05-23T20:53:39+00:00</dc:date>
</item>
<item rdf:about="http://www.fedora-blog.de/?p=4650">
	<title>Fedora-Blog.de: Bash Historie deaktivieren</title>
    <link>http://feedproxy.google.com/~r/Fedora-blogde/~3/fF9gvdzawWU/</link>
	<content:encoded>&lt;div class=&quot;warning&quot;&gt;&lt;em&gt;Bitte beachten Sie auch die &lt;a href=&quot;http://www.fedora-blog.de/anmerkungen-zu-den-howtos/&quot; target=&quot;_blank&quot; title=&quot;Anmerkungen zu den HowTos&quot;&gt;Anmerkungen zu den HowTos&lt;/a&gt;!&lt;/em&gt;&lt;/div&gt;&lt;p&gt;Wer die Bash Historie deaktivieren möchte, kann anstatt der &lt;a href=&quot;http://www.fedora-blog.de/2011/06/bash-history-automatisch-loeschen/&quot; title=&quot;bash-History automatisch löschen&quot;&gt;hier&lt;/a&gt; vorgestellten Variante auch folgende Methode nutzen:&lt;/p&gt;&lt;p&gt;Zuerst wird das Schreiben in die .bash_history Datei in der .bashrc deaktiviert. Dazu wird selbige mittels&lt;/p&gt;&lt;pre&gt;nano ~/.bashrc&lt;/pre&gt;&lt;p&gt;geöffnet und folgende Zeile am Ende der Datei eingefügt:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;unset HISTFILE&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;info&quot;&gt;Möchte man die Bash Historie systemweit für alle Benutzer deaktivieren, muss diese Zeile in der /etc/bashrc am Ende eingetragen werden.&lt;/div&gt;&lt;p&gt;Nach einem Neustart des Terminals wird die vorhandene Historie gelöscht und eine leere .bash_history erstellt.&lt;/p&gt;&lt;pre&gt;rm ~/.bash_history
touch ~/.bash_history
history -c&lt;/pre&gt;&lt;p&gt;Der letzte der drei Befehle sorgt dafür, das der Zwischenspeicher der Bash geleert wird und somit keinerlei Daten vorhanden sind, die in die .bash_history geschrieben werden könnten.&lt;/p&gt; &lt;img src=&quot;http://feeds.feedburner.com/~r/Fedora-blogde/~4/fF9gvdzawWU&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-23T19:42:29+00:00</dc:date>
</item>
<item rdf:about="http://www.scrye.com/wordpress/nirik/?p=1267">
	<title>Kevin Fenzi: An observation on difficult to deal with community members</title>
    <link>http://www.scrye.com/wordpress/nirik/2013/05/23/an-observation-on-difficult-to-deal-with-community-members/</link>
	<content:encoded>&lt;p&gt;I got to thinking recently: Why are interactions with some small number of community members always unpleasant?&lt;/p&gt;
&lt;p&gt;It seems to me as a general rule that the people who are unpleasant to deal with (or at least all of those I can think of in any of the communities I am involved with) all have the same basic fundamental viewpoint: Assume malice by default.&lt;/p&gt;
&lt;p&gt;By this I mean that when they see something and post/tweet/mention it, they approach it from the idea that the community or parts of it are deliberately conspiring, hiding, planning, or doing the thing with “mallice aforethought”, and that the community or parts of it must PROVE that they are not doing so. There also seems a subset that assume some kind of malicious ignorance (“You should google this, since you didn’t you are stupid and wasting my time”).&lt;/p&gt;
&lt;p&gt;In contrast the vast majority of people in communities I am involved in either assume nothing (“hey, whats up with this, can you tell me?”) or assume good faith (“This looks like a bug, but perhaps I don’t understand what you are trying to do here, can you explain?”) and are generally quite pleasant to deal with.&lt;/p&gt;
&lt;p&gt;I’m sure there are counter examples, but I wonder if in general people agree?&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-23T17:51:45+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-1644341202676110182.post-414579411272730159">
	<title>Warren Togami: openssl with ecdsa for Fedora 18</title>
    <link>http://wtogami.blogspot.com/2013/05/openssl-with-ecdsa-for-fedora-18.html</link>
	<content:encoded>For many years now, Fedora has excluded ECDSA support from openssl due to potential yet unconfirmed concerns about software patents.  Bugzilla #319901 and fedora-legal-list have asked for clarity on the situation but authorities have been unable to comment on it.  For one, few engineers would choose to purposefully read patents due to the fear of being tainted by the knowledge, which might be problematic in a patent infringement lawsuit.  Secondly, even fewer engineers are experts at cryptography and would be able to differentiate particular algorithms used in the software from the claims disclosed in patents.  To make matters worse, patent law really doesn't make it easy to know for certain what exactly are the borders around the claimed &quot;property&quot;, so it is difficult to know if something else potentially infringes or not.&lt;br /&gt;&lt;br /&gt;I did not read the patents that are alleged to be involved.  I am however very annoyed by the inability to easily develop and build certain software like Bitcoin on Fedora.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Download&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;openssl for Fedora 18 with ECDSA support [&lt;a href=&quot;http://download1.rpmfusion.org/~warren/openssl/&quot;&gt;Link&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; The Fedora Project is not responsible for these user-made packages.</content:encoded>
	<dc:date>2013-05-23T10:36:00+00:00</dc:date>
</item>
<item rdf:about="http://fhornain.wordpress.com/?p=1657">
	<title>Frederic Hornain: [Wildfly] Alpha is available</title>
    <link>http://fhornain.wordpress.com/2013/05/23/wildfly-alpha-is-available/</link>
	<content:encoded>&lt;p&gt;&lt;img src=&quot;http://fhornain.files.wordpress.com/2013/05/wildfly-small-1.png?w=460&quot; alt=&quot;wildfly-small.1&quot; class=&quot;alignleft size-full wp-image-1656&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Dear *,&lt;br /&gt;
Wildfly Alpha 1 is now available. [1] &lt;/p&gt;
&lt;p&gt;[1] &lt;a href=&quot;http://www.wildfly.org/download/&quot; target=&quot;_blank&quot; title=&quot;Wildfly Alpha&quot;&gt;http://www.wildfly.org/download/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Frederic&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/fhornain.wordpress.com/1657/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/fhornain.wordpress.com/1657/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=fhornain.wordpress.com&amp;amp;blog=6345193&amp;amp;post=1657&amp;amp;subd=fhornain&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-23T08:58:25+00:00</dc:date>
</item>
<item rdf:about="http://lukas.zapletalovi.com/2013/05/openvpn-root-down-plugin-update-in-fedora-18">
	<title>Lukas "lzap" Zapletal: OpenVPN root down plugin update in Fedora 18</title>
    <link>http://lukas.zapletalovi.com/2013/05/openvpn-root-down-plugin-update-in-fedora-18.html</link>
	<content:encoded>&lt;h1 id=&quot;openvpn_root_down_plugin_update_in_fedora_18&quot;&gt;OpenVPN root down plugin update in Fedora 18&lt;/h1&gt;

&lt;p&gt;You may noticed that with recent bunch of updates your OpenVPN client may stopped working. The error was:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Thu May 23 09:26:35 2013 PLUGIN_INIT: could not load plugin shared object
/usr/lib64/openvpn/plugin/lib/openvpn-down-root.so:
/usr/lib64/openvpn/plugin/lib/openvpn-down-root.so: cannot open shared object
file: No such file or directory: No such file or directory (errno=2)
Thu May 23 09:26:35 2013 Exiting due to fatal error&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The openvpn package version was bumped in Fedora 18 for some reasons from 2.2 to 2.3. In the new version, the down root plugin has been renamed. If your OpenVPN script had this line:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;plugin /usr/lib64/openvpn/plugin/lib/openvpn-down-root.so /etc/openvpn/client.down&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;plugin openvpn-down-root.so /etc/openvpn/client.down&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You need to change it to&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;plugin openvpn-plugin-down-root.so /etc/openvpn/client.down&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Note that path has changed too, from /usr/lib64/openvpn/plugin/ to /usr/lib64/openvpn/plugins/, but you usually don’t need to provide it.&lt;/p&gt;

&lt;p&gt;Take care!&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-23T07:00:00+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-13843503.post-2601606102860473557">
	<title>Fábio Olivé: FLISOL Chapecó: Uma grande estréia!</title>
    <link>http://fabioolive.blogspot.com/2013/05/flisol-chapeco-uma-grande-estreia.html</link>
	<content:encoded>Já fazem quase 4 semanas que tivemos o &lt;a href=&quot;http://oesc-livre.org/doku.php?id=flisol_chapeco_2013&quot; target=&quot;_blank&quot;&gt;primeiro FLISOL de Chapecó&lt;/a&gt;, mas as boas lembranças persistem. Tivemos um público de mais ou menos 100 pessoas, reunindo gente de cidades variadas aqui da região. Não saiu tudo como eu gostaria, mas acho que no geral foi muito positivo, principalmente se considerando o pouco tempo que tivemos pra organizar. Gostaria de registrar meu MUITO OBRIGADO ao pessoal do curso de &lt;a href=&quot;http://unochapeco.edu.br/computacao&quot; target=&quot;_blank&quot;&gt;Ciência da Computação da Unochapecó&lt;/a&gt;, que ajudou muito mais do que eu esperava.&lt;br /&gt;&lt;br /&gt;Eu apresentei uma palestra rápida sobre &lt;a href=&quot;http://www.youtube.com/watch?v=GOogjwuBdEw&quot; target=&quot;_blank&quot;&gt;Software Livre e Inovação Tecnológica&lt;/a&gt; (&lt;a href=&quot;http://oesc-livre.org/media/slides/2013/abril_flisol_chapeco/Software-Livre-e-Inova%c3%a7%c3%a3o-Tecnol%c3%b3gica.pdf&quot; target=&quot;_blank&quot;&gt;slides&lt;/a&gt;), junto com meu colega do &lt;a href=&quot;http://oesc-livre.org/&quot; target=&quot;_blank&quot;&gt;OeSC-Livre&lt;/a&gt; Andrei Zuse, e também uma palestra sobre o &lt;a href=&quot;http://www.youtube.com/watch?v=E3o7WzzAL3k&quot; target=&quot;_blank&quot;&gt;Projeto Fedora&lt;/a&gt; (&lt;a href=&quot;http://oesc-livre.org/media/slides/2013/abril_flisol_chapeco/Projeto-Fedora.pdf&quot; target=&quot;_blank&quot;&gt;slides&lt;/a&gt;). Os vídeos são do amigo e &quot;colega de Software Livre&quot; Ivan Fuzzer (obrigado!). Parece mentira, mas foi a primeira vez que apresentei uma palestra especificamente falando do Fedora em si, como o projeto funciona e se organiza, o que é, o que faz, seus valores essenciais e tudo mais. Não ficou uma maravilha, mas foi um bom primeiro passo. Pretendo ser um &lt;a href=&quot;https://fedoraproject.org/wiki/User:Fleite&quot; target=&quot;_blank&quot;&gt;Embaixador do Fedora&lt;/a&gt; mais ativo a partir deste FLISOL, e assim vou ganhando também mais experiência ao falar do projeto.&lt;br /&gt;&lt;br /&gt;O Install Fest, ponto alto de qualquer FLISOL, foi bem movimentado, e chegamos a distribuir 42 DVDs de instalação e também 42 DVDs Live (coincidência!) do Fedora 18. Infelizmente eu perdi um bom tempo gerando e assinando os certificados dos participantes (já aprendi a lição: fazer o modelo com assinatura digitalizada), então não pude participar tanto quanto eu gostaria, mas o Andrei Zuse ajudou bastante gente a conhecer melhor o Fedora. Acho que o Fedora ganhou um novo colaborador, pois o Andrei já está me pedindo o caminho das pedras para criar uma conta e começar a contribuir. ;-) Muito bom! Quero começar a organizar &lt;a href=&quot;https://fedoraproject.org/wiki/Fedora_Activity_Day_-_FAD&quot; target=&quot;_blank&quot;&gt;Fedora Activity Days&lt;/a&gt; por aqui, e aos poucos encontrar mais futuros colaboradores.&lt;br /&gt;&lt;br /&gt;O que me deixou impressionado mesmo foi o pessoal do Arduino. Eles realmente tocaram fogo nos participantes, apresentando uma série de projetos mostrando todas as possibilidades dessas plaquinhas. Eu tinha resistido até agora, mas acabei me convencendo a brincar também. Já comprei uma Uno R3 e estou estudando tudo o que posso (no meu incrível tempo livre) sobre o ATmega328P. Pra quem começou com um Z80 lá em 1987, estudar um processador de 8bits de novo é muito gostoso, mas confesso que a &quot;Arquitetura Harvard&quot; não me apetece muito facilmente. Eu quero executar a RAM! Hahaha! Outra coisa legal que saiu do FLISOL foi a idéia de termos uma oficina &quot;itinerante&quot; de Arduino, realizando uma reunião por mês, cada vez em uma instituição de ensino diferente. Vamos ver como isso vai rolar. Acho que vai ser muito bom.&lt;br /&gt;&lt;br /&gt;Pra finalizar, nosso colega &lt;a href=&quot;http://casemodder.com.br/?p=3888&quot; target=&quot;_blank&quot;&gt;Felipe Baptista&lt;/a&gt; disponibilizou &lt;a href=&quot;https://www.dropbox.com/sh/v4tgd68cel1orcu/VOp9QROdGK/FLISOL%202013&quot; target=&quot;_blank&quot;&gt;algumas fotos do evento&lt;/a&gt;.</content:encoded>
	<dc:date>2013-05-23T05:00:00+00:00</dc:date>
</item>
<item rdf:about="http://codemonkey.org.uk/?p=476">
	<title>Dave Jones: daily log May 22nd 2013.</title>
    <link>http://codemonkey.org.uk/2013/05/22/daily-log-may-22nd-2013/</link>
	<content:encoded>&lt;p&gt;Going to try and continue yesterdays daily log format for a while.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grumbled at openvpn changing pathname for ‘plugin’ to ‘plugins’ breaking my vpn script.
&lt;/li&gt;&lt;li&gt;Bugzilla seemed unhappy. Gave up trying to look at it after it kept timing out.
&lt;/li&gt;&lt;li&gt;Continued poking at the XFS assertion from yesterday. Downgraded the compiler from f19′s 4.8.0 to 4.7.3. No luck. Couldn’t reproduce on 3.9, so started bisecting. Seemed to be caused by a patch I added recently to work around another XFS bug (slab corruption). I can’t win. Dave Chinner confused by my diagnosis. Bisect take 2 on that tomorrow.
&lt;/li&gt;&lt;li&gt;Vince Weaver posted a &lt;a href=&quot;https://github.com/deater/perf_event_tests/tree/master/fuzzer&quot;&gt;perf_event fuzzer&lt;/a&gt; based on trinity. Spent a while reading it over. Neat. Glad to see people taking an idea and running with it in new directions. The more test programs the better.
&lt;/li&gt;&lt;li&gt;Diagnosed yesterdays “microcode loader got slow” bug. Turned out that I had somehow inadvertently set CONFIG_FW_LOADER_USER_HELPER, which incurs a 60 second timeout.
&lt;/li&gt;&lt;li&gt;While waiting for bisections, looked over some bugs in coverity’s database. Around 1500 untriaged. Would like to find time to work on that some at some point.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Spent so much of the day bisecting/building/rebooting that I didn’t write much new code today. Ho-hum.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/22/daily-log-may-22nd-2013/&quot;&gt;daily log May 22nd 2013.&lt;/a&gt; is a post from: &lt;a href=&quot;http://codemonkey.org.uk&quot;&gt;codemonkey.org.uk&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;yarpp-related-rss&quot;&gt;
&lt;p&gt;Related posts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/21/a-day-in-the-life/&quot; rel=&quot;bookmark&quot; title=&quot;a day in the life..&quot;&gt;a day in the life..&lt;/a&gt; &lt;small&gt;Got back from vacation today (since last Thursday). Here’s how...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/03/22/weekly-fedora-kernel-bug-statistics-march-22nd-2013/&quot; rel=&quot;bookmark&quot; title=&quot;Weekly Fedora kernel bug statistics – March 22nd 2013&quot;&gt;Weekly Fedora kernel bug statistics – March 22nd 2013&lt;/a&gt; &lt;small&gt;  17 18 19 rawhide   Open: 359 422 8...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2012/06/22/weekly-fedora-kernel-bug-statistics-june-22nd-2012/&quot; rel=&quot;bookmark&quot; title=&quot;Weekly Fedora kernel bug statistics – June 22nd 2012&quot;&gt;Weekly Fedora kernel bug statistics – June 22nd 2012&lt;/a&gt; &lt;small&gt;  15 16 17 rawhide   Open: 99 581 174...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-23T03:51:12+00:00</dc:date>
</item>
<item rdf:about="http://www.adriansoliard.com/?p=473">
	<title>Adrian Soliard: Sincronizando archivos con UNISON en Fedora</title>
    <link>http://www.adriansoliard.com/2013/05/22/synchronizing-unison-fedora/</link>
	<content:encoded>&lt;p&gt;Yo almacenaba casi todos mis archivos en mi computadora de escritorio, otros archivos los tenía en mi notebook, que tenía menos espacio, y otros los sincronizaba automáticamente con Dropbox; Esto se terminó cuando cambie la notebook, y ahora ésta tiene más espacio que la computadora de escritorio, pero almacenar todo en la notebook es algo peligroso e inseguro, por lo cual, solo quiero que los datos estén en las 2 pc.&lt;br /&gt;
Hay diversas alternativas para realizar sincronizaciones automáticas (la mayoría pagas), en mi caso, decidí usar &lt;a href=&quot;http://www.cis.upenn.edu/~bcpierce/unison/&quot; target=&quot;_blank&quot; title=&quot;Unison File Sinchronizer&quot;&gt;UNISON&lt;/a&gt;, una aplicación multiplataforma que permite realizar las sincronizaciones entre 2 anfitriones, o tambien entre 2 directorios locales.&lt;/p&gt;
&lt;p&gt;Sincronizar, según la &lt;a href=&quot;http://buscon.rae.es/drae/srv/search?id=EizugCEyTDXX2pMts9vl&quot; target=&quot;_blank&quot; title=&quot;Sincronizar&quot;&gt;Real Academia Española&lt;/a&gt;, significa “Hacer que coincidan en el tiempo dos o más movimientos o fenómenos.”, por lo tanto, eso es exactamente lo que hace Unison, los cambios son propagados de forma bidireccional, es decir, archivos que estan en el host a y no estan en el host b, se copian, y viceversa; Además, compara las fechas de los archivos para detectar, obviamente, cual es más reciente.&lt;/p&gt;
&lt;p&gt;Unison, como comenté anteriormente, permite hacer sincronizaciones entre directorios locales, y entre diferentes anfitriones utilizando &lt;a href=&quot;http://es.wikipedia.org/wiki/Secure_Shell&quot; target=&quot;_blank&quot; title=&quot;Secure Shell - Wikipedia, la enciclopedia libre&quot;&gt;SSH (Secure Shell)&lt;/a&gt;, &lt;a href=&quot;http://es.wikipedia.org/wiki/Rsh&quot; target=&quot;_blank&quot; title=&quot;RSH - Wikipedia, la enciclopedia libre&quot;&gt;RSH (Remote Shell)&lt;/a&gt; y &lt;a href=&quot;http://es.wikipedia.org/wiki/Socket_de_Internet&quot; target=&quot;_blank&quot; title=&quot;Socket de Internet - Wikipedia, la enciclopedia libre&quot;&gt;TCP (por Socket)&lt;/a&gt;. Al ser SSH el metodo más seguro, es el que elegí para operar, y el que usaremos en esta sencilla guía.&lt;span id=&quot;more-473&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Instalamos UNISON&lt;/strong&gt;&lt;br /&gt;
Unison se encuentra en los repositorios de Fedora, así que lo instalamos sencillamente con el siguiente comando&lt;p&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;su -c ‘yum install unison’&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Creamos el/los perfiles de sincronización&lt;/strong&gt;&lt;br /&gt;
Unison trabaja por perfiles, los cuales configuramos para especificar cuales son los directorios a sincronizar.&lt;p&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lo ejecutamos, y, ahora no recuerdo bien si la primera vez fue así, pero creo que automáticamente se ejecutaba el asistente para agregar un perfil, si no es así, apretamos “Añadir” para iniciar el asistente de creación.&lt;/li&gt;
&lt;li&gt;En la primer pantalla, que es solo una introducción, apretamos “Adelante”.&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-105508.png&quot; alt=&quot;UNISON-01&quot; height=&quot;552&quot; class=&quot;aligncenter size-full wp-image-505&quot; width=&quot;920&quot; /&gt;&lt;/li&gt;
&lt;li&gt;A continuación, nos pide que completemos el nombre del perfil y una descripción del mismo. Completamos y le damos siguiente.&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-105541.png&quot; alt=&quot;UNISON-02&quot; height=&quot;552&quot; class=&quot;aligncenter size-full wp-image-506&quot; width=&quot;921&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Después, nos pide que seleccionemos el tipo de conexión, en donde podemos elegir Local, SSH, RSH y por conexión TCP.&lt;br /&gt;
imagen&lt;p&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Perfiles de sincronización en forma Local&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Seguimos los pasos que enumeramos anteriormente, seleccionamos “Local” de la lista de tipos de conexión y le damos “adelante”&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-115822.png&quot; alt=&quot;UNISON-03&quot; height=&quot;556&quot; class=&quot;aligncenter size-full wp-image-507&quot; width=&quot;922&quot; /&gt;&lt;/li&gt;
&lt;li&gt;A continuación, deberemos detallar los directorios involucrados en la sincronización, lo hacemos y le damos a “Adelante”&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-121554.png&quot; alt=&quot;UNISON-04&quot; height=&quot;551&quot; class=&quot;aligncenter size-full wp-image-508&quot; width=&quot;916&quot; /&gt;&lt;/li&gt;
&lt;li&gt;En mi caso, estoy por sincronizar directorios que estan en particiones NTFS, por lo tanto, activo el checkbox que configura el perfil para que trabaje sin utilizar los permisos que usa GNU/Linux&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-123039.png&quot; alt=&quot;UNISON-05&quot; height=&quot;553&quot; class=&quot;aligncenter size-full wp-image-509&quot; width=&quot;920&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Finalmente, Unison nos informa que terminamos de configurar el perfíl, y que apretemos “Aplicar” para crearlo.&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-123215.png&quot; alt=&quot;UNISON-06&quot; height=&quot;555&quot; class=&quot;aligncenter size-full wp-image-510&quot; width=&quot;920&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perfiles de sincronización en forma remota con SSH&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Seguimos los pasos que enumeramos anteriormente, seleccionamos “SSH” de la lista de tipos de conexión, el contenido de la ventana se extenderá, y ahora solicitará que le introduzcamos el host, que puede ser el nombre o la dirección IP del equipo al cual nos queremos conectar, y el nombre de usuario con el cual nos identificaremos en dicho equipo.&lt;br /&gt;
Tambien, podemos activar un checkbox para que Unison comprima los archivos que se envían, como dice el software, es bueno para conexiones lentas, pero hace más lentas las conexiones rápidas.&lt;br /&gt;
Luego de configurar esto, avanzamos&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-232425.png&quot; alt=&quot;UNISON-07&quot; height=&quot;624&quot; class=&quot;aligncenter size-full wp-image-512&quot; width=&quot;906&quot; /&gt;&lt;/li&gt;
&lt;li&gt;A continuación, deberemos configurar los directorios que sincronizaremos. El local lo seleccionamos, el remoto debemos escribirlo, por lo cual, es necesario saber previamente el nombre del directorio. Pueden corroborarlo haciendo una conexión SSH por consola.&lt;br /&gt;
Después de esto, seguimos&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-232430.png&quot; alt=&quot;UNISON-08&quot; height=&quot;623&quot; class=&quot;aligncenter size-full wp-image-513&quot; width=&quot;907&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Al igual que en ejemplo anterior, en el que hacemos una sincronización de forma local, debemos configurar el perfil para trabajar con particiones NTFS o FAT, o mejor dicho, para que excluya el tratamiento de permisos de archivos que GNU/Linux utiliza. En mi caso, utilizo particiones NTFS en la sincronización, así que lo activo.&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-232707.png&quot; alt=&quot;UNISON-09&quot; height=&quot;627&quot; class=&quot;aligncenter size-full wp-image-514&quot; width=&quot;909&quot; /&gt;&lt;/li&gt;
&lt;li&gt;A continuación, basta con apretar “Aplicar” y listo, ya terminamos de configurar el perfil para sincronizar directorios por SSH.&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-232957.png&quot; alt=&quot;UNISON-10&quot; height=&quot;621&quot; class=&quot;aligncenter size-full wp-image-515&quot; width=&quot;906&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Realizamos una sincronización.&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;Ejecutamos un perfil de sincronización, seleccionándolo de la lista y haciendo clic en “Abrir”.&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-123346.png&quot; alt=&quot;Captura de pantalla de 2013-05-21 12:33:46&quot; height=&quot;533&quot; class=&quot;aligncenter size-full wp-image-511&quot; width=&quot;910&quot; /&gt;&lt;br /&gt;
&lt;center&gt;&lt;em&gt;&lt;strong&gt;Al abrir uno de los perfiles creados para sincronizar por SSH, se nos pedirá una contraseña para iniciar la sesión.&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-233823.png&quot; alt=&quot;UNISON-11&quot; height=&quot;495&quot; class=&quot;aligncenter size-full wp-image-516&quot; width=&quot;908&quot; /&gt;&lt;br /&gt;
&lt;/strong&gt;&lt;/em&gt;&lt;/center&gt;&lt;/li&gt;
&lt;li&gt;Cuando realizamos la sincronización por primera vez, se muestra una ventana como la siguiente, que explica que no existen archivos historicos de sincronizaciones, y que eso se debe a que, o no se han realizado sincronizaciones aún, o se actualizó la version de Unison y esta no reconoce los archivos historicos; Por lo cual, Unison asume que el archivo historico está completamente vacio.&lt;center&gt;&lt;strong&gt;&lt;strong&gt;&lt;em&gt;&lt;strong&gt;&lt;em&gt;&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-21-233947.png&quot; alt=&quot;UNISON-12&quot; height=&quot;600&quot; class=&quot;aligncenter size-full wp-image-517&quot; width=&quot;908&quot; /&gt;&lt;/em&gt;&lt;/strong&gt;La primera vez que se realizan sincronizaciones, este proceso demora mucho.&lt;/em&gt;&lt;/strong&gt;&lt;/strong&gt; 
&lt;p&gt;&lt;/p&gt;&lt;/center&gt;&lt;/li&gt;
&lt;li&gt;Finalizada la comparación, se muestra una lista, la cual ajustó automáticamente los cambios a realizar, los cuales podemos modificar.&lt;br /&gt;
Revisamos bien los cambios que se van a realizar, podemos saltar cambios (“skip”, que pasa por alto la fila, no realiza cambios), y elegir el reemplazo y copiado en ambas direcciones.&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-22-111940.png&quot; alt=&quot;UNISON-14&quot; height=&quot;744&quot; class=&quot;aligncenter size-full wp-image-519&quot; width=&quot;1366&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Una vez que controlamos los cambios a realizar, apretamos el botón “Go”, y comienza la sincronización.&lt;/li&gt;
&lt;li&gt;Después de terminar de copiar los archivos, nos aparecerá una ventana informando que la sincronización finalizó, y un pequeño sumario, el cual podemos extender.&lt;br /&gt;
&lt;img src=&quot;http://www.adriansoliard.com/media//2013/05/Captura-de-pantalla-de-2013-05-22-113206.png&quot; alt=&quot;UNISON-15&quot; height=&quot;741&quot; class=&quot;aligncenter size-full wp-image-520&quot; width=&quot;1366&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Así de simple es utilizar Unison, luego de haber ejecutado por primera vez un perfil el punto 3.2 finaliza más rápido.&lt;br /&gt;
Un punto importante a tener en cuenta es que Unison debe estar instalado en ambos equipos, si es que se realiza la sincronización en forma remota.&lt;br /&gt;
En esta guía trabajamos con Unison GUI, es decir, con entorno gráfico, pero tambien se puede utilizar por consola (&lt;em&gt;Estoy considerando utilizar Unison por linea de comandos en conjunto “cron”, para automátizar sincronizaciones y backups&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Espero les haya servido.&lt;/p&gt;
&lt;p&gt;Saludos&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-23T01:03:33+00:00</dc:date>
</item>
<item rdf:about="http://mether.wordpress.com/?p=418">
	<title>Rahul Sundaram: Subtitleripper is back</title>
    <link>http://mether.wordpress.com/2013/05/23/subtitleripper-is-back/</link>
	<content:encoded>&lt;p&gt;Subtitleripper is now available again for RPM Fusion. I was trying to fudge out of sync subtitles for a bunch of videos and found srttool to be a handy script recommended in several places but unfortunately upstream has been dead for quite sometime and it was orphaned in RPM Fusion due to failure to build from source.  I have taken some patches out of Debian, Ubuntu and Gentoo packages and pushed a cleaner build of the package for Rawhide,  Fedora 19 and 18 (updates-testing repo for the latter two).   There are some other tools in the package too.  Hopefully it is a benefit to some users.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/mether.wordpress.com/418/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/mether.wordpress.com/418/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=mether.wordpress.com&amp;amp;blog=8042356&amp;amp;post=418&amp;amp;subd=mether&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-22T23:02:41+00:00</dc:date>
</item>
<item rdf:about="http://danwalsh.livejournal.com/64493.html">
	<title>Dan Walsh: New Security Feature in Fedora 19 Part 3: Hard Link/Soft Link Protection</title>
    <link>http://danwalsh.livejournal.com/64493.html</link>
	<content:encoded>It is surprising to most people who understand Linux and Unix that you are allowed to Hard Link to any file on the OS as long as it is on the same file system.&lt;br /&gt;Hard linking means that you can put the same Inode number into two different directories.  Prior to Fedora 19, a normal user would be allowed to do something like:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt; ln /etc/shadow ~/shadow&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Even though the /etc/shadow is owned by root.  Then if the user tricked an administrator into doing something like&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;# chown -R  dwalsh:dwalsh ~&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This would cause the /etc/shadow file to be owned by dwalsh.&lt;br /&gt;&lt;br /&gt;Similarly in the past hackers have tricked privileged applications to follow hard and soft links, created in a user account to compromise the system.&lt;br /&gt;&lt;br /&gt;Kees Cook wrote some patches for the linux kernel that allows distributions to disable this behaviour.&lt;br /&gt;&lt;br /&gt;Here is Kees Description of the benefits of the patch:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style=&quot;color: #777777;&quot;&gt;This patch adds symlink and hardlink restrictions to the Linux VFS.

Symlinks:

A long-standing class of security issues is the symlink-based time-of-check-time-of-use race, most commonly seen in world-writable
directories like /tmp. The common method of exploitation of this flaw is to cross privilege boundaries when following a given symlink (i.e. a
root process follows a symlink belonging to another user). For a likely incomplete list of hundreds of examples across the years, please see:
http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp

The solution is to permit symlinks to only be followed when outside a sticky world-writable directory, or when the uid of the symlink and
follower match, or when the directory owner matches the symlink's owner.

&amp;lt;snip&amp;gt;

Hardlinks:

On systems that have user-writable directories on the same partition as system files, a long-standing class of security issues is the
hardlink-based time-of-check-time-of-use race, most commonly seen in world-writable directories like /tmp. The common method of exploitation
of this flaw is to cross privilege boundaries when following a given hardlink (i.e. a root process follows a hardlink created by another
user). Additionally, an issue exists where users can &quot;pin&quot; a potentially vulnerable setuid/setgid file so that an administrator will not actually
upgrade a system fully.

The solution is to permit hardlinks to only be created when the user is already the existing file's owner, or if they already have read/write
access to the existing file.

Many Linux users are surprised when they learn they can link to files they have no access to, so this change appears to follow the doctrine
of &quot;least surprise&quot;. Additionally, this change does not violate POSIX, which states &quot;the implementation may require that the calling process
has permission to access the existing file&quot;[1].

This change is known to break some implementations of the &quot;at&quot; daemon, though the version used by Fedora and Ubuntu has been fixed[2] for
a while. Otherwise, the change has been undisruptive while in use in Ubuntu for the last 1.5 years.

&amp;lt;snip&amp;gt;&lt;/span&gt;

This feature is turned on by default in /usr/lib/sysctl.d/50-default.conf in F19.

grep fs /usr/lib/sysctl.d/50-default.conf 
fs.protected_hardlinks = 1
fs.protected_symlinks = 1

There was some concern that this could cause problems in applications that expect this behaviour, so it can be disabled.
But overall, I think it is a positive feature for Fedora.

&lt;/pre&gt;</content:encoded>
	<dc:date>2013-05-22T17:42:52+00:00</dc:date>
</item>
<item rdf:about="http://major.io/?p=4306">
	<title>Major Hayden: Migrate KVM virtual machines from CentOS 6 to Fedora 18 without the luxury of shared storage</title>
    <link>http://major.io/2013/05/22/migrate-kvm-virtual-machines-from-centos-6-to-fedora-18-without-the-luxury-of-shared-storage/</link>
	<content:encoded>&lt;p&gt;I’ve converted one of my KVM hypervisors from CentOS 6 to Fedora 18 and now comes the task of migrating my virtual machines off of my single remaining CentOS 6 hypervisor.  This is definitely on a budget, so there’s no shared storage to make this process easier.&lt;/p&gt;
&lt;p&gt;Here’s how I did it:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Migrate the logical volume&lt;/strong&gt;&lt;br /&gt;
My first VM to migrate is my Fedora development VM where I build and test new packages.  I have a 10G logical volume on the old node:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html&quot;&gt;[root@helium ~]# lvs /dev/mapper/vg_helium-fedora--dev 
  LV         VG        Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
  fedora-dev vg_helium -wi-a--- 10.00g&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I made a 10G logical volume on the new hypervisor:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html&quot;&gt;[root@hydrogen ~]# lvcreate -n fedora-dev -L10G vg_hydrogen
  Logical volume &quot;fedora-dev&quot; created&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;After getting ssh keys set up between both hypervisors and installing &lt;a href=&quot;http://linux.die.net/man/1/pv&quot;&gt;&lt;code&gt;pv&lt;/code&gt;&lt;/a&gt; (to track progress), I started the storage migration over ssh:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html&quot;&gt;dd if=/dev/mapper/vg_helium-fedora--dev | pv | ssh hydrogen dd of=/dev/mapper/vg_hydrogen-fedora--dev&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Luckily it was only a 10GB logical volume so it transferred over in a few minutes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dump and adjust the source VM’s XML&lt;/strong&gt;&lt;br /&gt;
On the source server, I dumped the VM configuration to an XML file and copied it to the new host:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html&quot;&gt;virsh dumpxml fedora-dev &amp;gt; fedora-dev.xml
scp fedora-dev.xml hydrogen:&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Before importing the XML file on the new host, there are some adjustments that need to be made.  First off was an adjustment of the storage volume since the new host had the same logical volume name but a different volume group (the source line):&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;xml&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;disk&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'block'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;device&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'disk'&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;driver&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'qemu'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'raw'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;cache&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'none'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;io&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'native'&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/driver&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;source&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;dev&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'/dev/vg_hydrogen/fedora-dev'&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;target&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;dev&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'vda'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;bus&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'virtio'&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/target&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;address&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'pci'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;domain&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'0x0000'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;bus&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'0x00'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;slot&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'0x05'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;function&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'0x0'&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/address&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/disk&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Also, there’s a mismatch with the machine type (not architecture) between CentOS 6 and Fedora 18.  I dumped the XML from a VM running on the Fedora 18 hypervisor and compared the machine type to my old CentOS VM’s XML (the XML from the CentOS VM is on top):&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;xml&quot;&gt;-    &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;type&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;arch&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'x86_64'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;machine&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'rhel6.3.0'&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;hvm&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/type&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
+    &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;type&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;arch&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'x86_64'&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;machine&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;'pc-1.2'&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;hvm&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/type&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I replaced &lt;code&gt;rhel6.3.0&lt;/code&gt; with &lt;code&gt;pc-1.2&lt;/code&gt;.  &lt;em&gt;If you forget this step, your VM won’t start.&lt;/em&gt;  You’ll get some errors about a mismatched machine type before the VM boots.&lt;/p&gt;
&lt;p&gt;There’s one last fix: the path to the &lt;code&gt;qemu-kvm&lt;/code&gt; emulator:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;xml&quot;&gt;-    &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;emulator&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;/usr/libexec/qemu-kvm&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/emulator&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
+    &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;emulator&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;/usr/bin/qemu-kvm&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;/emulator&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Replace &lt;code&gt;/usr/libexec/qemu-kvm&lt;/code&gt; with &lt;code&gt;/usr/bin/qemu-kvm&lt;/code&gt; and save your XML file.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Import the VM configuration and launch the VM&lt;/strong&gt;&lt;br /&gt;
Importing the VM on the Fedora 18 hypervisor was easy:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html&quot;&gt;virsh define fedora-dev.xml&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That causes the configuration to load into libvirt and it should appear in &lt;code&gt;virt-manager&lt;/code&gt; or &lt;code&gt;virsh list&lt;/code&gt; by this point.  If not, double check your previous steps and look for error messages in your logs.  That doesn’t actually start the virtual machine, so I started it on the command line:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html&quot;&gt;virsh start fedora-dev&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Within a few moments, the VM was up and responding to pings.&lt;/p&gt;
&lt;p&gt;It’s a good idea to hop into &lt;code&gt;virt-manager&lt;/code&gt; and verify that the VM configuration is what you expect.  Some configuration options don’t line up terribly well between CentOS 6 and Fedora 18.  You might need to adjust a few to match the performance you expect to see.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://major.io/2013/05/22/migrate-kvm-virtual-machines-from-centos-6-to-fedora-18-without-the-luxury-of-shared-storage/&quot;&gt;Migrate KVM virtual machines from CentOS 6 to Fedora 18 without the luxury of shared storage&lt;/a&gt; is a post from: &lt;a href=&quot;http://major.io&quot;&gt;Major Hayden's&lt;/a&gt; blog. 
&lt;/p&gt;&lt;p&gt;Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-22T15:15:36+00:00</dc:date>
</item>
<item rdf:about="http://fossjon.wordpress.com/?p=951">
	<title>Jon Chiappetta: Pidora 18 (Raspberry Pi Fedora Remix) Release</title>
    <link>http://fossjon.wordpress.com/2013/05/22/pidora-18-raspberry-pi-fedora-remix-release/</link>
	<content:encoded>&lt;pre&gt;Pidora 18 (Raspberry Pi Fedora Remix) Release

We're excited to announce the release of Pidora 18 -- 
an optimized Fedora Remix for the Raspberry Pi. 
It is based on a brand new build of Fedora for the ARMv6 
architecture with greater speed and includes packages 
from the Fedora 18 package set.

* * *

There are some interesting new features we'd like to highlight: 
* Almost all of the Fedora 18 package set available via yum 
    (thousands of packages were built from the official Fedora 
    repository and made available online)
* Compiled specifically to take advantage of the hardware already 
    built into the Raspberry Pi
* Graphical firstboot configuration (with additional modules 
    specifically made for the Raspberry Pi)
* Compact initial image size (for fast downloads) and auto-resize 
    (for maximum storage afterwards)
* Auto swap creation available to allow for larger memory usage
* C, Python, &amp;amp; Perl programming languages available &amp;amp; included 
    in the SD card image
* Initial release of headless mode can be used with setups 
    lacking a monitor or display
* IP address information can be read over the speakers and 
    flashed with the LED light
* For graphical operation, Gedit text editor can be used with 
    plugins (python console, file manager, syntax highlighting) 
    to serve as a mini-graphical IDE
* For console operation, easy-to-use text editors are included 
    (nled, nano, vi) plus Midnight Commander for file management
* Includes libraries capable of supporting external hardware 
    such as motors and robotics (via GPIO, I2C, SPI)

* * *

For further documentation, downloads, faq's, read-me's, 
    how-to's, tutorials, or videos: 

http://pidora.ca/

* * *

Pidora 18 is a Fedora Remix -- a combination of software packages 
from the Fedora Project with other software.

The Fedora Project is a global community of contributors working 
to advance open source software. For more information or to join 
the Fedora Project, see http://fedoraproject.org

Pidora is a project of the Seneca Centre for Development of Open 
Technology (CDOT). To connect with CDOT, please visit 

http://cdot.senecacollege.ca

The Raspberry Pi is a small, inexpensive computer board designed 
to provoke curiosity and experimentation in programming and 
computer electronics. For more information, see the Raspberry 
Pi Foundation website at http://raspberrypi.org

* * *


- - -
The CDOT team at Seneca College
&lt;/pre&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/fossjon.wordpress.com/951/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/fossjon.wordpress.com/951/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=fossjon.wordpress.com&amp;amp;blog=22796108&amp;amp;post=951&amp;amp;subd=fossjon&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-22T15:11:28+00:00</dc:date>
</item>
<item rdf:about="http://cecinestpasunefromage.wordpress.com/?p=151">
	<title>Jon Ciesla: Quick review, willing to swap</title>
    <link>http://cecinestpasunefromage.wordpress.com/2013/05/22/quick-review-willing-to-swap/</link>
	<content:encoded>&lt;p&gt;openvpn stopped including easy-rsa as of 2.3.x, so I’ve packaged it and it’s ready for review:  &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=966139&quot; title=&quot;Review&quot;&gt;https://bugzilla.redhat.com/show_bug.cgi?id=966139&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’ll review on of yours in return.  Thanks in advance!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/cecinestpasunefromage.wordpress.com/151/&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://feeds.wordpress.com/1.0/comments/cecinestpasunefromage.wordpress.com/151/&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;img src=&quot;http://stats.wordpress.com/b.gif?host=cecinestpasunefromage.wordpress.com&amp;amp;blog=34472042&amp;amp;post=151&amp;amp;subd=cecinestpasunefromage&amp;amp;ref=&amp;amp;feed=1&quot; alt=&quot;&quot; height=&quot;1&quot; border=&quot;0&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2013-05-22T14:54:47+00:00</dc:date>
</item>
<item rdf:about="tag:blogger.com,1999:blog-3511301649044744817.post-1254687433994968589">
	<title>Fabian Deutsch: SimpleHTTPPutServer in python</title>
    <link>http://dummdida.blogspot.com/2013/05/simplehttpputserver-in-python.html</link>
	<content:encoded>Sometimes a small HTTP server which can be used with&lt;br /&gt;&lt;pre&gt;$ curl -T dafile dahost.local&lt;br /&gt;&lt;/pre&gt;is handy. You can use it to upload small logfiles etc without any authentication, so something like tftp.&lt;br /&gt;&lt;br /&gt;Python's own SimpleHTTPServer is a simple webserver, but it only supports GET and HEAD requests.&lt;br /&gt;By simply deriving from that class you can create a small server supporting PUT.&lt;br /&gt;&amp;lt;script src=&quot;https://gist.github.com/fabiand/5628006.js&quot;&amp;gt;&amp;lt;/script&amp;gt;</content:encoded>
	<dc:date>2013-05-22T14:36:26+00:00</dc:date>
</item>
<item rdf:about="http://blog.printf.net/?p=40302">
	<title>Chris Ball: Technical talks should be recorded</title>
    <link>http://blog.printf.net/articles/2013/05/22/technical-talks-should-be-recorded/</link>
	<content:encoded>&lt;p&gt;I’ve picked up an interest in JavaScript and HTML5 this year, and have gone to a bunch of great technical talks in Boston. I brought a camera with me and recorded some of them, so you can see them too if you like. Here they are:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=EdfLA_wKUF8&quot;&gt;Rick Waldron – The Future of JavaScript&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;510&quot; src=&quot;http://www.youtube.com/embed/EdfLA_wKUF8&quot; width=&quot;854&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=6uao8bvW2Bg&quot;&gt;Mike Pennisi – Stress Testing Realtime Node.js Apps&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;510&quot; src=&quot;http://www.youtube.com/embed/6uao8bvW2Bg&quot; width=&quot;854&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=19g4n0ZxiYM&quot;&gt;Paul Irish – The Mobile Web Is In Deep Trouble&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;510&quot; src=&quot;http://www.youtube.com/embed/19g4n0ZxiYM&quot; width=&quot;854&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=JNSy1roM82k&quot;&gt;Daniel Rinehart – Debugging Node.js Applications&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;510&quot; src=&quot;http://www.youtube.com/embed/JNSy1roM82k&quot; width=&quot;854&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=RTsaIfFZglA&quot;&gt;Ian Johnson – Prototyping data visualizations in d3.js&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;510&quot; src=&quot;http://www.youtube.com/embed/RTsaIfFZglA&quot; width=&quot;854&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=HiRk4DeuSYE&quot;&gt;Kenneth Reitz – Heroku 101&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;iframe allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot; height=&quot;510&quot; src=&quot;http://www.youtube.com/embed/HiRk4DeuSYE&quot; width=&quot;854&quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/p&gt;
&lt;p&gt;I think these are world-class talks. But if I hadn’t brought my little camera with me and recorded them, they would be destroyed. No-one else offered to record them, even though they were popular — the Paul Irish talk had 110 people signed up to attend, and more than the same number again waitlisted who couldn’t go because they wouldn’t fit in the room. So there were more people &lt;em&gt;in Boston&lt;/em&gt; who didn’t get to see the talk (but wanted to) than who did, even before we start counting the rest of the world’s interest in technical talks.&lt;/p&gt;
&lt;p&gt;I’m happy that I’m able to help disseminate knowledge from Boston, which has an abundance of incredibly smart people living here or visiting, to wherever in the world you’re reading from now. But I’m also sad, because there are far more talks that I &lt;em&gt;don’t&lt;/em&gt; go to here, and I expect most of those aren’t being recorded.&lt;/p&gt;
&lt;p&gt;We’re technologists, right? So this should be easy. It’s not like I went to video camera school:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The equipment I’m using (Panasonic Lumix G2 camera and Lumix 20mm &lt;em&gt;f&lt;/em&gt;/1.7 lens) costs under USD $800. Maybe it could be cheaper; maybe a recent cellphone (HTC One or Galaxy S4?) would be adequate.&lt;/li&gt;
&lt;li&gt;I use a $20 tripod which is half broken.&lt;/li&gt;
&lt;li&gt;I don’t use an external audio recorder (just the camera’s microphone) so the audio is noisier than it could be.&lt;/li&gt;
&lt;li&gt;My camera’s sensor is small so it doesn’t have great low-light performance, and it records 720p instead of 1080p.&lt;/li&gt;
&lt;li&gt;Sometimes the refresh rate/frequency of the projector is out of sync with the camera and there are strobing colors going across the screen in the final video. I don’t think I can do anything about this on the camera’s side?&lt;/li&gt;
&lt;li&gt;I don’t do any editing because I don’t have time; I just upload the raw video file to YouTube and use YouTube’s “crop” feature to trim the start and end, that’s it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’d really like to know what the right answer is here. Am I overestimating how important it is to record these, and how privileged I am to be somewhere where there’s an interesting talk happening almost every day? Is owning a device that can record HD video for around 90 mins rare, even amongst well-paid developers and designers? If the presenter just recorded a screencast of their laptop with audio from its microphone, is that good enough or is that too boring for a full-length talk?&lt;/p&gt;
&lt;p&gt;Might part of the problem be that people don’t know how to find videos of technical talks (I don’t know how anyone would find these unless they were randomly searching YouTube) so there isn’t as much demand as there should be — is there a popular website for announcing new recordings of tech talks somewhere? Maybe I just need to write up a document that describes how to record talks with a minimum of hassle and make sure people see it? Do we need to make a way for someone to signify their interest in having an upcoming talk be recorded, so that a team of volunteer videographers could offer to help with that?&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-22T08:19:34+00:00</dc:date>
</item>
<item rdf:about="http://codemonkey.org.uk/?p=472">
	<title>Dave Jones: a day in the life..</title>
    <link>http://codemonkey.org.uk/2013/05/21/a-day-in-the-life/</link>
	<content:encoded>&lt;p&gt;Got back from vacation today (since last Thursday). Here’s how I spent the day.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Caught up (skimmed) the 1500 postings to Linux-kernel and related mailing lists that had accumulated.
&lt;/li&gt;&lt;li&gt;Reviewed, applied and cleaned up my patch backlog for trinity.
&lt;/li&gt;&lt;li&gt;Caught up with direct mail that needed a response.
&lt;/li&gt;&lt;li&gt;Brought my test machines up to 3.10rc2, and restarted tests.
&lt;/li&gt;&lt;li&gt;Caught another pair of RCU/nohz bugs pretty quickly. &lt;a href=&quot;https://lkml.org/lkml/2013/5/21/327&quot;&gt;[1]&lt;/a&gt;&lt;a href=&quot;https://lkml.org/lkml/2013/5/21/510&quot;&gt;[2]&lt;/a&gt;.
&lt;/li&gt;&lt;li&gt;Checked on the RMA for my failed SSD. Still awaiting shipment of replacement.
&lt;/li&gt;&lt;li&gt;Received my &lt;a href=&quot;http://www.amazon.com/gp/product/B009OLJD0Y/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B009OLJD0Y&amp;amp;linkCode=as2&amp;amp;tag=codemonkeyorg-20&quot;&gt;ultrabay adaptor for my thinkpad&lt;/a&gt;. Surprised to find out that a full height SSD would fit into it.
&lt;/li&gt;&lt;li&gt;Pushed out a 3.9.3 update for F18
&lt;/li&gt;&lt;li&gt;Looked at bugzilla backlog. Swore a lot. 3.9.x rebase bugs started to trickle in.
&lt;/li&gt;&lt;li&gt;Rewrote a bunch of code surrounding trinity’s rand() usage.
&lt;/li&gt;&lt;li&gt;Finally got F19 installed via NFS on new test machine.
&lt;/li&gt;&lt;li&gt;Hit an &lt;a href=&quot;https://lkml.org/lkml/2013/5/21/477&quot;&gt;XFS assertion&lt;/a&gt;.
&lt;/li&gt;&lt;li&gt;Then hit an &lt;a href=&quot;https://lkml.org/lkml/2013/5/21/483&quot;&gt;i915 pineview kms console blanking&lt;/a&gt; bug.
&lt;/li&gt;&lt;li&gt;Noticed that x86 microcode loading had &lt;a href=&quot;https://lkml.org/lkml/2013/5/21/481&quot;&gt;gotten really slow&lt;/a&gt;. It seems to be waiting a whole 60 seconds for each core.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/05/21/a-day-in-the-life/&quot;&gt;a day in the life..&lt;/a&gt; is a post from: &lt;a href=&quot;http://codemonkey.org.uk&quot;&gt;codemonkey.org.uk&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;yarpp-related-rss&quot;&gt;
&lt;p&gt;Related posts:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/04/02/trinity-success-rate/&quot; rel=&quot;bookmark&quot; title=&quot;Trinity success rate.&quot;&gt;Trinity success rate.&lt;/a&gt; &lt;small&gt;Last week I mentioned that March had been a busy...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2013/03/01/39-merge-window-fallout/&quot; rel=&quot;bookmark&quot; title=&quot;3.9 merge window fallout (so far)&quot;&gt;3.9 merge window fallout (so far)&lt;/a&gt; &lt;small&gt;The 3.9 merge window opened up earlier this week. Here’s...&lt;/small&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://codemonkey.org.uk/2012/05/30/finding-ancient-bugs-trinity/&quot; rel=&quot;bookmark&quot; title=&quot;finding ancient bugs with trinity.&quot;&gt;finding ancient bugs with trinity.&lt;/a&gt; &lt;small&gt;I’ve continued development on my system call fuzzer over the...&lt;/small&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;</content:encoded>
	<dc:date>2013-05-22T03:36:41+00:00</dc:date>
</item>
<item rdf:about="http://cicku.me/?p=2059">
	<title>Christopher Meng: freecode-submit is now in Fedora – Submit your projects now!</title>
    <link>http://cicku.me/freecode-submit-fedora-submit-projects-now/</link>
	<content:encoded>&lt;p&gt;Wow….Freshmeat before, right?&lt;/p&gt;
&lt;p&gt;I often use freecode.com to search for the software suitable for packaging, it’s simple and applied. Every people can submit their release information to freecode.com. But there should be an easy way, so Eric S. Raymond wrote this program. freecode-submit is a script that supports remote submission of release updates to Freecode via its JSON API. It is intended for use in project release scripts. It reads the metadata from an RFC-2822-like message on standard input, possibly with overrides by command-line switches.&lt;/p&gt;
&lt;p&gt;Now I’ve packaged it into Fedora, just try:&lt;/p&gt;&lt;pre class=&quot;crayon-plain-tag&quot;&gt;yum install freecode-submit&lt;/pre&gt;&lt;p&gt;An submit your nice work now!&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-22T02:40:20+00:00</dc:date>
</item>
<item rdf:about="http://ankursinha.in/blog/?p=1328">
	<title>Ankur Sinha "FranciscoD": Reminder: Questionnaire and nomination dead lines</title>
    <link>http://ankursinha.in/blog/2013/05/22/reminder-questionnaire-and-nomination-dead-lines/</link>
	<content:encoded>&lt;p&gt;A gentle reminder on the deadlines for the elections:&lt;/p&gt;
&lt;p&gt;The questionnaire closes on &lt;strong&gt;May 23 at 23:59 UTC.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The nominations close on &lt;strong&gt;May 25 at 23:59 UTC.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Please add your questions and nominations to the &lt;a href=&quot;https://fedoraproject.org/wiki/Elections&quot; target=&quot;_blank&quot; title=&quot;https://fedoraproject.org/wiki/Elections&quot;&gt;wiki pages&lt;/a&gt; before the period runs out. &lt;/p&gt;
&lt;p&gt;Naming will close tonight, &lt;strong&gt;May 22 at 23:59 UTC&lt;/strong&gt; too. If you have &lt;a href=&quot;https://fedoraproject.org/wiki/Name_suggestions_for_Fedora_20&quot; target=&quot;_blank&quot; title=&quot;https://fedoraproject.org/wiki/Name_suggestions_for_Fedora_20&quot;&gt;names to suggest for Fedora 20&lt;/a&gt;, please update the wiki page.&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-22T02:36:35+00:00</dc:date>
</item>
<item rdf:about="http://major.io/?p=4293">
	<title>Major Hayden: Handling terminal color escape sequences in less</title>
    <link>http://major.io/2013/05/21/handling-terminal-color-escape-sequences-in-less/</link>
	<content:encoded>&lt;p&gt;This post is a quick one but I wanted to share it since I taught it to someone new today.  When you have bash output with colors, &lt;code&gt;less&lt;/code&gt; doesn’t handle the color codes properly by default:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html&quot;&gt;$ colordiff chunk/functions.php chunk-old/functions.php | less
ESC[0;32m22a23,27ESC[0;0m
ESC[0;34m&amp;gt;       * Load up our functions for grabbing content from postsESC[0;0m
ESC[0;34m&amp;gt;       */ESC[0;0m
ESC[0;34m&amp;gt;      require( get_template_directory() . '/content-grabbers.php' );ESC[0;0m
ESC[0;34m&amp;gt; ESC[0;0m&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Toss in the &lt;code&gt;-R&lt;/code&gt; flag and you’ll be able to see the colors properly (no colors to see here, but use your imagination):&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html&quot;&gt;$ colordiff chunk/functions.php chunk-old/functions.php | less -R
22a23,27
&amp;gt;        * Load up our functions for grabbing content from posts
&amp;gt;        */
&amp;gt;       require( get_template_directory() . '/content-grabbers.php' );
&amp;gt; 
&amp;gt;       /**&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;a href=&quot;http://linux.die.net/man/1/less&quot;&gt;man page&lt;/a&gt; for &lt;code&gt;less&lt;/code&gt; explains the feature in greater detail:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre style=&quot;font-family: monospace;&quot; class=&quot;html&quot;&gt;-R or --RAW-CONTROL-CHARS
       Like -r, but only ANSI &quot;color&quot; escape sequences are output in &quot;raw&quot; form.  Unlike -r, the screen appear-
       ance is maintained correctly in most cases.  ANSI &quot;color&quot; escape sequences are sequences of the form:
            ESC [ ... m
       where the &quot;...&quot; is zero or more color specification characters For  the  purpose  of  keeping  track  of
       screen  appearance,  ANSI  color escape sequences are assumed to not move the cursor.  You can make less
       think that characters other than &quot;m&quot; can end ANSI color escape  sequences  by  setting  the  environment
       variable  LESSANSIENDCHARS to the list of characters which can end a color escape sequence.  And you can
       make less think that characters other than the standard ones may appear between the ESC  and  the  m  by
       setting the environment variable LESSANSIMIDCHARS to the list of characters which can appear.&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;http://major.io/2013/05/21/handling-terminal-color-escape-sequences-in-less/&quot;&gt;Handling terminal color escape sequences in less&lt;/a&gt; is a post from: &lt;a href=&quot;http://major.io&quot;&gt;Major Hayden's&lt;/a&gt; blog. 
&lt;/p&gt;&lt;p&gt;Thanks for following the blog via the RSS feed. Please don't copy my posts or quote portions of them without attribution.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</content:encoded>
	<dc:date>2013-05-22T02:33:00+00:00</dc:date>
</item>

</rdf:RDF>
