<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ELEVATION Dev Blog &#187; Home</title>
	<atom:link href="http://dev.elevationblog.com/category/home/feed/" rel="self" type="application/rss+xml" />
	<link>http://dev.elevationblog.com</link>
	<description></description>
	<lastBuildDate>Fri, 09 Apr 2010 00:43:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>all day events in event calendar</title>
		<link>http://dev.elevationblog.com/2009/12/10/all-day-events-in-event-calendar/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=all-day-events-in-event-calendar</link>
		<comments>http://dev.elevationblog.com/2009/12/10/all-day-events-in-event-calendar/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 20:26:13 +0000</pubDate>
		<dc:creator>Jeff Schuil</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://dev.elevationblog.com/?p=1597</guid>
		<description><![CDATA[Some events don&#8217;t start and stop at specific times, but instead last all day. We&#8217;ve had this option when creating events in our application(s), but until now it wasn&#8217;t visually apparent when shown in EventCalendar, a rails plugin. Now we have a new use_all_day option! When set to true, the plugin checks if the event [...]]]></description>
			<content:encoded><![CDATA[<p>Some events don&#8217;t start and stop at specific times, but instead last all day. We&#8217;ve had this option when creating events in our application(s), but until now it wasn&#8217;t visually apparent when shown in <a href="http://github.com/elevation/event_calendar/">EventCalendar</a>, a rails plugin.</p>
<p>Now we have a new <em>use_all_day</em> option!</p>
<p>When set to true, the plugin checks if the event is all day and/or multiple days. If it is, then it will display with the usual background color bar. Otherwise it just shows the event text using its color. (Similar to many popular calendar programs.)</p>
<p>For more info check out: the <a href="http://dev.elevationblog.com/wp-content/uploads/2009/12/cal-times.png">screenshot</a>, <a href="http://dev.elevationblog.com/2009/07/23/event-calendar-rails-plugin/">homepage</a>, and <a href="http://github.com/elevation/event_calendar">github</a> (<a href="http://github.com/elevation/event_calendar/commit/d3acae4586d38a235bc00d0a26f2d6f62f55252d">commit</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.elevationblog.com/2009/12/10/all-day-events-in-event-calendar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Event Calendar HTML Generation Rewrite</title>
		<link>http://dev.elevationblog.com/2009/11/23/event-calendar-html-generation-rewrite/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=event-calendar-html-generation-rewrite</link>
		<comments>http://dev.elevationblog.com/2009/11/23/event-calendar-html-generation-rewrite/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 02:31:23 +0000</pubDate>
		<dc:creator>Jeff Schuil</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://dev.elevationblog.com/?p=1587</guid>
		<description><![CDATA[The Event Calendar rails plugin (see: post &#38; github) we created a few months back has been working great and, thanks to all the feedback, the bugs have pretty much been worked out. There was one annoying limitation, however: The width couldn&#8217;t be set arbitrarily. Well, no longer. I completely re-wrote the HTML and CSS [...]]]></description>
			<content:encoded><![CDATA[<p>The Event Calendar rails plugin (see: <a href="http://dev.elevationblog.com/2009/07/23/event-calendar-rails-plugin/">post</a> &amp; <a href="http://github.com/elevation/event_calendar">github</a>) we created a few months back has been working great and, thanks to all the feedback, the bugs have pretty much been worked out. There was one annoying limitation, however:</p>
<p><strong>The width couldn&#8217;t be set arbitrarily</strong>.</p>
<p>Well, no longer. I completely re-wrote the HTML and CSS styling that the helper generates. Events are now table columns which span the calendar days. The calendar grid is also a table, not a background image which needed to be created whenever setting a non-default width.</p>
<p>This means you can give the calendar any width, or don&#8217;t set it at all and let it resize to it&#8217;s containing element. Awesome!</p>
<p>I also took the opportunity to remove some old code, comments, and options that were hanging around from the plugin&#8217;s previous lives. In some ways there is now more flexibility to customize, in a few ways less. One consequence is that some of the options from before the rewrite no longer exist, so update with care.</p>
<p>Overall I&#8217;m very happy with how it turned out. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.elevationblog.com/2009/11/23/event-calendar-html-generation-rewrite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Event Calendar Rails Plugin</title>
		<link>http://dev.elevationblog.com/2009/07/23/event-calendar-rails-plugin/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=event-calendar-rails-plugin</link>
		<comments>http://dev.elevationblog.com/2009/07/23/event-calendar-rails-plugin/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 03:43:00 +0000</pubDate>
		<dc:creator>Jeff Schuil</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://elevationblog.com/2009/07/23/event-calendar-rails-plugin</guid>
		<description><![CDATA[For a recent project we needed to show events on a calendar. The existing Rails plugins we tried didn’t allow us to satisfactorily show multiple, overlapping events across calendar days and rows. I found the same complaint here and began to adapt it to our needs. I’ve extracted the result and put it on github [...]]]></description>
			<content:encoded><![CDATA[<p>For a recent project we needed to show events on a calendar. The existing Rails plugins we tried didn’t allow us to satisfactorily show multiple, overlapping events <em>across</em> calendar days and rows.</p>
<p>I found the same complaint <a href="http://www.cuppadev.co.uk/webdev/making-a-real-calendar-in-rails/">here</a> and began to adapt it to our needs.</p>
<p>I’ve extracted the result and put it on github in the hopes that others might find it useful and/or add improvements.</p>
<p><a href="http://github.com/elevation/event_calendar">http://github.com/elevation/event_calendar</a></p>
<p>The above link has more details, as well as how to install and use the plugin.</p>
<p>Here’s the 1000 word screenshot:</p>
<p style="text-align: center;"><a href="http://dev.elevationblog.com/wp-content/uploads/2009/07/cal.png"><img class="aligncenter size-medium wp-image-1531" title="Event Calendar Screenshot" src="http://dev.elevationblog.com/wp-content/uploads/2009/07/cal-300x270.png" alt="Event Calendar Screenshot" width="300" height="250" /></a></p>
<p>Using the <em>use_all_day</em> option:</p>
<p style="text-align: center;"><a href="http://dev.elevationblog.com/wp-content/uploads/2009/12/cal-times.png"><img class="aligncenter size-medium wp-image-1595" title="Event Calendar using all day option" src="http://dev.elevationblog.com/wp-content/uploads/2009/12/cal-times-300x223.png" alt="Event Calendar using all day option" width="300" height="223" /></a></p>
<p><strong>PLEASE</strong>:</p>
<ul>
<li>Submit bugs or feature requests at <a href="http://github.com/elevation/event_calendar/issues">GitHub Issues</a></li>
<li>Ask questions at the <a href="http://groups.google.com/group/event-calendar-plugin">Google Group</a></li>
</ul>
<p>Thanks and enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.elevationblog.com/2009/07/23/event-calendar-rails-plugin/feed/</wfw:commentRss>
		<slash:comments>87</slash:comments>
		</item>
		<item>
		<title>amend git commit</title>
		<link>http://dev.elevationblog.com/2009/02/04/amend-git-commit/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=amend-git-commit</link>
		<comments>http://dev.elevationblog.com/2009/02/04/amend-git-commit/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 23:03:00 +0000</pubDate>
		<dc:creator>Jeff Schuil</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://elevationblog.com/2009/02/04/amend-git-commit</guid>
		<description><![CDATA[Thanks to the beauty of local git repositories, I no longer worry about committing. So what if things aren&#8217;t pretty, its just a snapshot of my work in progress. When I push to remote, however, its a good idea to clean up these commits. Up till now I&#8217;ve been using git rebase -i which, while [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to the beauty of local git repositories, I no longer worry about committing. So what if things aren&#8217;t pretty, its just a snapshot of my work in progress.</p>
<p>When I push to remote, however, its a good idea to clean up these commits. Up till now I&#8217;ve been using git rebase -i which, while very handy, can be a bit of overkill for my normal workflow.</p>
<p>Instead I can use
<pre>git commit --amend</pre>
<p> to squash my new changes into the latest commit. This is what I&#8217;ve usually been doing with rebase -i anyways.</p>
<p>And making a new git alias removes the extra typing.</p>
<p>Git &#8216;R done</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.elevationblog.com/2009/02/04/amend-git-commit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>validate image dimensions with paperclip</title>
		<link>http://dev.elevationblog.com/2009/01/31/validate-image-dimensions-with-paperclip/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=validate-image-dimensions-with-paperclip</link>
		<comments>http://dev.elevationblog.com/2009/01/31/validate-image-dimensions-with-paperclip/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 02:48:00 +0000</pubDate>
		<dc:creator>Jared</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[paperclip]]></category>

		<guid isPermaLink="false">http://elevationblog.com/2009/01/31/validate-image-dimensions-with-paperclip</guid>
		<description><![CDATA[I’m liking paperclip, in a recent project I chose it specifically because it buffers writes on uploads, which should help keep memory usage down. I needed to validate that an uploaded image was at least a certian size, and it was a little tricky, but here’s what I came up with: has_attached_file :image, :styles =&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>I’m liking <a href="http://www.thoughtbot.com/projects/paperclip">paperclip</a>, in a recent project I chose it specifically because it buffers writes on uploads, which should help keep memory usage down.</p>
<p>I needed to validate that an uploaded image was at least a certian size, and it was a little tricky, but here’s what I came up with:</p>
<pre class="brush: ruby">
 has_attached_file :image,
                   :styles =&gt; { :original =&gt; ["1000x600&gt;", :jpg]},
                   :whiny_thumbnails =&gt; true

 def validate
    dimensions = Paperclip::Geometry.from_file(self.image.queued_for_write[:original])
    self.errors.add(:image, "Please upload a file at least 700 pixels wide") if dimensions.width &lt; 700
    self.errors.add(:image, "Please upload a file at least 200 pixels tall") if dimensions.height &lt; 200
  end</pre>
<p>like it? hate it? have something better?</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.elevationblog.com/2009/01/31/validate-image-dimensions-with-paperclip/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>redmine and git</title>
		<link>http://dev.elevationblog.com/2009/01/15/redmine-and-git/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=redmine-and-git</link>
		<comments>http://dev.elevationblog.com/2009/01/15/redmine-and-git/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 20:54:00 +0000</pubDate>
		<dc:creator>Jared</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://elevationblog.com/2009/01/15/redmine-and-git</guid>
		<description><![CDATA[Over the last few months, I’ve become a big fan of Redmine. It’s just what I was looking for when I was tired of setting up a TRAC for each project but missed the source code integration when we were using Basecamp. Redmine doesn’t look very pretty at first, but there’s some good themes (we [...]]]></description>
			<content:encoded><![CDATA[<p>Over the last few months, I’ve become a big fan of <a href="http://www.redmine.org/">Redmine</a>.  It’s just what I was looking for when I was tired of setting up a <span class="caps">TRAC</span> for each project but missed the source code integration when we were using Basecamp.  Redmine doesn’t look very pretty at first, but there’s some good themes (we use the basecamp inspired theme) that make it much better.</p>
<p>When we started using git, it brought some new issues up with our workflow and redmine, and we’re  <a href="http://www.redmine.org/boards/1/topics/show/1702#message-2178">not the only ones</a> .  Some people are just changing and making the repository on their redmine server their “central” repository, but our redmine is hosted locally, and our repositories for each project are hosted on the deployment machine.  This causes some problems because the redmine repo doesn’t receive updates.</p>
<p>There’s a <a href="http://github.com/mwilliams/redmine-git-extras-plugin">plugin</a> aimed at solving this, but it’s not functional yet. We solved it with a quick hack to run a git pull before redmine brings in new information from the repository:</p>
<pre class="brush: diff">
Index: app/models/repository/git.rb
===================================================================
--- app/models/repository/git.rb (revision 2251)
+++ app/models/repository/git.rb (working copy)
@@ -36,6 +36,7 @@
end

def fetch_changesets
+ scm.fetch
scm_info = scm.info
if scm_info
# latest revision found in database
Index: lib/redmine/scm/adapters/git_adapter.rb

===================================================================
--- lib/redmine/scm/adapters/git_adapter.rb (revision 2251)
+++ lib/redmine/scm/adapters/git_adapter.rb (working copy)
@@ -24,6 +24,11 @@

# Git executable name
GIT_BIN = "git"
+
+ def fetch
+ cmd="#{GIT_BIN} --git-dir #{target('')} --bare fetch"
+ shellout(cmd)
+ end

# Get the revision of a particuliar file
def get_rev (rev,path)</code></pre>
<p>Simple, but functional. Give us a shout if this helps you or if you have a better solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.elevationblog.com/2009/01/15/redmine-and-git/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>rspec+rcov = segfault death</title>
		<link>http://dev.elevationblog.com/2008/11/14/rspec-rcov-segfault-death/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rspec-rcov-segfault-death</link>
		<comments>http://dev.elevationblog.com/2008/11/14/rspec-rcov-segfault-death/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 23:25:00 +0000</pubDate>
		<dc:creator>Jared</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[gotchas]]></category>
		<category><![CDATA[rcov]]></category>
		<category><![CDATA[rspec]]></category>

		<guid isPermaLink="false">http://elevationblog.com/2008/11/14/rspec-rcov-segfault-death</guid>
		<description><![CDATA[I was pounding my head against the keyboard. Rspec with rcov was crashing whenever it felt like it. I was getting all kinds of errors like: /opt/local/lib/ruby/gems/1.8/gems/rspec-1.1.11/lib/spec/matchers/be.rb:92: [BUG] rb_gc_mark(): unknown data type 0×0(0×489ffc8) non object ruby 1.8.6 (2007-09-24) [i686-darwin9.3.0] opt/local/lib/ruby/gems/1.8/gems/rspec-1.1.11/lib/spec/example/example_group_methods.rb:344: [BUG] Segmentation fault ruby 1.8.6 (2007-09-24) [i686-darwin9.3.0] not to mention a bus error or two [...]]]></description>
			<content:encoded><![CDATA[<p>I was pounding my head against the keyboard.  Rspec with rcov was crashing whenever it felt like it.  I was getting all kinds of errors like:</p>
<pre class="brush: bash">/opt/local/lib/ruby/gems/1.8/gems/rspec-1.1.11/lib/spec/matchers/be.rb:92: [BUG] rb_gc_mark(): unknown data type 0×0(0×489ffc8) non object
ruby 1.8.6 (2007-09-24) [i686-darwin9.3.0]

opt/local/lib/ruby/gems/1.8/gems/rspec-1.1.11/lib/spec/example/example_group_methods.rb:344: [BUG] Segmentation fault
ruby 1.8.6 (2007-09-24) [i686-darwin9.3.0]</pre>
<p>not to mention a bus error or two as well.</p>
<p>Then I found <a href="http://mergulhao.info/2008/8/29/rcov-with-segfault-bug-patched">this article</a> with this solution:</p>
<pre class="brush: bash">$ gem sources -a http://gems.github.com (you only have to do this once)
$ sudo gem install mergulhao-rcov</pre>
<p>from <a href="http://tomcopeland.blogs.com/juniordeveloper/2008/08/rcov-crashing-w.html">this guy</a>.</p>
<p>Then the world was right again.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.elevationblog.com/2008/11/14/rspec-rcov-segfault-death/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>giving back</title>
		<link>http://dev.elevationblog.com/2008/10/17/giving-back/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=giving-back</link>
		<comments>http://dev.elevationblog.com/2008/10/17/giving-back/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 12:35:00 +0000</pubDate>
		<dc:creator>Jared</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[ideology]]></category>
		<category><![CDATA[activemerchant]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://elevationblog.com/2008/10/15/giving-back</guid>
		<description><![CDATA[Recently I had a need to implement an on-demand payment model with a payment processor (Cybersource). I use the Active Merchant plugin for transaction operations almost exclusively, and nobody had added support for Cybersource subscriptions or on demand payments. So I implemented it myself over the last couple days, and published the code on github [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I had a need to implement an on-demand payment model with a payment processor (<a href="http://cybersource.com">Cybersource</a>).  I use the <a href="http://activemerchant.org">Active Merchant</a> plugin for transaction operations almost exclusively, and nobody had added support for Cybersource subscriptions or on demand payments.  So I implemented it myself over the last couple days, and published the code on <a href="http://github.com/elevation/active_merchant">github</a> .</p>
<p>Currently it supports creating subscriptions, updating subscriptions (which is also how you cancel), and preforming a purchase (auth+capture) via subscription.  I&#8217;m willing to implement other things like credits, straight auths and captures if there&#8217;s a community need.  There&#8217;s not much in the way of docs yet (like most of Active Merchant), but it&#8217;s working for me.  I&#8217;d also be willing to write a post on using the features I added, just drop a not in the comments if you would like to see that.</p>
<p>I&#8217;ll be submitting a patch soon, and hopefully this will get pulled into the official ActiveMerchant repository.  This is the first real open source contribution we&#8217;ve made at <span class="caps">ELEVATION</span> (most things we need we find are already done), and it feels good to give back.  You should try it.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.elevationblog.com/2008/10/17/giving-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>getting git</title>
		<link>http://dev.elevationblog.com/2008/10/15/getting-git/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=getting-git</link>
		<comments>http://dev.elevationblog.com/2008/10/15/getting-git/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 05:31:00 +0000</pubDate>
		<dc:creator>Jared</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[ideology]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://elevationblog.com/2008/10/15/getting-git</guid>
		<description><![CDATA[I&#8217;ve been hesitant to explore git since subversion was (I thought) really handling all my needs just fine. Why waste time learning another version control workflow? Over time, I started to realize there were things about git that would be really nice, like nice branching and merging in particular, but I thought, that&#8217;s for some [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been hesitant to explore <a href="http://git.or.cz/">git</a> since <a href="http://subversion.tigris.org/">subversion</a> was (I thought) really handling all my needs just fine.  Why waste time learning another version control workflow?</p>
<p>Over time, I started to realize there were things about git that would be really nice, like nice branching and merging in particular, but I thought, that&#8217;s for some day when I have time to learn it, or my pain becomes too great with branches (which I don&#8217;t use that often in svn).</p>
<p>Just a couple days ago I needed to extend some code that was hosted on github, so I forked it, cloned it, and just started to work.  In that process I&#8217;m discovering things that are just making git start to click.  Whoops, didn&#8217;t mean to commit that yet: git-reset.  I need to pull in some other changes, but can&#8217;t yet because I have uncommitted changes: git-stash.</p>
<p>Combined with the <a href="http://gitorious.org/projects/git-tmbundle">git bundle for textmate</a>, I&#8217;m actually having fun learning git.</p>
<p>Moral: Try new stuff (in a real-life scenario), it&#8217;s fun and can make your life better.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.elevationblog.com/2008/10/15/getting-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSource Court Ruling</title>
		<link>http://dev.elevationblog.com/2008/08/15/opensource-copyright-2/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=opensource-copyright-2</link>
		<comments>http://dev.elevationblog.com/2008/08/15/opensource-copyright-2/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 15:59:00 +0000</pubDate>
		<dc:creator>Jared</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[misc]]></category>

		<guid isPermaLink="false">http://elevationblog.com/2008/10/15/opensource-copyright-2</guid>
		<description><![CDATA[The U.S. Court of Appeals for the Federal Circuit ruled that licenses used for OpenSource projects can be enforceable under copyright law. Here are some excerpts from the summary document published by the Court: &#8230; Open Source software projects invite computer programmers from around the world to view software code and make changes and improvements [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.cafc.uscourts.gov/opinions/08-1001.pdf">U.S. Court of Appeals for the Federal Circuit</a> ruled that licenses used for OpenSource projects can be enforceable under copyright law.</p>
<p>Here are some excerpts from the summary document published by the Court:</p>
<blockquote>
<p>&#8230; Open Source software projects invite computer programmers from around the world<br />
to view software code and make changes and improvements to it.  Through such<br />
collaboration, software programs can often be written and debugged faster and at lower<br />
cost than if the copyright holder were required to do all of the work independently.  In<br />
exchange and in consideration for this collaborative work, the copyright holder permits<br />
users to copy, modify and distribute the software code subject to conditions that serve to<br />
protect downstream users and to keep the code accessible &#8230;</p>
<p>&#8230; Traditionally, copyright owners sold their copyrighted material in exchange for<br />
money.  The lack of money changing hands in open source licensing should not be<br />
presumed to mean that there is no economic consideration, however.  There are<br />
substantial benefits, including economic benefits, to the creation and distribution of<br />
copyrighted works under public licenses that range far beyond traditional license royalties.<br />
For example, program creators may generate market share for their programs by providing<br />
certain components free of charge.  Similarly, a programmer or company may increase its<br />
national or international reputation by incubating open source projects.  Improvement to a<br />
product can come rapidly and free of charge from an expert not even known to the<br />
copyright holder &#8230;</p>
<p>&#8230; Generally, a copyright owner who grants a nonexclusive license to use his copyrighted material waives his right to sue the licensee for copyright infringement and can sue only for breach of contract. If, however, a license is limited in scope and the licensee acts outside the scope, the licensor can bring an action for copyright infringement &#8230;</p>
<p><font="-2"><a href="http://www.cafc.uscourts.gov/opinions/08-1001.pdf">Source: Jacobsen v. Katzer Appeals Summary</a></font></p>
</blockquote>
<p><b>Copyright holders who engage in open source licensing have the right to control the<br />
modification and distribution of copyrighted material.  A copyright holder can grant the right to make certain modifications, yet retain his right to prevent other modifications.</b></p>
<p>This decision is important because it reduces the legal uncertainty regarding OpenSource rights and will make it a more attractive option for software development and OpenSource distribution models.</p>
<p>Elevation continues to support the OpenSource ideology. Litigation about OpenSource is rare<br />
so it&#8217;s good to have this legal precedent on the books. August 2008 will likely be looked back on as the start of the next wave of OpenSource collaboration.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.elevationblog.com/2008/08/15/opensource-copyright-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
