feed-abstract 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -19,7 +19,7 @@ begin
19
19
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
21
  s.require_paths = ["lib"]
22
- s.add_development_dependency "rspec"
22
+ s.add_development_dependency("rspec",['>= 0'])
23
23
  s.extra_rdoc_files = [
24
24
  "README.rdoc"
25
25
  ]
@@ -28,3 +28,31 @@ rescue LoadError
28
28
  puts "Jeweler, or one of its dependencies, is not available."
29
29
  end
30
30
 
31
+ Jeweler::RubygemsDotOrgTasks.new
32
+
33
+ require 'rake/testtask'
34
+ Rake::TestTask.new(:test) do |test|
35
+ test.libs << 'lib' << 'test'
36
+ test.pattern = 'test/**/test_*.rb'
37
+ test.verbose = true
38
+ end
39
+
40
+ require 'rcov/rcovtask'
41
+ Rcov::RcovTask.new do |test|
42
+ test.libs << 'test'
43
+ test.pattern = 'test/**/test_*.rb'
44
+ test.verbose = true
45
+ test.rcov_opts << '--exclude "gems/*"'
46
+ end
47
+
48
+ task :default => :test
49
+
50
+ require 'rake/rdoctask'
51
+ Rake::RDocTask.new do |rdoc|
52
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
53
+
54
+ rdoc.rdoc_dir = 'rdoc'
55
+ rdoc.title = "footest #{version}"
56
+ rdoc.rdoc_files.include('README*')
57
+ rdoc.rdoc_files.include('lib/**/*.rb')
58
+ end
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = "feed-abstract"
8
- s.version = "0.0.6"
7
+ s.name = %q{feed-abstract}
8
+ s.version = "0.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Daniel Collis-Puro"]
12
- s.date = "2011-09-15"
13
- s.description = "This library creates a common object graph for the RSS/Atom/RDF parsing classes in the ruby standard library. This allows you parse different feed formats and get back the same (or at least a very similar) set of results - item authors are accessible under an \"author(s)\" attribute, categories/tags/subjects are accessible under \"category(ies)\" attributes, etc. We do our best to make sure the data makes sense, too - RSS items lack an \"updated\" attribute, so we use \"pubDate\" to populate it. "
14
- s.email = ["djcp@cyber.law.harvard.edu"]
11
+ s.authors = [%q{Daniel Collis-Puro}]
12
+ s.date = %q{2011-09-16}
13
+ s.description = %q{This library creates a common object graph for the RSS/Atom/RDF parsing classes in the ruby standard library. This allows you parse different feed formats and get back the same (or at least a very similar) set of results - item authors are accessible under an "author(s)" attribute, categories/tags/subjects are accessible under "category(ies)" attributes, etc. We do our best to make sure the data makes sense, too - RSS items lack an "updated" attribute, so we use "pubDate" to populate it. }
14
+ s.email = [%q{djcp@cyber.law.harvard.edu}]
15
15
  s.extra_rdoc_files = [
16
16
  "README.rdoc"
17
17
  ]
@@ -38,6 +38,7 @@ Gem::Specification.new do |s|
38
38
  "spec/feed_abstract_item_spec.rb",
39
39
  "spec/feed_abstract_spec.rb",
40
40
  "spec/spec_helper.rb",
41
+ "spec/test_data/chillingeffects.xml",
41
42
  "spec/test_data/djcp.rss",
42
43
  "spec/test_data/djcp.rss92",
43
44
  "spec/test_data/djcp_code.rss",
@@ -49,11 +50,11 @@ Gem::Specification.new do |s|
49
50
  "spec/test_data/pyblosxom.atom",
50
51
  "spec/test_data/zotero.rss"
51
52
  ]
52
- s.homepage = "https://github.com/berkmancenter/feed-abstract"
53
- s.rdoc_options = ["--charset=UTF-8"]
54
- s.require_paths = ["lib"]
55
- s.rubygems_version = "1.8.10"
56
- s.summary = "Abstracts RSS/Atom/RDF parsing features from the ruby standard lib into a common object graph."
53
+ s.homepage = %q{https://github.com/berkmancenter/feed-abstract}
54
+ s.rdoc_options = [%q{--charset=UTF-8}]
55
+ s.require_paths = [%q{lib}]
56
+ s.rubygems_version = %q{1.8.6}
57
+ s.summary = %q{Abstracts RSS/Atom/RDF parsing features from the ruby standard lib into a common object graph.}
57
58
 
58
59
  if s.respond_to? :specification_version then
59
60
  s.specification_version = 3
@@ -62,33 +63,15 @@ Gem::Specification.new do |s|
62
63
  s.add_runtime_dependency(%q<feed-abstract>, [">= 0"])
63
64
  s.add_development_dependency(%q<rspec>, [">= 0"])
64
65
  s.add_development_dependency(%q<rspec>, [">= 0"])
65
- s.add_development_dependency(%q<rspec>, [">= 0"])
66
- s.add_development_dependency(%q<rspec>, [">= 0"])
67
- s.add_development_dependency(%q<rspec>, [">= 0"])
68
- s.add_development_dependency(%q<rspec>, [">= 0"])
69
- s.add_development_dependency(%q<rspec>, [">= 0"])
70
- s.add_development_dependency(%q<rspec>, [">= 0"])
71
66
  else
72
67
  s.add_dependency(%q<feed-abstract>, [">= 0"])
73
68
  s.add_dependency(%q<rspec>, [">= 0"])
74
69
  s.add_dependency(%q<rspec>, [">= 0"])
75
- s.add_dependency(%q<rspec>, [">= 0"])
76
- s.add_dependency(%q<rspec>, [">= 0"])
77
- s.add_dependency(%q<rspec>, [">= 0"])
78
- s.add_dependency(%q<rspec>, [">= 0"])
79
- s.add_dependency(%q<rspec>, [">= 0"])
80
- s.add_dependency(%q<rspec>, [">= 0"])
81
70
  end
82
71
  else
83
72
  s.add_dependency(%q<feed-abstract>, [">= 0"])
84
73
  s.add_dependency(%q<rspec>, [">= 0"])
85
74
  s.add_dependency(%q<rspec>, [">= 0"])
86
- s.add_dependency(%q<rspec>, [">= 0"])
87
- s.add_dependency(%q<rspec>, [">= 0"])
88
- s.add_dependency(%q<rspec>, [">= 0"])
89
- s.add_dependency(%q<rspec>, [">= 0"])
90
- s.add_dependency(%q<rspec>, [">= 0"])
91
- s.add_dependency(%q<rspec>, [">= 0"])
92
75
  end
93
76
  end
94
77
 
@@ -12,7 +12,7 @@ module FeedAbstract
12
12
  # The authors list as an array.
13
13
  def authors
14
14
  return [] if @feed.channel.dc_publishers.empty?
15
- @feed.channel.dc_publishers.reject{|au| au == '' || au.match(/^\s+$/)}
15
+ @feed.channel.dc_publishers.collect{|dcp| dcp.content}.reject{|au| au == '' || au.match(/^\s+$/)}
16
16
  end
17
17
 
18
18
  # The authors list as a string, joined with a comma.
@@ -61,7 +61,7 @@ module FeedAbstract
61
61
  # The authors (a merge of the RSS managingEditor and dc:publisher elements) as an array.
62
62
  def authors
63
63
  return [] if @feed.channel.managingEditor.nil? && @feed.channel.dc_publishers.empty?
64
- [@feed.channel.managingEditor, @feed.channel.dc_publishers].flatten.uniq.compact.reject{|au| au == '' || au.match(/^\s+$/)}
64
+ [@feed.channel.managingEditor, ((@feed.channel.dc_publishers.empty?) ? nil : @feed.channel.dc_publishers.collect{|dcp| dcp.content})].flatten.uniq.compact.reject{|au| au == '' || au.match(/^\s+$/)}
65
65
  end
66
66
 
67
67
  # The author list joined with a comma.
@@ -73,7 +73,7 @@ module FeedAbstract
73
73
  # The category list (a merge of the RSS category and dc:subject elements) as an array.
74
74
  def categories
75
75
  return [] if @feed.channel.categories.empty? && @feed.channel.dc_subjects.empty?
76
- [@feed.channel.categories, @feed.channel.dc_subjects].flatten.uniq.compact.collect{|c| c.content}.reject{|c| c == '' || c.match(/^\s+$/)}
76
+ [@feed.channel.categories, ((@feed.channel.dc_subjects.empty?) ? nil : @feed.channel.dc_subjects)].flatten.uniq.compact.collect{|c| c.content}.reject{|c| c == '' || c.match(/^\s+$/)}
77
77
  end
78
78
 
79
79
  # The category list as a string, joined with a comma.
@@ -33,7 +33,7 @@ module FeedAbstract
33
33
 
34
34
  # The author list (a merge of the RSS author and dc:creator elements) as an array.
35
35
  def authors
36
- [@item.author, @item.dc_creators.collect{|c| c.content}].flatten.uniq.compact.reject{|au| au == '' || au.match(/^\s+$/)}
36
+ [@item.author, ((@item.dc_creators.empty?) ? nil : @item.dc_creators.collect{|c| c.content})].flatten.uniq.compact.reject{|au| au == '' || au.match(/^\s+$/)}
37
37
  end
38
38
 
39
39
  # The author list as a string, joined with a comma.
@@ -1,5 +1,5 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  module FeedAbstract
4
- VERSION = "0.0.6"
4
+ VERSION = "0.0.7"
5
5
  end
@@ -18,6 +18,7 @@ module FeedAbstract
18
18
  it { @zotero.channel.should respond_to att}
19
19
  it { @feedburner.channel.should respond_to att}
20
20
  it { @pyblosxom.channel.should respond_to att}
21
+ it { @chill.channel.should respond_to att}
21
22
 
22
23
  it { @docatom.channel.send(att).should_not == false}
23
24
  it { @kpgatom.channel.send(att).should_not == false}
@@ -28,6 +29,7 @@ module FeedAbstract
28
29
  it { @zotero.channel.send(att).should_not == false}
29
30
  it { @feedburner.channel.send(att).should_not == false}
30
31
  it { @pyblosxom.channel.send(att).should_not == false}
32
+ it { @chill.channel.send(att).should_not == false}
31
33
  end
32
34
 
33
35
  it "should have the correct title" do
@@ -40,6 +42,7 @@ module FeedAbstract
40
42
  @zotero.channel.title.should == 'Zotero / PROS Paper Group / Items'
41
43
  @feedburner.channel.title.should == 'CNN.com'
42
44
  @pyblosxom.channel.title.should == 'Copyrighteous'
45
+ @chill.channel.title.should == 'Chilling Effects Clearinghouse Weather Reports'
43
46
  end
44
47
 
45
48
  it "should have the correct subtitle and description" do
@@ -69,6 +72,9 @@ module FeedAbstract
69
72
 
70
73
  @pyblosxom.channel.description.should == "\n\n"
71
74
  @pyblosxom.channel.subtitle.should == "\n\n"
75
+
76
+ @chill.channel.description.should == 'Monitoring the legal climate for Internet activity (database of annotated cease and desist letters)'
77
+ @chill.channel.subtitle.should == 'Monitoring the legal climate for Internet activity (database of annotated cease and desist letters)'
72
78
  end
73
79
 
74
80
  it "should have the correct link" do
@@ -81,6 +87,7 @@ module FeedAbstract
81
87
  @zotero.channel.link.should == 'https://api.zotero.org/groups/52650/items'
82
88
  @feedburner.channel.link.should == 'http://www.cnn.com/?eref=rss_topstories'
83
89
  @pyblosxom.channel.link.should == 'http://mako.cc/copyrighteous'
90
+ @chill.channel.link.should == 'http://www.chillingeffects.org'
84
91
  end
85
92
 
86
93
  it "should have the correct generator" do
@@ -93,6 +100,7 @@ module FeedAbstract
93
100
  @zotero.channel.generator.should == 'Zotero'
94
101
  @feedburner.channel.generator.should == ''
95
102
  @pyblosxom.channel.generator.should == "\nPyBlosxom http://pyblosxom.sourceforge.net/ 1.5rc2 20100803\n"
103
+ @chill.channel.generator.should == ''
96
104
  end
97
105
 
98
106
  it "should have the correct language" do
@@ -105,6 +113,7 @@ module FeedAbstract
105
113
  @zotero.channel.language.should == ''
106
114
  @feedburner.channel.language.should == 'en-us'
107
115
  @pyblosxom.channel.language.should == 'en'
116
+ @chill.channel.language.should == 'en-us'
108
117
  end
109
118
 
110
119
  it "should have the correct authors" do
@@ -117,6 +126,7 @@ module FeedAbstract
117
126
  @zotero.channel.authors.should == []
118
127
  @feedburner.channel.authors.should == []
119
128
  @pyblosxom.channel.authors.should == ['Benjamin Mako Hill']
129
+ @chill.channel.authors.should == ['Wendy Seltzer, wseltzer@chillingeffects.org']
120
130
 
121
131
  @docatom.channel.author.should == 'Doc Searls'
122
132
  @kpgatom.channel.author.should == 'Nick Pappas'
@@ -127,6 +137,7 @@ module FeedAbstract
127
137
  @zotero.channel.author.should == ''
128
138
  @feedburner.channel.author.should == ''
129
139
  @pyblosxom.channel.author.should == 'Benjamin Mako Hill'
140
+ @chill.channel.author.should == 'Wendy Seltzer, wseltzer@chillingeffects.org'
130
141
 
131
142
  end
132
143
 
@@ -140,6 +151,7 @@ module FeedAbstract
140
151
  @zotero.channel.categories.should == []
141
152
  @feedburner.channel.categories.should == []
142
153
  @pyblosxom.channel.categories.should == []
154
+ @chill.channel.categories.should == ['Your rights online']
143
155
 
144
156
  @docatom.channel.category.should == ''
145
157
  @kpgatom.channel.category.should == 'photos'
@@ -150,6 +162,7 @@ module FeedAbstract
150
162
  @zotero.channel.category.should == ''
151
163
  @feedburner.channel.category.should == ''
152
164
  @pyblosxom.channel.category.should == ''
165
+ @chill.channel.category.should == 'Your rights online'
153
166
  end
154
167
 
155
168
  it "should have the correct icon" do
@@ -162,6 +175,7 @@ module FeedAbstract
162
175
  @zotero.channel.icon.should == ''
163
176
  @feedburner.channel.icon.should == 'http://i2.cdn.turner.com/cnn/.element/img/1.0/logo/cnn.logo.rss.gif'
164
177
  @pyblosxom.channel.icon.should == ''
178
+ @chill.channel.icon.should == 'http://images.chillingeffects.org/chilling_effects.gif'
165
179
  end
166
180
 
167
181
  it "should have the correct logo" do
@@ -174,6 +188,7 @@ module FeedAbstract
174
188
  @zotero.channel.logo.should == ''
175
189
  @feedburner.channel.logo.should == 'http://i2.cdn.turner.com/cnn/.element/img/1.0/logo/cnn.logo.rss.gif'
176
190
  @pyblosxom.channel.logo.should == ''
191
+ @chill.channel.logo.should == 'http://images.chillingeffects.org/chilling_effects.gif'
177
192
  end
178
193
 
179
194
  it "should have the correct rights" do
@@ -186,6 +201,7 @@ module FeedAbstract
186
201
  @zotero.channel.rights.should == ''
187
202
  @feedburner.channel.rights.should == ' 2011 Cable News Network LP, LLLP.'
188
203
  @pyblosxom.channel.rights.should == 'Creative Commons Attribution-ShareAlike'
204
+ @chill.channel.rights.should == ''
189
205
  end
190
206
 
191
207
  it "should have the correct updated value" do
@@ -198,6 +214,7 @@ module FeedAbstract
198
214
  @zotero.channel.updated.should == Time.parse('2011-09-02T17:16:11Z')
199
215
  @feedburner.channel.updated.should == Time.parse('Sat, 03 Sep 2011 16:14:16 EDT')
200
216
  @pyblosxom.channel.updated.should == Time.parse('2011-09-15T05:21:00Z')
217
+ @chill.channel.updated.should == Time.parse('2002-02-25T12:00+00:00')
201
218
  end
202
219
 
203
220
  it "should have the correct guid" do
@@ -210,6 +227,7 @@ module FeedAbstract
210
227
  @zotero.channel.guid.should == 'http://zotero.org/groups/52650/items'
211
228
  @feedburner.channel.guid.should == 'http://www.cnn.com/?eref=rss_topstories'
212
229
  @pyblosxom.channel.guid.should == 'http://mako.cc/copyrighteous/'
230
+ @chill.channel.guid.should == 'http://www.chillingeffects.org'
213
231
  end
214
232
  end
215
233
  end
@@ -31,6 +31,7 @@ module FeedAbstract
31
31
  @zoteroitem.title.should == 'An experimental application of the Delphi method to the use of experts'
32
32
  @feedburneritem.title.should == 'Did Libya help CIA with renditions of terror suspects?'
33
33
  @pyblosxomitem.title.should == "Anxiety\n"
34
+ @chillitem.title.should == "Takedown Complaints in the Android Marketplace"
34
35
 
35
36
  end
36
37
 
@@ -48,6 +49,7 @@ module FeedAbstract
48
49
  </div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/sV5N-C76mOM" height="1" width="1"/>|
49
50
 
50
51
  @pyblosxomitem.summary.should == ""
52
+ @chillitem.summary.should == %Q$<br>\n<img src=\"//images.chillingeffects.org/thermometer.gif\" alt=\"thermometer\" width=\"35\" height=\"120\"align=left> <h2>Takedown Complaints in the Android Marketplace</h2><p>Wendy Seltzer, <i>Chilling Effects Clearinghouse</i>, March 3, 2011\n<p><i>Abstract:</i> Earlier this year, Google began sending to Chilling Effects the requests it received for takedown from the Android Marketplace. Since this represents a new source of data, we take a look at the first month's input, February 2011.<hr size=1>\n<p><hr size=1 width=\"75%\"><p>Since Apple launched its iPhone App Store, applications marketplaces have popped up with increasing prominence. Google, unlike Apple<a href=\"#note1\" name=\"back\">*</a>, does not lock Android users into purchasing from its <a href=\"https://market.android.com/\">Android Market</a>, but it does make that marketplace a convenient place to find Android applications (<a href=\"http://mashable.com/2010/10/25/android-100000-apps/\">passing 100,000 apps</a> late last year). <br><p><br>In February, Chilling Effects <a href=\"https://www.chillingeffects.org/search.cgi?search=Android\">saw</a> 206 complaints to Google regarding Android Market apps, almost evenly split between trademark and copyright.<a href=\"#note2\" name=\"back2\">*</a> Because the Android Market offers commercial transactions, its context differs somewhat from the search and blog hosting in which DMCA -- copyright -- complaints predominate. At the same time, many apps are offered free of charge.<p><br><img src=\"https://chart.googleapis.com/chart?cht=pc&chtt=Complaint+Subjects+to+Android+Market+(Feb+2011)&chs=750x400&chd=t:111,97,3|0.59,0.31,0.05,0.03,0.02,0.02,0.02,0.38,0.11,0.1,0.07,0.03,0.03,0.02,0.02,0.02,0.01,0.01,0.22&chl=[TM]|[C]||Trademark%20%20(59)|Facebook%20Trademark%20%20(31)|Bank%20Trademark%20%20(5)|SXSW%20Trademark%20%20(3)|Trademarks%20and%20Videos%20Copyright%20%20(2)|Game%20Trademark%20%20(2)|Disney%20Trademark%20and%20Copyright%20%20(2)|Game%20Copyright%20%20(38)|Software%20Copyright%20%20(11)|Logo%20Copyright%20%20(10)|Copyright%20%20(7)|Books%20Copyright%20%20(3)|Images%20Copyright%20%20(3)|Articles%20Copyright%20%20(2)|Television%20Copyright%20%20(2)|UFC%20Copyright%20%20(2)|Photo%20Copyright%20%20(1)|Website%20Copyright%20%20(1)|Other/Unidentified%20(22)&chco=0000FF,003333&chp=3.14\" title=\"Complaint Subjects to Google's Android Market, Feb. 2011\"><p>Slightly more than half of the complaints here claim trademark infringement: misleading use of a mark (word or logo) to cause consumer confusion about the application's source or sponsorship. Facebook led the way, challenging 30+ apps that borrowed its name or \"f\" logo (e.g. <a href=\"/trademark/notice.cgi?NoticeID=56735\">Facebook Trademark Complaint to Google: Android Market</a>). Banks and financial institutions challenged applications that used their logos, even to offer a mobile version of the bank's own site. Here is trademark as the law of consumer protection: you want to be sure an unauthorized Wells Fargo application won't channel your deposit into its coffers rather than your savings account. Google even filed several complaints against apps in its marketplace that were a bit too free with the Google name. Starbucks used copyright in its logo to similar end, requesting takedown or alteration of apps that used the coffee company's logo as their icon (e.g. <a href=\"/dmca512c/notice.cgi?NoticeID=60149\">Logo DMCA (Copyright) Complaint to Google: Android Market</a>). Some, including <a href=\"https://market.android.com/details?id=com.birbeck.starbuckscard\">My Coffee Card</a> (formerly Starbucks Card Widget) changed their name and icon in response.<p>Sometimes, these complaints didn't do much to allege \"likelihood of consumer confusion,\" the traditional hallmark of trademark infringement. South By SouthWest's complaint against the \"Unauthorized SXSW\" party scheduler app -- <a href=\"/trademark/notice.cgi?NoticeID=60951\">SXSW Trademark Complaint to Google: Android Market</a> -- sounds like an overstep, into nominative fair use. There's no good alternative way to refer to the big conference/music festival in Austin later in March, and \"unauthorized\" plainly indicates it's not an officially endorsed product. (Neither Unofficial SXSW nor the official \"SXSW&reg; GO\" gets particularly high marks from reviewers yet, but that may be because the event hasn't yet kicked off to fill them with data.)<p>Another 82 complaints (less 11 \"logo\" complaints) alleged copyright infringement -- copying of code, of graphical elements or \"look and feel\" (Nintendo complained about many \"Super Mario\" derivatives), of characters (Columbia's \"Qbert\"), or of audiovisual elements including video clips, wallpapers, and eBooks. Most of these were phrased in DMCA terms, since like a blog platform, the marketplace hosts \"information residing on systems or networks at direction of users\" <a href=\"http://static.chillingeffects.org/512.html#c\">512(c)</a>. <p>Unique among the copyright complaints in its indirection, the RIAA filed three complaints naming dozens of apps that allegedly \"facilitate the unauthorized streaming and downloading of popular sound recordings, the vast majority of which are owned or controlled by RIAA members.\" Its <a href=\"/dmca512c/notice.cgi?NoticeID=61677\">complaints</a>, complete with screenshots, asked for the removal of apps for ringtone creation and MP3 listening. This is an attenuated claim. RIAA isn't alleging that Google, or even the apps, are direct infringers of member copyrights. Rather, it claims that because Google hosts apps (or in some cases, serves ads inside them) that enable end-users to make infringing copies of music, Google should be held responsible for the users' infringing conduct -- a sort of once-removed contributory or vicarious liability claim. Is there a law of contributory inducement, after <a href=\"http://w2.eff.org/IP/P2P/MGM_v_Grokster/\">Grokster</a>? <p><br>I haven't followed all of the URLs to see how Google has responded to each of these complaints, but to its credit, it does not appear to have pulled the \"Unauthorized SXSW,\" for example. Others accused of trademark infringement appear to have changed their names or logos. Because the <a href=\"https://www.chillingeffects.org/dmca512/faq\">DMCA</a> applies only to copyright, not trademark, there is less settled procedure around the trademark claims. There's no safe-harbor, but neither is there an assumption that the service provider will be liable for its users' activity (see <a href=\"http://www.eff.org/deeplinks/2010/04/tiffany-v-ebay-what-about-put-back\">Tiffany v. eBay</a>, where the Second Circuit Court of Appeals held that \"for contributory trademark infringement liability to lie, a service provider must have more than a general knowledge or reason to know that its service is being used to sell counterfeit goods.\"). <p><br><img src=\"https://chart.googleapis.com/chart?cht=p&chtt=Complaint+Senders+to+Android+Market+(Feb+2011)&chs=750x400&chd=t:0.3,0.2,0.08,0.06,0.04,0.03,0.03,0.03,0.03,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,1.09&chl=Facebook,%20Inc.%20(30)|Nintendo%20of%20America%20Inc.%20(20)|Google%20Inc.%20(8)|Starbucks%20Corporation%20(6)|Hatched%20Games%20(4)|RIAA%20(3)|Photo%20Hunt%20(3)|Atari,%20Inc.%20(3)|ESPN%20Inc.%20(3)|Playboy%20Enterprises%20International,%20Inc.%20(2)|Electronic%20Arts%20Inc.%20(2)|The%20Walt%20Disney%20Company%20(2)|Monotype%20Imaging%20Inc.%20(2)|Kodansha%20Ltd.%20(2)|Metro,%20a%20division%20of%20Associated%20Newspapers%20Limited%20(2)|Dorna%20Sports%20(2)|Justin.tv,%20Inc.%20(2)|Rocket%20Radar%20(2)|eBay%20Inc.%20(2)|Promevo,%20LLC%20(2)|Other/Unidentified%20(109)&chco=0000FF&chp=3.14\" title=\"Takedown Senders\"><p><a name=\"note1\" href=\"#back\">*</a> Copyright geeks will recall that the last <a href=\"http://www.loc.gov/today/pr/2010/10-169.html\">anticircumvention rulemaking</a> exempted phone jailbreaking from the circumvention rule, so iPhone owners can confidently unlock their phones to use the <a href=\"http://cydia.saurik.com/\">cydia</a> marketplace or others.<br><a name=\"note2\" href=\"#back2\">*</a> Note that this is a simple count of distinct complaint submissions, each of which may target one or multiple allegedly infringing applications. $
51
53
  end
52
54
 
53
55
  it "should have the correct content" do
@@ -98,6 +100,7 @@ module FeedAbstract
98
100
  </div>|
99
101
  @feedburneritem.content.should == ''
100
102
  @pyblosxomitem.content.should == %Q|<div><a href='http://www.flickr.com/photos/nffcnnr/401047557/' target='_blank'><img src='http://farm1.static.flickr.com/137/401047557_1dda26e16f.jpg' width=350 alt='MailBoxes by nffcnnr, on Flickr' title='MailBoxes by nffcnnr, on Flickr' border='0'/></a><br/><a href='http://creativecommons.org/licenses/by/2.0/' target='_blank'><img src='http://i.creativecommons.org/l/by/2.0/80x15.png' alt='Creative Commons Attribution 2.0 Generic License' title='Creative Commons Attribution 2.0 Generic License' border='0' align='left'></a>&nbsp;&nbsp;by&nbsp;<a href='http://www.flickr.com/people/nffcnnr/' target='_blank'>&nbsp;nffcnnr</a><a href='http://www.imagecodr.org/' target='_blank'>&nbsp;</a></div><p>I am haunted by the nagging fear that I have mailboxes, tucked into a\ndark corner of an office somewhere, and perhaps even full of checks\nand important documents, that I don't know exist.</p>\n|
103
+ @chillitem.content.should == ''
101
104
  end
102
105
 
103
106
  it "should have the correct link" do
@@ -109,6 +112,7 @@ module FeedAbstract
109
112
  @zoteroitem.link.should == 'https://api.zotero.org/groups/52650/items/FHDJ5PXZ'
110
113
  @feedburneritem.link.should == 'http://rss.cnn.com/~r/rss/cnn_topstories/~3/sV5N-C76mOM/index.html'
111
114
  @pyblosxomitem.link.should == 'http://mako.cc/copyrighteous/20110913-00'
115
+ @chillitem.link.should == 'https://www.chillingeffects.org/weather.cgi?WeatherID=648'
112
116
  end
113
117
 
114
118
  it "should have the correct author" do
@@ -120,6 +124,7 @@ module FeedAbstract
120
124
  @zoteroitem.author.should == 'ingle.atul'
121
125
  @feedburneritem.author.should == ''
122
126
  @pyblosxomitem.author.should == ''
127
+ @chillitem.author.should == ''
123
128
  end
124
129
 
125
130
  it "should have the correct authors" do
@@ -131,6 +136,7 @@ module FeedAbstract
131
136
  @zoteroitem.authors.should == ['ingle.atul']
132
137
  @feedburneritem.authors.should == []
133
138
  @pyblosxomitem.authors.should == []
139
+ @chillitem.authors.should == []
134
140
  end
135
141
 
136
142
  it "should have the correct contributor" do
@@ -142,6 +148,7 @@ module FeedAbstract
142
148
  @zoteroitem.contributor.should == ''
143
149
  @feedburneritem.contributor.should == ''
144
150
  @pyblosxomitem.contributor.should == ''
151
+ @chillitem.contributor.should == ''
145
152
  end
146
153
 
147
154
  it "should have the correct contributors" do
@@ -153,6 +160,7 @@ module FeedAbstract
153
160
  @zoteroitem.contributors.should == []
154
161
  @feedburneritem.contributors.should == []
155
162
  @pyblosxomitem.contributors.should == []
163
+ @chillitem.contributors.should == []
156
164
  end
157
165
 
158
166
  it "should have the correct category" do
@@ -164,6 +172,7 @@ module FeedAbstract
164
172
  @zoteroitem.category.should == ''
165
173
  @feedburneritem.category.should == ''
166
174
  @pyblosxomitem.category.should == ''
175
+ @chillitem.category.should == ''
167
176
  end
168
177
 
169
178
  it "should have the correct categories" do
@@ -175,6 +184,7 @@ module FeedAbstract
175
184
  @zoteroitem.categories.should == []
176
185
  @feedburneritem.categories.should == []
177
186
  @pyblosxomitem.categories.should == []
187
+ @chillitem.categories.should == []
178
188
  end
179
189
 
180
190
  it "should have the correct rights" do
@@ -186,6 +196,7 @@ module FeedAbstract
186
196
  @zoteroitem.rights.should == ''
187
197
  @feedburneritem.rights.should == ''
188
198
  @pyblosxomitem.rights.should == ''
199
+ @chillitem.rights.should == ''
189
200
  end
190
201
 
191
202
  it "should have been updated at the correct time" do
@@ -197,6 +208,7 @@ module FeedAbstract
197
208
  @zoteroitem.updated.should == Time.parse('2011-09-02T17:16:11Z')
198
209
  @feedburneritem.updated.should == Time.parse('Sat, 03 Sep 2011 16:11:39 EDT')
199
210
  @pyblosxomitem.updated.should == Time.parse('2011-09-15T05:21:00Z')
211
+ @chillitem.updated.should == ""
200
212
  end
201
213
 
202
214
  it "should have been published at the proper time" do
@@ -208,6 +220,7 @@ module FeedAbstract
208
220
  @zoteroitem.published.should == Time.parse('2011-09-02T17:14:22Z')
209
221
  @feedburneritem.published.should == Time.parse('Sat, 03 Sep 2011 16:11:39 EDT')
210
222
  @pyblosxomitem.published.should == Time.parse('2011-09-15T05:21:00Z')
223
+ @chillitem.published.should == ''
211
224
  end
212
225
 
213
226
  it "should have the proper guid" do
@@ -219,6 +232,7 @@ module FeedAbstract
219
232
  @zoteroitem.guid.should == 'http://zotero.org/groups/pros_paper/items/FHDJ5PXZ'
220
233
  @feedburneritem.guid.should == 'http://www.cnn.com/2011/WORLD/africa/09/03/libya.west.spies/index.html?eref=rss_topstories'
221
234
  @pyblosxomitem.guid.should == 'http://mako.cc/copyrighteous/2011/09/15/20110913-00'
235
+ @chillitem.guid.should == 'https://www.chillingeffects.org/weather.cgi?WeatherID=648'
222
236
  end
223
237
 
224
238
  end
@@ -26,6 +26,7 @@ module FeedAbstract
26
26
 
27
27
  it "should recognize rdf feeds properly" do
28
28
  @oa.channel.class.should == Channel::RDF
29
+ @chill.channel.class.should == Channel::RDF
29
30
  end
30
31
 
31
32
  it "should have items" do
data/spec/spec_helper.rb CHANGED
@@ -13,8 +13,9 @@ def instantiate_feeds
13
13
  @zotero = FeedAbstract::Feed.new(File.open('spec/test_data/zotero.rss'))
14
14
  @feedburner = FeedAbstract::Feed.new(File.open('spec/test_data/feedburner.rss'))
15
15
  @pyblosxom = FeedAbstract::Feed.new(File.open('spec/test_data/pyblosxom.atom'))
16
+ @chill = FeedAbstract::Feed.new(File.open('spec/test_data/chillingeffects.xml'))
16
17
 
17
- @all_feeds = [@docatom, @kpgatom, @djcprss2, @djcprss92, @oa, @delicious, @zotero, @feedburner,@pyblosxom]
18
+ @all_feeds = [@docatom, @kpgatom, @djcprss2, @djcprss92, @oa, @delicious, @zotero, @feedburner,@pyblosxom,@chill]
18
19
  end
19
20
 
20
21
  def instantiate_example_items
@@ -26,4 +27,5 @@ def instantiate_example_items
26
27
  @zoteroitem = @zotero.items.first
27
28
  @feedburneritem = @feedburner.items.first
28
29
  @pyblosxomitem = @pyblosxom.items.first
30
+ @chillitem = @chill.items.first
29
31
  end
@@ -0,0 +1,245 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+
3
+ <rdf:RDF
4
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
5
+ xmlns="http://purl.org/rss/1.0/"
6
+ xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
7
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
8
+ xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
9
+ xmlns:admin="http://webns.net/mvcb/"
10
+ >
11
+
12
+ <channel rdf:about="http://www.chillingeffects.org">
13
+ <title>Chilling Effects Clearinghouse Weather Reports</title>
14
+ <link>http://www.chillingeffects.org</link>
15
+ <description>Monitoring the legal climate for Internet activity (database of annotated cease and desist letters)</description>
16
+ <dc:language>en-us</dc:language>
17
+ <dc:date>2002-02-25T12:00+00:00</dc:date>
18
+ <dc:publisher>Wendy Seltzer, wseltzer@chillingeffects.org</dc:publisher>
19
+ <dc:creator>Chilling Effects Clearinghouse</dc:creator>
20
+ <dc:subject>Your rights online</dc:subject>
21
+ <syn:updatePeriod>hourly</syn:updatePeriod>
22
+ <syn:updateFrequency>1</syn:updateFrequency>
23
+ <syn:updateBase>2002-02-25T12:00+00:00</syn:updateBase>
24
+ <items>
25
+ <rdf:Seq>
26
+ <rdf:li rdf:resource="https://www.chillingeffects.org/weather.cgi?WeatherID=648" />
27
+ <rdf:li rdf:resource="https://www.chillingeffects.org/weather.cgi?WeatherID=647" />
28
+ <rdf:li rdf:resource="https://www.chillingeffects.org/weather.cgi?WeatherID=646" />
29
+ <rdf:li rdf:resource="https://www.chillingeffects.org/weather.cgi?WeatherID=643" />
30
+ <rdf:li rdf:resource="https://www.chillingeffects.org/weather.cgi?WeatherID=629" />
31
+ <rdf:li rdf:resource="https://www.chillingeffects.org/weather.cgi?WeatherID=642" />
32
+ <rdf:li rdf:resource="https://www.chillingeffects.org/weather.cgi?WeatherID=641" />
33
+ <rdf:li rdf:resource="https://www.chillingeffects.org/weather.cgi?WeatherID=640" />
34
+ <rdf:li rdf:resource="https://www.chillingeffects.org/weather.cgi?WeatherID=639" />
35
+ <rdf:li rdf:resource="https://www.chillingeffects.org/weather.cgi?WeatherID=638" />
36
+ </rdf:Seq>
37
+ </items>
38
+ <image rdf:resource="http://images.chillingeffects.org/chilling_effects.gif" />
39
+ <textinput rdf:resource="http://www.chillingeffects.org/search.cgi" />
40
+ </channel>
41
+
42
+ <image rdf:about="http://images.chillingeffects.org/chilling_effects.gif">
43
+ <title>Chilling Effects Clearinghouse</title>
44
+ <url>http://images.chillingeffects.org/chilling_effects.gif</url>
45
+ <link>http://www.chillingeffects.org/</link>
46
+ </image>
47
+
48
+ <item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=648">
49
+ <title>Takedown Complaints in the Android Marketplace</title>
50
+ <link>https://www.chillingeffects.org/weather.cgi?WeatherID=648</link>
51
+ <description>&lt;br&gt;
52
+ &lt;img src=&quot;//images.chillingeffects.org/thermometer.gif&quot; alt=&quot;thermometer&quot; width=&quot;35&quot; height=&quot;120&quot;align=left&gt; &lt;h2&gt;Takedown Complaints in the Android Marketplace&lt;/h2&gt;&lt;p&gt;Wendy Seltzer, &lt;i&gt;Chilling Effects Clearinghouse&lt;/i&gt;, March 3, 2011
53
+ &lt;p&gt;&lt;i&gt;Abstract:&lt;/i&gt; Earlier this year, Google began sending to Chilling Effects the requests it received for takedown from the Android Marketplace. Since this represents a new source of data, we take a look at the first month&#39;s input, February 2011.&lt;hr size=1&gt;
54
+ &lt;p&gt;&lt;hr size=1 width=&quot;75%&quot;&gt;&lt;p&gt;Since Apple launched its iPhone App Store, applications marketplaces have popped up with increasing prominence. Google, unlike Apple&lt;a href=&quot;#note1&quot; name=&quot;back&quot;&gt;*&lt;/a&gt;, does not lock Android users into purchasing from its &lt;a href=&quot;https://market.android.com/&quot;&gt;Android Market&lt;/a&gt;, but it does make that marketplace a convenient place to find Android applications (&lt;a href=&quot;http://mashable.com/2010/10/25/android-100000-apps/&quot;&gt;passing 100,000 apps&lt;/a&gt; late last year). &lt;br&gt;&lt;p&gt;&lt;br&gt;In February, Chilling Effects &lt;a href=&quot;https://www.chillingeffects.org/search.cgi?search=Android&quot;&gt;saw&lt;/a&gt; 206 complaints to Google regarding Android Market apps, almost evenly split between trademark and copyright.&lt;a href=&quot;#note2&quot; name=&quot;back2&quot;&gt;*&lt;/a&gt; Because the Android Market offers commercial transactions, its context differs somewhat from the search and blog hosting in which DMCA -- copyright -- complaints predominate. At the same time, many apps are offered free of charge.&lt;p&gt;&lt;br&gt;&lt;img src=&quot;https://chart.googleapis.com/chart?cht=pc&amp;chtt=Complaint+Subjects+to+Android+Market+(Feb+2011)&amp;chs=750x400&amp;chd=t:111,97,3|0.59,0.31,0.05,0.03,0.02,0.02,0.02,0.38,0.11,0.1,0.07,0.03,0.03,0.02,0.02,0.02,0.01,0.01,0.22&amp;chl=[TM]|[C]||Trademark%20%20(59)|Facebook%20Trademark%20%20(31)|Bank%20Trademark%20%20(5)|SXSW%20Trademark%20%20(3)|Trademarks%20and%20Videos%20Copyright%20%20(2)|Game%20Trademark%20%20(2)|Disney%20Trademark%20and%20Copyright%20%20(2)|Game%20Copyright%20%20(38)|Software%20Copyright%20%20(11)|Logo%20Copyright%20%20(10)|Copyright%20%20(7)|Books%20Copyright%20%20(3)|Images%20Copyright%20%20(3)|Articles%20Copyright%20%20(2)|Television%20Copyright%20%20(2)|UFC%20Copyright%20%20(2)|Photo%20Copyright%20%20(1)|Website%20Copyright%20%20(1)|Other/Unidentified%20(22)&amp;chco=0000FF,003333&amp;chp=3.14&quot; title=&quot;Complaint Subjects to Google&#39;s Android Market, Feb. 2011&quot;&gt;&lt;p&gt;Slightly more than half of the complaints here claim trademark infringement: misleading use of a mark (word or logo) to cause consumer confusion about the application&#39;s source or sponsorship. Facebook led the way, challenging 30+ apps that borrowed its name or &quot;f&quot; logo (e.g. &lt;a href=&quot;/trademark/notice.cgi?NoticeID=56735&quot;&gt;Facebook Trademark Complaint to Google: Android Market&lt;/a&gt;). Banks and financial institutions challenged applications that used their logos, even to offer a mobile version of the bank&#39;s own site. Here is trademark as the law of consumer protection: you want to be sure an unauthorized Wells Fargo application won&#39;t channel your deposit into its coffers rather than your savings account. Google even filed several complaints against apps in its marketplace that were a bit too free with the Google name. Starbucks used copyright in its logo to similar end, requesting takedown or alteration of apps that used the coffee company&#39;s logo as their icon (e.g. &lt;a href=&quot;/dmca512c/notice.cgi?NoticeID=60149&quot;&gt;Logo DMCA (Copyright) Complaint to Google: Android Market&lt;/a&gt;). Some, including &lt;a href=&quot;https://market.android.com/details?id=com.birbeck.starbuckscard&quot;&gt;My Coffee Card&lt;/a&gt; (formerly Starbucks Card Widget) changed their name and icon in response.&lt;p&gt;Sometimes, these complaints didn&#39;t do much to allege &quot;likelihood of consumer confusion,&quot; the traditional hallmark of trademark infringement. South By SouthWest&#39;s complaint against the &quot;Unauthorized SXSW&quot; party scheduler app -- &lt;a href=&quot;/trademark/notice.cgi?NoticeID=60951&quot;&gt;SXSW Trademark Complaint to Google: Android Market&lt;/a&gt; -- sounds like an overstep, into nominative fair use. There&#39;s no good alternative way to refer to the big conference/music festival in Austin later in March, and &quot;unauthorized&quot; plainly indicates it&#39;s not an officially endorsed product. (Neither Unofficial SXSW nor the official &quot;SXSW&amp;reg; GO&quot; gets particularly high marks from reviewers yet, but that may be because the event hasn&#39;t yet kicked off to fill them with data.)&lt;p&gt;Another 82 complaints (less 11 &quot;logo&quot; complaints) alleged copyright infringement -- copying of code, of graphical elements or &quot;look and feel&quot; (Nintendo complained about many &quot;Super Mario&quot; derivatives), of characters (Columbia&#39;s &quot;Qbert&quot;), or of audiovisual elements including video clips, wallpapers, and eBooks. Most of these were phrased in DMCA terms, since like a blog platform, the marketplace hosts &quot;information residing on systems or networks at direction of users&quot; &lt;a href=&quot;http://static.chillingeffects.org/512.html#c&quot;&gt;512(c)&lt;/a&gt;. &lt;p&gt;Unique among the copyright complaints in its indirection, the RIAA filed three complaints naming dozens of apps that allegedly &quot;facilitate the unauthorized streaming and downloading of popular sound recordings, the vast majority of which are owned or controlled by RIAA members.&quot; Its &lt;a href=&quot;/dmca512c/notice.cgi?NoticeID=61677&quot;&gt;complaints&lt;/a&gt;, complete with screenshots, asked for the removal of apps for ringtone creation and MP3 listening. This is an attenuated claim. RIAA isn&#39;t alleging that Google, or even the apps, are direct infringers of member copyrights. Rather, it claims that because Google hosts apps (or in some cases, serves ads inside them) that enable end-users to make infringing copies of music, Google should be held responsible for the users&#39; infringing conduct -- a sort of once-removed contributory or vicarious liability claim. Is there a law of contributory inducement, after &lt;a href=&quot;http://w2.eff.org/IP/P2P/MGM_v_Grokster/&quot;&gt;Grokster&lt;/a&gt;? &lt;p&gt;&lt;br&gt;I haven&#39;t followed all of the URLs to see how Google has responded to each of these complaints, but to its credit, it does not appear to have pulled the &quot;Unauthorized SXSW,&quot; for example. Others accused of trademark infringement appear to have changed their names or logos. Because the &lt;a href=&quot;https://www.chillingeffects.org/dmca512/faq&quot;&gt;DMCA&lt;/a&gt; applies only to copyright, not trademark, there is less settled procedure around the trademark claims. There&#39;s no safe-harbor, but neither is there an assumption that the service provider will be liable for its users&#39; activity (see &lt;a href=&quot;http://www.eff.org/deeplinks/2010/04/tiffany-v-ebay-what-about-put-back&quot;&gt;Tiffany v. eBay&lt;/a&gt;, where the Second Circuit Court of Appeals held that &quot;for contributory trademark infringement liability to lie, a service provider must have more than a general knowledge or reason to know that its service is being used to sell counterfeit goods.&quot;). &lt;p&gt;&lt;br&gt;&lt;img src=&quot;https://chart.googleapis.com/chart?cht=p&amp;chtt=Complaint+Senders+to+Android+Market+(Feb+2011)&amp;chs=750x400&amp;chd=t:0.3,0.2,0.08,0.06,0.04,0.03,0.03,0.03,0.03,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,1.09&amp;chl=Facebook,%20Inc.%20(30)|Nintendo%20of%20America%20Inc.%20(20)|Google%20Inc.%20(8)|Starbucks%20Corporation%20(6)|Hatched%20Games%20(4)|RIAA%20(3)|Photo%20Hunt%20(3)|Atari,%20Inc.%20(3)|ESPN%20Inc.%20(3)|Playboy%20Enterprises%20International,%20Inc.%20(2)|Electronic%20Arts%20Inc.%20(2)|The%20Walt%20Disney%20Company%20(2)|Monotype%20Imaging%20Inc.%20(2)|Kodansha%20Ltd.%20(2)|Metro,%20a%20division%20of%20Associated%20Newspapers%20Limited%20(2)|Dorna%20Sports%20(2)|Justin.tv,%20Inc.%20(2)|Rocket%20Radar%20(2)|eBay%20Inc.%20(2)|Promevo,%20LLC%20(2)|Other/Unidentified%20(109)&amp;chco=0000FF&amp;chp=3.14&quot; title=&quot;Takedown Senders&quot;&gt;&lt;p&gt;&lt;a name=&quot;note1&quot; href=&quot;#back&quot;&gt;*&lt;/a&gt; Copyright geeks will recall that the last &lt;a href=&quot;http://www.loc.gov/today/pr/2010/10-169.html&quot;&gt;anticircumvention rulemaking&lt;/a&gt; exempted phone jailbreaking from the circumvention rule, so iPhone owners can confidently unlock their phones to use the &lt;a href=&quot;http://cydia.saurik.com/&quot;&gt;cydia&lt;/a&gt; marketplace or others.&lt;br&gt;&lt;a name=&quot;note2&quot; href=&quot;#back2&quot;&gt;*&lt;/a&gt; Note that this is a simple count of distinct complaint submissions, each of which may target one or multiple allegedly infringing applications. </description>
55
+ </item>
56
+
57
+ <item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=647">
58
+ <title>The Value of a &quot;-book&quot;: Facebook v. Teachbook</title>
59
+ <link>https://www.chillingeffects.org/weather.cgi?WeatherID=647</link>
60
+ <description>&lt;br&gt;
61
+ &lt;img src=&quot;//images.chillingeffects.org/snowy.gif&quot; alt=&quot;snowy&quot; width=&quot;80&quot; height=&quot;80&quot;align=left&gt; &lt;h2&gt;The Value of a &quot;-book&quot;: Facebook v. Teachbook&lt;/h2&gt;&lt;p&gt;&lt;i&gt;University of San Francisco Internet and Intellectual Property Justice Clinic&lt;/i&gt;, December 15, 2010
62
+ &lt;p&gt;&lt;i&gt;Abstract:&lt;/i&gt; On August 18, 2010 Facebook, Inc., better known as Facebook.com, one of the world&amp;#146;s most popular Internet websites, filed a federal lawsuit against Teachbook.com LLC alleging trademark infringement due to the use of Teachbook.com&amp;#146;s &amp;#147;-book&amp;#148; suffix in its registered domain name. This will be a case of first impression in the Northern District of California, and will test the ability of wholly online services to trademark otherwise generic portions of their domain name. &lt;hr size=1&gt;</description>
63
+ </item>
64
+
65
+ <item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=646">
66
+ <title>iPhone Jailbreaking and the DMCA</title>
67
+ <link>https://www.chillingeffects.org/weather.cgi?WeatherID=646</link>
68
+ <description>&lt;br&gt;
69
+ &lt;img src=&quot;//images.chillingeffects.org/stormy.gif&quot; alt=&quot;stormy&quot; width=&quot;80&quot; height=&quot;80&quot;align=left&gt; &lt;h2&gt;iPhone Jailbreaking and the DMCA&lt;/h2&gt;&lt;p&gt;Sinny Thai, &lt;i&gt;University of San Francisco Internet + Intellectual Property Justice Clinic&lt;/i&gt;, December 15, 2010
70
+ &lt;p&gt;&lt;i&gt;Abstract:&lt;/i&gt; The Digital Millennium Copyright Act (DMCA) was originally enacted to prohibit &amp;#147;circumvention&amp;#148; of digital rights management and &amp;#147;other technical protection measures&amp;#148; used to protect and control access to copyrighted works. The DMCA has since cast a wide net to protect copyrighted material even when the use of the copyright materials arguably may be permissible under fair use guidelines. &lt;hr size=1&gt;</description>
71
+ </item>
72
+
73
+ <item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=643">
74
+ <title>Repeat Senders</title>
75
+ <link>https://www.chillingeffects.org/weather.cgi?WeatherID=643</link>
76
+ <description>&lt;br&gt;
77
+ &lt;img src=&quot;//images.chillingeffects.org/cloudy.gif&quot; alt=&quot;cloudy&quot; width=&quot;80&quot; height=&quot;80&quot;align=left&gt; &lt;h2&gt;Repeat Senders&lt;/h2&gt;&lt;p&gt;Wendy Seltzer, &lt;i&gt;Chilling Effects Clearinghouse&lt;/i&gt;, December 15, 2010
78
+ &lt;p&gt;&lt;i&gt;Abstract:&lt;/i&gt; In the last year, Chilling Effects saw more than 12,000 cease-and-desist notices reported. Over the next few weeks and into 2011, we will be doing preliminary analysis of patterns in those notices. We are also preparing the data to be more easily usable by other researchers. &lt;p&gt;In this post, I look at repeat senders -- individuals and entities who send frequent DMCA takedown notices.&lt;hr size=1&gt;
79
+ &lt;p&gt;&lt;hr size=1 width=&quot;75%&quot;&gt;&lt;p&gt;Chilling Effects receives notices from several sources, but lately, the largest sources have been Internet hosts and search engines who pass on the &lt;a href=&quot;/dmca512c/&quot;&gt;DMCA Notices&lt;/a&gt; they receive and respond to: Google, Yahoo, Digg, and most recently, Twitter. (Combined DMCA takedowns totaled 11,500 between Jan 1 and Dec 15, 2010)&lt;p&gt;In that mix, we see some frequent users of the DMCA takedown process, companies and individuals who have sent multiple notices requesting removal of content -- or links to content -- they allege infringes their copyrights. We have also seen the rise of takedown agents, entities who send notices on behalf of one or more clients. The list below shows the 20 most frequent sender-principals from 2010, and the 10 most frequent agents.&lt;p&gt;Principals:&lt;pre&gt;&lt;u&gt;number Sender: type&lt;/u&gt;&lt;br&gt;1272 IFPI (International Federation of the Phonographic Industry): music&lt;br&gt;303 Clube do Hardware: articles&lt;br&gt;299 Twentieth Century Fox Film Corporation: film&lt;br&gt;257 MAGNOLIA PICTURES INC.: film&lt;br&gt;230 APCM - Associa&amp;ccedil;&amp;atilde;o Anti Pirataria de Cinema e Musica: music&lt;br&gt;221 Removeyourcontent, LLC: images and video (adult content)&lt;br&gt;203 RIAA (Recording Industry Association of America): music&lt;br&gt;166 Autodata Limited: technical manuals&lt;br&gt;158 Folkert Knieper: recipe photographs&lt;br&gt;122 Product Partners, LLC / Beachbody: fitness DVDs&lt;br&gt;117 SONY MUSIC ENTERTAINMENT / EPIC RECORDS / ESTATE OF MICHAEL JACKSON: music&lt;br&gt;106 Stones Throw Records LLC: music&lt;br&gt;92 Chappell &amp; Co: music&lt;br&gt;88 Microsoft Corporation: software and instructional material&lt;br&gt;88 Globo Comunica&amp;ccedil;&amp;atilde;o e Participa&amp;ccedil;&amp;otilde;es S/A: video&lt;br&gt;85 The New York Times: articles&lt;br&gt;84 Deckers Outdoor Corporation (UGG Australia): images of UGG boots&lt;br&gt;82 Vivid Entertainment Group, LLC: video (adult content)&lt;br&gt;81 Digiturk: TV&lt;br&gt;81 The NBA - National Basketball Association: video streams&lt;br&gt;&lt;/pre&gt;&lt;p&gt;Agents:&lt;pre&gt; Removeyourcontent, LLC&lt;br&gt; Web Sheriff&lt;br&gt; RipBlock Antipiracy&lt;br&gt; NetResult&lt;br&gt; Attributor Corporation&lt;br&gt; French Solutions Ltd.&lt;br&gt; Internet Copyright Management&lt;br&gt; ebay_wise&lt;br&gt; MiMTiD Corp.&lt;br&gt; Greer, Burns &amp; Crain, Ltd.&lt;br&gt;&lt;/pre&gt;&lt;p&gt;While the mix changes over time, the most frequent senders of DMCA takedown notices remain the music industry, whose institutional members have sent a combined total averaging roughly 5 takedowns a day. </description>
80
+ </item>
81
+
82
+ <item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=629">
83
+ <title>Microsoft Invokes DMCA to Take Down Cryptome.org, then Relents</title>
84
+ <link>https://www.chillingeffects.org/weather.cgi?WeatherID=629</link>
85
+ <description>&lt;br&gt;
86
+ &lt;img src=&quot;//images.chillingeffects.org/cloudy.gif&quot; alt=&quot;cloudy&quot; width=&quot;80&quot; height=&quot;80&quot;align=left&gt; &lt;h2&gt;Microsoft Invokes DMCA to Take Down Cryptome.org, then Relents&lt;/h2&gt;&lt;p&gt;David Abrams, &lt;i&gt;Chilling Effects Clearinghouse&lt;/i&gt;, February 25, 2010
87
+ &lt;p&gt;&lt;i&gt;Abstract:&lt;/i&gt; Network Solutions has taken the Cryptome website down after receiving a DMCA takedown notice from Microsoft claiming copyright infringement. Microsoft objects to the publication of a handbook provided to law enforcement describing what information the service keeps on its users and what legal steps are required to obtain that information. However, its takedown of the well-known web site may have effect of increasing the number of people who read the document.&lt;hr size=1&gt;
88
+ &lt;p&gt;&lt;hr size=1 width=&quot;75%&quot;&gt;&lt;p&gt;
89
+ &lt;p&gt;Network Solutions has taken the &lt;a href=&quot;http://cryptome.org/&quot;&gt;Cryptome website&lt;/a&gt; down after receiving a DMCA
90
+ takedown notice from Microsoft claiming copyright infringement.&lt;/a&gt; Cryptome collects &quot;documents for publication that
91
+ are prohibited by governments worldwide, in particular
92
+ &lt;a href=&quot;http://cryptome.org&quot;&gt;material on freedom of
93
+ expression, privacy, cryptology, dual-use technologies, national security,
94
+ intelligence, and secret governance&#148;&lt;/a&gt;. It has been in operation &lt;a href=&quot; http://en.wikipedia.org/wiki/Cryptome&quot;&gt;
95
+ since 1996&lt;/a&gt;. One class of documents posted on the site are procedure manuals provided
96
+ by ISP and hosting services to law enforcement describing what information the
97
+ service keeps on its users and what legal steps are required to obtain that
98
+ information. &lt;/p&gt;
99
+
100
+
101
+ &lt;p&gt;Cryptome obtained and posted &lt;a
102
+
103
+
104
+
105
+ href=&quot;http://www.wired.com/images_blogs/threatlevel/2010/02/microsoft-online-services-global-criminal-compliance-handbook.pdf&quot;&gt;Microsoft&#146;s
106
+ Global Criminal Compliance Handbook&lt;/a&gt; and subsequently refused Microsoft&#146;s
107
+ request to remove the document. Microsoft then invoked the &lt;a
108
+
109
+
110
+
111
+ href=&quot;http://chillingeffects.org/dmca512/&quot;&gt;takedown procedures of the Digital
112
+ Millennium Copyright Act (DMCA)&lt;/a&gt;, sending
113
+ a takedown notice to Cryptome&#146;s hosting provider, Network Solutions, claiming
114
+ copyright infringement late on Monday, Feb. 22. Network Solutions then
115
+ sent the registered owner of the web site, John Young, a notice that it would &#147;disable
116
+ your Web site on Thursday, February 25, 2010, unless the dispute between the
117
+ Notifying Party and yourself is resolved.&#148; Young refused to remove the
118
+ document, citing what appears to be a &lt;a href=&quot;http://chillingeffects.org/copyright/faq.cgi#QID10&quot;&gt;fair use/news reporting defense&lt;/a&gt;, that the &#147;document
119
+ &lt;a
120
+
121
+
122
+
123
+ href=&quot;http://cryptome.org/&quot;&gt;provides important information&lt;/a&gt; for the public to understand how Microsoft
124
+ violates the trust placed in it by customers to protect their privacy and
125
+ confidentiality of personal data and usage of Microsoft products.&#148; On
126
+ Wednesday, Feb. 24,Young &lt;a
127
+
128
+
129
+
130
+ href=&quot;http://chillingeffects.org/dmca512/faq.cgi#QID870&quot;&gt;sent a counter notice&lt;/a&gt; to Network Solutions contesting
131
+ Microsoft&#146;s claim of infringement. Network Solutions then forwarded the
132
+ counter notice to Microsoft, but apparently &lt;a
133
+
134
+
135
+
136
+ href=&quot;http://www.wired.com/threatlevel/2010/02/microsoft-cryptome/&quot;&gt;chose to
137
+ disable the Cryptome web site immediately&lt;/a&gt; rather than wait until the deadline
138
+ specified in its initial notice to Young. Microsoft now has two weeks to
139
+ file a lawsuit against Young. If it does not, &lt;a
140
+
141
+
142
+
143
+ href=&quot;http://www.bitlaw.com/source/17usc/512.html&quot;&gt;Network Solutions will be
144
+ required to restore the site under DMCA rules&lt;/a&gt;.&lt;/p&gt;
145
+
146
+
147
+
148
+ &lt;p&gt;In the meantime, however, Young has republished the Cryptome
149
+ web site at &lt;a href=&quot;http://cryptomeorg.siteprotect.net/&quot;&gt;http://cryptomeorg.siteprotect.net/&lt;/a&gt;
150
+ minus the contested document. Young argues that Microsoft is:&lt;/p&gt;
151
+
152
+
153
+
154
+ &lt;blockquote&gt;Improper[ly] us[ing] copyright to
155
+ conceal from its customer violations of trust toward its customers. Copyright law
156
+ is not intended for confidentiality purposes, although firms try that to save
157
+ legal fees. Copyright bluffs have become quite common, as the EFF initiative
158
+ against such bluffs demonstrates.&lt;/blockquote&gt;
159
+
160
+ &lt;p&gt;Whether true or not, the result of Microsoft&#146;s action in
161
+ having a such a high profile web site taken down is only &lt;a
162
+
163
+
164
+
165
+ href=&quot;http://en.wikipedia.org/wiki/Streisand_effect&quot;&gt;likely to make more people
166
+ aware of the very document it is trying to keep confidential&lt;/a&gt;. The manual
167
+ is currently available on &lt;a
168
+
169
+
170
+
171
+ href=&quot;http://www.wired.com/threatlevel/2010/02/microsoft-cryptome/&quot;&gt;Wired&#146;s web
172
+ site&lt;/a&gt; and the publicity surrounding the takedown will likely cause more
173
+ people to seek it out to see what the fuss is about.&lt;/p&gt;
174
+
175
+ Update: Perhaps realizing that it could not contain release of the document (particularly given its newsworthiness
176
+ in light of the Cryptome.org takedown), Microsoft informed Network Solutions this morning (Feb. 25th) that it was &lt;a href=&quot;http://www.readwriteweb.com/archives/microsoft_to_withdraw_copyright_complaint_cryptome.php&quot;&gt; withdrawing
177
+ its takedown notice&lt;a/&gt;. The site is now back up at its &lt;a href=&quot;http://Cryptome.org&quot;&gt; original URL&lt;/a&gt;.
178
+
179
+
180
+ </description>
181
+ </item>
182
+
183
+ <item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=642">
184
+ <title>Better to Switch Than Fight?</title>
185
+ <link>https://www.chillingeffects.org/weather.cgi?WeatherID=642</link>
186
+ <description>&lt;br&gt;
187
+ &lt;img src=&quot;//images.chillingeffects.org/sunny.gif&quot; alt=&quot;sunny&quot; width=&quot;80&quot; height=&quot;79&quot;align=left&gt; &lt;h2&gt;Better to Switch Than Fight?&lt;/h2&gt;&lt;p&gt;David Abrams, &lt;i&gt;Chilling Effects Clearinghouse&lt;/i&gt;, September 3, 2010
188
+ &lt;p&gt;&lt;i&gt;Abstract:&lt;/i&gt; The New York Times today (page B1) is reporting that &quot;more than one-third of the two billion views of YouTube videos with ads each week are ... uploaded without the copyright owner&#39;s permission but left up by the owner&#39;s choice.&quot; The content owners are choosing to not request that the posted material be taken down because YouTube splits the ad revenue with them. The Times notes that &quot;[h]undreds of these [content] partners make more than $100,000 per year.&quot;&lt;hr size=1&gt;
189
+ &lt;p&gt;&lt;hr size=1 width=&quot;75%&quot;&gt;&lt;p&gt;
190
+ While Chilling Effects is primarily concerned with the &lt;a href=&quot;http://chillingeffects.org/weather.cgi?WeatherID=627&quot;&gt;negative effects&lt;/a&gt; of the DMCA on &lt;em&gt;legal&lt;/em&gt; content, the huge quantity of illegally posted material leads to a shotgun approach by content owners to &lt;a href=&quot;http://chillingeffects.org/weather.cgi?WeatherID=631
191
+ &quot;&gt;takedown everything&lt;/a&gt; without an evaluation of fair use or, worse, the use of &lt;a href=&quot;http://chillingeffects.org/weather.cgi?WeatherID=634&quot;&gt;automated tools&lt;/a&gt; that block content from even being uploaded. The result is the baby (legal uses of content) gets thrown out with the bathwater (illegal uploads). This article shows that there is an alternative to the &lt;a href=&quot;http://dbanach.com/sisyphus.htm&quot;&gt;Sisyphean&lt;/a&gt; task of tracking copyright violations and sending DMCA takedown notices. This alternative to the DMCA takedown regime benefits content owners without restricting the public&#39;s right to enjoy content based on legal uses of copyrighted material. &lt;a href=http://www.nytimes.com/2010/09/03/technology/03youtube.html?_r=1&amp;amp;ref=business&quot;&gt;Link to New York Times article.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
192
+
193
+ (My apologies to &lt;a href=&quot;http://en.wikipedia.org/wiki/Us_Tareyton_smokers_would_rather_fight_than_switch!&quot;&gt;Taryton smokers&lt;/a&gt; for this Weather Report&#39;s title.)</description>
194
+ </item>
195
+
196
+ <item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=641">
197
+ <title>A New DMCA Exemption for Security Research</title>
198
+ <link>https://www.chillingeffects.org/weather.cgi?WeatherID=641</link>
199
+ <description>&lt;br&gt;
200
+ &lt;img src=&quot;//images.chillingeffects.org/sunny.gif&quot; alt=&quot;sunny&quot; width=&quot;80&quot; height=&quot;79&quot;align=left&gt; &lt;h2&gt;A New DMCA Exemption for Security Research&lt;/h2&gt;&lt;p&gt;Blake Ellis Reid, &lt;i&gt;Chilling Effects Clearinghouse&lt;/i&gt;, August 6, 2010
201
+ &lt;p&gt;&lt;i&gt;Abstract:&lt;/i&gt; By now, most readers have probably heard about the &lt;a href=&quot;http://www.copyright.gov/1201/2010/Librarian-of-Congress-1201-Statement.html&quot;&gt;six newly minted exemptions&lt;/a&gt; to the &lt;a href=&quot;http://www.copyright.gov/title17/92chap12.html#1201&quot;&gt;anti-circumvention measures of the Digital Millennium Copyright Act (DMCA)&lt;/a&gt;, announced last week by the Librarian of Congress. For the uninitiated, &lt;a href=&quot;http://arstechnica.com/tech-policy/news/2010/07/apple-loses-big-in-drm-ruling-jailbreaks-are-fair-use.ars&quot;&gt;Ars Technica&lt;/a&gt; and &lt;a href=&quot;https://www.chillingeffects.org/weather.cgi?WeatherID=640&quot;&gt;David Abrams of Chilling Effects&lt;/a&gt; have excellent overviews of the exemptions, which provide much-needed legal cover for a variety of activities including jailbreaking and unlocking cell phones, decrypting DVDs for non-commercial remixes, and several others.&lt;p&gt;Of particular interest to folks in the security community is the exemption granted for security research on video game digital rights management (DRM) systems, stemming from both realized and potential security holes in systems like Safedisc and SecuROM.&lt;hr size=1&gt;
202
+ &lt;p&gt;&lt;hr size=1 width=&quot;75%&quot;&gt;&lt;p&gt;This exemption was the brainchild of University of Michigan professor and DMCA exemption veteran &lt;a href=&quot;http://www.cse.umich.edu/~jhalderm/&quot;&gt;Alex Halderman&lt;/a&gt;, who successfully lobbied with Ed Felten in 2006 for a similar exemption for security research on audio CD DRM in the wake of the Sony rootkit episode. I had the opportunity to work with Alex on the video game exemption under the excellent guidance and supervision of professors &lt;a href=&quot;http://paulohm.com&quot;&gt;Paul Ohm&lt;/a&gt;, &lt;a href=&quot;http://lawweb.colorado.edu/profiles/profile.jsp?id=316&quot;&gt;Harry Surden&lt;/a&gt;, and &lt;a href=&quot;http://lawweb.colorado.edu/profiles/profile.jsp?id=192&quot;&gt;Brad Bernthal&lt;/a&gt; via the &lt;a href=&quot;http://www.colorado.edu/law/clinics/tech/&quot;&gt;Glushko-Samuelson Technology Law and Policy Clinic&lt;/a&gt; at the &lt;a href=&quot;http://www.colorado.edu/law/&quot;&gt;University of Colorado Law School&lt;/a&gt;; we also received tremendous support from the &lt;a href=&quot;http://www.eff.org&quot;&gt;Electronic Frontier Foundation&lt;/a&gt; and a &lt;a href=&quot;http://www.copyright.gov/1201/2008/responses/glushko-samuelson-29.pdf&quot;&gt;coalition of professional and academic security researchers&lt;/a&gt;.&lt;p&gt;With the exemption officially on the books, some researchers may be considering research agendas directed at analyzing security flaws and vulnerabilities posed by video game DRM systems. While the exemption provides significant legal cover from the threat of DMCA lawsuits by DRM and game manufacturers, some questions about the DMCA&#39;s anti-circumvention measures remain unanswered, and traps may lie in wait for the unwary. In this post, I&#39;ve attempted to lay out a rough sketch of the mechanics of the anti-circumvention measures and the video game exemption, focusing in particular on areas that may prove problematic for researchers.&lt;p&gt;&lt;i&gt;(Obligatory disclaimer: this is not legal advice and shouldn&#39;t be taken as such; researchers should consult university, in-house, or outside counsel before proceeding with a research agenda that involves circumventing DRM.)&lt;/i&gt;&lt;p&gt;&lt;h2&gt;The Basics&lt;/h2&gt;&lt;p&gt;At the outset, an overview of the anti-circumvention measures is in order. First, the DMCA distinguishes between two types of DRM systems: &lt;b&gt;access controls&lt;/b&gt; and &lt;b&gt;copy controls&lt;/b&gt;. Access controls are those that (you guessed it) control access to the underlying copyrighted work (here, a video game), while copy controls are those that restrict the ability to reproduce, distribute, publicly perform/display, or make derivative works of the game.&lt;p&gt;Second, the DMCA addresses two types of activities: &lt;b&gt;circumvention&lt;/b&gt; and &lt;b&gt;trafficking&lt;/b&gt;. Circumvention is the actual cracking, picking, or breaking of the digital lock on the game, while trafficking involves the creation and distribution of tools designed for circumvention. (If you think the latter definition sounds nebulous, you&#39;re right - more later.)&lt;p&gt;With these definitions in mind, the DMCA bans three activities: 1) circumventing access controls (the &lt;b&gt;&quot;basic provision&quot;&lt;/b&gt;); 2) trafficking in access control circumvention tools (the &lt;b&gt;&quot;trafficking ban&quot;&lt;/b&gt;); and 3) trafficking in copy control circumvention tools (the &lt;b&gt;&quot;additional violations&quot;&lt;/b&gt;). The astute reader will notice that the DMCA does not ban circumventing copy controls; in practice, however, most video game DRM systems likely serve as both access controls and copy controls, so any circumvention will likely be barred by the basic provision.&lt;p&gt;&lt;table border=1&gt;&lt;br&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;Access Controls&lt;/td&gt;&lt;td&gt;Copy Controls&lt;/td&gt;&lt;/tr&gt;&lt;br&gt;&lt;tr&gt;&lt;td&gt;Circumvention&lt;/td&gt;&lt;td&gt;Banned (basic provision)&lt;/td&gt;&lt;td&gt;Not banned&lt;/td&gt;&lt;/tr&gt;&lt;br&gt;&lt;tr&gt;&lt;td&gt;Trafficking&lt;/td&gt;&lt;td&gt;Banned (trafficking ban)&lt;/td&gt;&lt;td&gt;Banned (additional violations)&lt;/td&gt;&lt;/tr&gt;&lt;br&gt;&lt;/table&gt;&lt;p&gt;These distinctions are important because the various exemptions to the DMCA arguably only apply to specific provisions. So, even if an exemption gets a researcher out of liability under the basic provision, she may nonetheless be liable under the trafficking ban and/or the additional violations.&lt;p&gt;&lt;h2&gt;The Exemption&lt;/h2&gt;&lt;p&gt;It&#39;s worth noting that there are several permanent statutory exemptions written into the DMCA; most relevant to security researchers are those for reverse engineering, encryption research, and security testing. Though an in-depth analysis is beyond the scope of this post, it should suffice to note these exemptions are loaded with caveats that may render them inapplicable to many security research agendas. &lt;p&gt;With that in mind, the new video game DRM exemption to the basic provision may provide superior protection for research agendas covering video game DRM. The exemption textually applies to:&lt;p&gt;&lt;blockquote&gt;(4) Video games accessible on personal computers and protected by technological protection measures that control access to lawfully obtained works, when circumvention is accomplished solely for the purpose of good faith testing for, investigating, or correcting security flaws or vulnerabilities, if:&lt;br&gt;(i) The information derived from the security testing is used primarily to promote the security of the owner or operator of a computer, computer system, or computer network; and&lt;br&gt;(ii) The information derived from the security testing is used or maintained in a manner that does not facilitate copyright infringement or a violation of applicable law.&lt;/blockquote&gt;&lt;p&gt;Researchers should pay careful attention to the following caveats when thinking about the exemption:&lt;br&gt;&lt;ul&gt;&lt;br&gt;&lt;li&gt;The exemption &lt;b&gt;applies only to video games&lt;/b&gt;. Broadly speaking, this means that the exemption doesn&#39;t cover DRM research on movies (including DVD and Blu-Ray), audio CDs, eBooks, non-video game software, or any other type of copyrighted work. More narrowly, there are some corner cases of software that may or may not constitute a video game; certain educational software comes to mind.&lt;/li&gt;&lt;br&gt;&lt;li&gt;The exemption applies only to &lt;b&gt;PC and Mac-based&lt;/b&gt; video games. That means that &lt;b&gt;it doesn&#39;t cover console-based or handheld games&lt;/b&gt; (e.g., Wii, Xbox 360, PlayStation 3, Game Boy, etc.), though it should extend to the PC or Mac versions of games that have coincidentally been released on a console or handheld.&lt;/li&gt;&lt;br&gt;&lt;li&gt;The exemption applies only to &lt;b&gt;good faith security research standing alone&lt;/b&gt;. That means that pirates who happen to correct a security flaw in the course of cracking a game for illegal distribution don&#39;t qualify for the exemption, nor do private users who crack the DRM for non-security related purposes (such as avoiding the inconvenience of DRM, format-shifting, or making backups).&lt;/li&gt;&lt;br&gt;&lt;li&gt;The exemption likely applies &lt;b&gt;only to the basic provision&lt;/b&gt; of the DMCA, and not the trafficking ban or the additional violations. Essentially, this means that &lt;b&gt;researchers can circumvent, but probably can&#39;t traffic&lt;/b&gt; in circumvention tools. (Though some academics have argued to the contrary, it&#39;s a tough row to hoe in light of the unfavorable text of the statute and legislative history.)&lt;p&gt;The question, then, is what exactly &quot;trafficking&quot; encompasses. The DMCA is rather vague, stating that &quot;[n]o person shall manufacture, import, offer to the public, provide, or otherwise traffic in any technology, product, service, device, component, or part thereof . . . &quot; that is &quot;primarily designed&quot; to circumvent, has only &quot;limited commercially significant&quot; non-circumvention purposes, or is &quot;marketed&quot; for circumvention purposes.&lt;p&gt;Two legitimate and productive outputs of security research come to mind that might nonetheless constitute trafficking under the DMCA. The first is a tool that allows end users to fix a security flaw in video game DRM by circumventing the DRM; the second is the publication of security research on video game DRM that describes how to circumvent the DRM. Do either of these fall under the DMCA&#39;s definition of trafficking? I honestly don&#39;t know, and it&#39;s extremely difficult to predict how a court would rule on the issue.&lt;p&gt;Regardless, researchers should probably tread lightly when it comes to the output of their research. Even if the aforementioned outputs fall outside of the trafficking ban and additional violations, the caveats in subsections (i) and (ii) of the exemption place a burden on researchers to ensure that their research is only used for security-related purposes and never to facilitate copyright infringement. Ultimately, researchers will have to work with counsel (and potentially with DRM and game manufacturers) to create a set of best practices for publishing research results and fixing security flaws.&lt;/li&gt;&lt;br&gt;&lt;li&gt;Finally, the video game exemption will be in effect until the Copyright Office conducts the next anti-circumvention rulemaking; although the rulemaking is supposed to take place every three years, it is unclear when the next one will take place, since the decision in the latest rulemaking was delayed for nearly nine months. It&#39;s a long ways out regardless, but researchers should take care to make sure that long-term agendas aren&#39;t threatened by the expiration of the exemption, or better yet, get involved in renewing, evolving, and expanding the exemption during the next rulemaking.&lt;/li&gt;&lt;br&gt;&lt;/ul&gt;&lt;p&gt;Though the exemption obviously comes with some baggage, we hope that it will provide some utility for researchers interested in the security of DRM systems who might have otherwise been scared off by the threat of lawsuit.&lt;p&gt;&lt;i&gt;Cross-posted at &lt;a href=&quot;http://www.freedom-to-tinker.com/blog/blakereid/new-dmca-exemption-security-research&quot;&gt;Freedom to Tinker&lt;/a&gt;.&lt;/i&gt;</description>
203
+ </item>
204
+
205
+ <item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=640">
206
+ <title>Fight For Your Right For Fair Use</title>
207
+ <link>https://www.chillingeffects.org/weather.cgi?WeatherID=640</link>
208
+ <description>&lt;br&gt;
209
+ &lt;img src=&quot;//images.chillingeffects.org/partly_cloudy.gif&quot; alt=&quot;partly cloudy&quot; width=&quot;80&quot; height=&quot;63&quot;align=left&gt; &lt;h2&gt;Fight For Your Right For Fair Use&lt;/h2&gt;&lt;p&gt;David Abrams, &lt;i&gt;Chilling Effects Clearinghouse&lt;/i&gt;, July 27, 2010
210
+ &lt;p&gt;&lt;i&gt;Abstract:&lt;/i&gt; The Library of Congress has released a list of six circumstances in which circumvention of copyright access controls will not be a violation of the Digital Millennium Copyright Act (DMCA). In addition to limited exceptions for security testing of video games and dealing with obsolete hardware dongles, these include &quot;jailbreaking&quot; an iPhone to run user software, circumventing restrictions on connecting a used mobile phone to an alternate wireless network, removing CSS protection from a DVD to extract small portions for the purpose of criticism or comment and enabling read-aloud access to electronic books where there is no other way to get similar functionality.&lt;hr size=1&gt;
211
+ &lt;p&gt;&lt;hr size=1 width=&quot;75%&quot;&gt;&lt;p&gt;The DMCA prohibits a user from circumventing &lt;i&gt;access controls&lt;/i&gt; on a copyrighted work, even if the intended use would qualify as fair use and therefore not be a violation of the owner&#39;s copyright. Thus, for example, while you have the right to use small portions of a copyrighted work for comment or criticism, it may be illegal to obtain that snippet of the copyrighted work if doing so would entail breaking a copy protection scheme added to the work by the copyright holder. However, &lt;a href=&quot;http://www.copyright.gov/title17/92chap12.html#1201&quot;&gt;there is a provision in the DMCA&lt;/a&gt; which allows the Librarian of Congress to create exceptions to this prohibition where a person would be &quot;adversely affected by virtue of such prohibition in their ability to make non-infringing uses of that particular class of works.&quot; These exceptions &lt;a href=&quot;https://www.chillingeffects.org/weather.cgi?WeatherID=572&quot;&gt;only last three years&lt;/a&gt; and must be renewed by reapplying to the Library of Congress. The Librarian has just released &lt;a href=&quot;http://www.copyright.gov/1201/&quot;&gt;the latest set of circumvention exceptions&lt;/a&gt; which apply to six separate sets of circumstances. Two of the exceptions relate to security/vulnerability testing and instances where the access control device is broken and no replacement exists. However, the remaining exceptions will be welcome news to wireless phone owners, to a limited group of people commenting or critiquing DVDs and to vision-impaired persons.&lt;br /&gt;&lt;p&gt;The first exception relating to wireless phones is targeted at iPhone owners. It allows use of computer programs that circumvent access controls on wireless telephone handsets in order to enable interoperability of software applications with computer programs on the telephone handset, commonly known as &quot;jailbreaking&quot; the iPhone. At the request of the Librarian of Congress, &lt;a href=&quot;http://www.copyright.gov/1201/2010/initialed-registers-recommendation-june-11-2010.pdf&quot;&gt;the Register of Copyrights examined the issue&lt;/a&gt; and determined that jailbreaking a phone &quot;in order to make the operating system on that phone interoperable with an independently created application that has not been approved by the maker of the smartphone&quot; likely constitutes fair use. &lt;p&gt;In addition, the Register determined that allowing the use of jailbreaking programs would not adversely affect the market for the copyrighted programs, i.e. the iPhone operating system, because the user of such jailbreaking programs must purchase the iPhone with Apple&#39;s software on it in order to jailbreak it. This means that an iPhone user should find it easier to obtain a program to jailbreak his or her phone and may use it secure in the knowledge that no DMCA violation has occurred. &lt;a href=&quot;http://arstechnica.com/tech-policy/news/2010/07/apple-loses-big-in-drm-ruling-jailbreaks-are-fair-use.ars&quot;&gt;This is a significant loss in Apple&#39;s attempt to control all iThings&lt;/a&gt;. [Note that while this decision allows the &lt;i&gt;use&lt;/i&gt; of an iPhone jailbreaking program, it is still a separate violation of the DMCA, 1201(a)(2), to supply such programs.]&lt;br /&gt;&lt;p&gt;The second wireless phone exception applies not only to smartphones such as the iPhone, but to wireless phone providers who use software or firmware &quot;locks&quot; to prevent the phone owner from switching to a competing network. Here the Register noted that the access controls were put in place not to protect the rights of copyright holders, but rather &quot;to keep consumers bound to their existing networks.&quot; Therefore, the Register recommended that the owner of a used mobile phone be allowed to use a computer program to circumvent any access controls that prevent changing the wireless carrier.&lt;br /&gt;&lt;p&gt;The Register also expanded slightly an existing exemption to allow &quot;college and university professors and university film and media studies students&quot; to circumvent the CSS protection system on movie DVDs to incorporate short portions of the movie into new works &quot;for the purpose of criticism or comment.&quot; This exemption now also applies to documentary filmmakers and makers of noncommercial videos, including &lt;a href=&quot;http://transformativeworks.org/projects/vidding-press-release-DMCA-EXEMPTION&quot;&gt;fan vidders&lt;/a&gt;. The exemption does not apply to elementary and secondary schools, where the Register felt that lower resolution screen capture of the work would be adequate.&lt;br /&gt;&lt;p&gt;The Register considered, but rejected, exemptions on circumventing access controls that limit the types of devices DRM protected streaming video can be played on, exemptions for circumventing access controls on music where the authenticating server is no longer available, circumventing the &quot;broadcast flag&quot; that limits time-shifting of certain off-the-air broadcasts and circumventing access controls that limit high-resolution video on Blu-Ray players unless the HDMI hand-shaking-protocol is used.&lt;br /&gt;&lt;p&gt;Interestingly, the Register recommended to the Librarian of Congress that it not grant an exception to allow read-aloud of ebooks, but the Librarian chose not to follow the recommendation and allowed the exception. This narrow exception applies only when there is no other way to purchase rights to listen to the book. Thus, a blind Kindle user may bypass access controls to listen to an ebook only if no one is willing to sell him or her a read-aloud version. This suggests that a copyright owner could effectively prevent this exception from being applied by offering a read-aloud version for an absurdly high price. Hopefully, the bad press from such a strategy will dissuade such tactics and content owners will decide instead to offer read-aloud versions at reasonable prices to prevent widespread adoption of access circumvention software.&lt;br /&gt;&lt;p&gt;&lt;br&gt;While the exemptions are a positive step, the fact that American consumers have to petition the government to obtain the right to access copyrighted media when the intended use is perfectly legal is a sad state of affairs. It is even sadder that the number of exceptions granted is so limited and that they last only three years (previous exemptions, such as the right to circumvent to archive obsolete software formats, expired because no one came forward to plead their case in this round). Consumers are still beholden to content owners as to what media they can listen to and watch, when they can enjoy it and on what devices they can play it on and companies continue to use the anti-circumvention clause of the DMCA not to protect copyrighted works, but to &lt;a href=&quot;http://www.eff.org/deeplinks/2005/11/dmca-used-stymie-competition-again&quot;&gt;stifle competition&lt;/a&gt;.</description>
212
+ </item>
213
+
214
+ <item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=639">
215
+ <title>ThinkGeek : Officially our best-ever cease and desist</title>
216
+ <link>https://www.chillingeffects.org/weather.cgi?WeatherID=639</link>
217
+ <description>&lt;br&gt;
218
+ &lt;img src=&quot;//images.chillingeffects.org/thermometer.gif&quot; alt=&quot;thermometer&quot; width=&quot;35&quot; height=&quot;120&quot;align=left&gt; &lt;h2&gt;ThinkGeek : Officially our best-ever cease and desist&lt;/h2&gt;&lt;p&gt;&lt;i&gt;ThinkGeek&lt;/i&gt;, June 21, 2010
219
+ &lt;p&gt;&lt;i&gt;Abstract:&lt;/i&gt; ThinkGeek describes its &quot;best-ever cease and desist letter&quot; recently received for its April Fools&#39; product Canned Unicorn Meat:&lt;p&gt;&lt;blockquote&gt;&quot;The very special but also very real letter is from the National Pork Board, who claims we&#39;re infringing on the slogan &quot;The Other White Meat,&quot; a slogan they&#39;re apparently thinking about phasing out anyways.&quot;&lt;/blockquote&gt;&lt;p&gt;The New York Times blogs it as &lt;a href=&quot;http://bits.blogs.nytimes.com/2010/06/22/unicorns-theyre-not-the-other-white-meat/&quot;&gt;Unicorns. They&amp;#146;re Not the Other White Meat.&lt;/a&gt; &lt;p&gt;What a meaty issue!&lt;hr size=1&gt;</description>
220
+ </item>
221
+
222
+ <item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=638">
223
+ <title>East Coast Enlightenment - Protect the Innocent</title>
224
+ <link>https://www.chillingeffects.org/weather.cgi?WeatherID=638</link>
225
+ <description>&lt;br&gt;
226
+ &lt;img src=&quot;//images.chillingeffects.org/sunny.gif&quot; alt=&quot;sunny&quot; width=&quot;80&quot; height=&quot;79&quot;align=left&gt; &lt;h2&gt;East Coast Enlightenment - Protect the Innocent&lt;/h2&gt;&lt;p&gt;David Abrams, &lt;i&gt;Chilling Effects Clearinghouse&lt;/i&gt;, May 21, 2010
227
+ &lt;p&gt;&lt;i&gt;Abstract:&lt;/i&gt; A recent ruling by the Court of Appeals for the Second Circuit, applicable to residents of Connecticut, New York, and Vermont, appears to recognize the &quot;innocent infringer&quot; defense for copyright infringement of sound recordings. This runs counter to decisions of two other circuit courts which effectively read this defense out of the law for music infringement. In addition, the decision defines a record album as a single &quot;work&quot; to which only a single statutory penalty applies, rather than holding that each song on the album is a separate work, thus reducing the risk of ruinous penalties for innocent infringement. &lt;hr size=1&gt;
228
+ &lt;p&gt;&lt;hr size=1 width=&quot;75%&quot;&gt;&lt;p&gt;
229
+ Under current &lt;a href=&quot;http://www4.law.cornell.edu/uscode/17/504.html&quot;&gt;U.S. copyright law (17 U.S.C. 504)&lt;/a&gt;, the owner of a copyrighted work found to be infringed may seek &quot;statutory damages&quot; rather than actual damages. The &lt;i&gt;minimum&lt;/i&gt; statutory penalty that a court may impose is $750 per work infringed unless the defendant can show he or she &quot;was not aware and had no reason to believe that his or her acts constituted an infringement of copyright, [in which case] the court in its discretion may reduce the award of statutory damages to a sum of not less than $200 [per work infringed].&quot; &lt;/p&gt;
230
+ &lt;p&gt;
231
+ In 1988, Congress &lt;a href=&quot;http://www.copyright.gov/title17/92chap4.html&quot;&gt;amended the copyright law&lt;/a&gt; to make placing a notice of copyright on sound recordings optional; however, it also added an exception which eliminated the innocent infringer reduction of the minimum statutory damages (known as the innocent infringer defense) if &quot;a notice of copyright in the form and position specified by this section appears on the published phonorecord or phonorecords to which a defendant in a copyright infringement suit had access.&quot; Two federal courts of appeals (the Fifth Circuit and the Seventh Circuit) have interpreted &#147;to which a defendant . . . had access&#148; to mean that if any recording anywhere contains a copyright notice, then &lt;a href=&quot;http://chillingeffects.org/weather.cgi?WeatherID=630&quot;&gt;the innocent infringement defense is not available&lt;/a&gt; even if the infringer downloaded the work electronically without ever seeing the media bearing the copyright notice. This effectively eliminated the innocent infringer defense for defendants who live in &lt;st1:state w:st=&quot;on&quot;&gt;Louisiana&lt;/st1:state&gt;, &lt;st1:state w:st=&quot;on&quot;&gt;Mississippi&lt;/st1:state&gt;, &lt;st1:state w:st=&quot;on&quot;&gt;Texas&lt;/st1:state&gt;, &lt;st1:state w:st=&quot;on&quot;&gt;Wisconsin&lt;/st1:state&gt;, &lt;st1:state w:st=&quot;on&quot;&gt;Illinois&lt;/st1:state&gt; and &lt;st1:place w:st=&quot;on&quot;&gt;&lt;st1:state w:st=&quot;on&quot;&gt;Indiana&lt;/st1:state&gt;&lt;/st1:place&gt;.&lt;/p&gt;
232
+ &lt;p&gt;
233
+ In the recent &lt;a href=&quot;http://www.leagle.com/unsecure/page.htm?shortname=infco20100427120&quot;&gt;Second Circuit case&lt;/a&gt;, a music production company agreed to resell physical copies of two of the plaintiffs&#39; albums, each containing ten songs. The production company, in turn, contracted with a music wholesaler, Orchard, to distribute the albums &quot;by any and all means and media (whether now known or existing in the future), including ... via the Internet.&quot; Orchard initially sold only physical copies of the album, but later made individual songs on the albums available for purchase over the Internet, believing such distribution was allowed by the agreement. The plaintiffs sued both Orchard and the production company for copyright infringement, asserting that they had only authorized physical distribution, and sought statutory penalties for each song. The court held that although Orchard had infringed the plaintiffs&#39; copyright by distributing the albums electronically without their permission, that infringement was innocent since Orchard had been assured by the production company that such distribution would not infringe any copyrights. In addition, the court noted that under the copyright statute, &quot;all the parts of a compilation ... constitute one work&quot; and held that the ten songs on each album comprised a single work subject to the statutory penalty. The court, therefore, assessed the $200 per work minimum innocent infringer statutory penalty only as to the two albums, not the twenty songs they contained, for a total penalty of $400 against Orchard.&lt;/p&gt;
234
+ &lt;p&gt;
235
+ This case is encouraging because the court concluded that someone who sincerely but erroneously believes he or she has permission to make a copy of a sound recording should not face the harshest penalties of the copyright statute. Because the appellate court did not &lt;i&gt;directly&lt;/i&gt; address the availability of the innocent infringer defense, the matter is not completely settled. (Unless a party to a lawsuit raises a particular argument on appeal the court will normally not consider that issue -- thus if the plaintiffs in this case did not argue that the innocent infringer defense should not be available because there was a physical CD with a copyright notice on it, the court will assume that it is an available defense.) However, this case provides a glimmer of hope to residents of the states of &lt;st1:city w:st=&quot;on&quot;&gt;New York&lt;/st1:city&gt;, &lt;st1:state w:st=&quot;on&quot;&gt;Connecticut&lt;/st1:state&gt; and &lt;st1:state w:st=&quot;on&quot;&gt;&lt;st1:place w:st=&quot;on&quot;&gt;Vermont&lt;/st1:place&gt;&lt;/st1:state&gt; that if they accidentally infringe a copyright without meaning to they will not find themselves bankrupt by mindless application of the statutory penalties.&lt;/p&gt;</description>
236
+ </item>
237
+
238
+ <textinput rdf:about="http://www.chillingeffects.org/search.cgi">
239
+ <title>Quick Search</title>
240
+ <description>Quick search Chilling Effects</description>
241
+ <name>search</name>
242
+ <link>http://www.chillingeffects.org/search.cgi</link>
243
+ </textinput>
244
+
245
+ </rdf:RDF>
metadata CHANGED
@@ -1,126 +1,63 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: feed-abstract
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
4
5
  prerelease:
5
- version: 0.0.6
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Daniel Collis-Puro
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-09-15 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2011-09-16 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: feed-abstract
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &90048490 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: rspec
28
- prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
35
- type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: rspec
39
- prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
46
- type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: rspec
50
- prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
57
- type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: rspec
61
23
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *90048490
25
+ - !ruby/object:Gem::Dependency
71
26
  name: rspec
72
- prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
27
+ requirement: &90048210 !ruby/object:Gem::Requirement
74
28
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
79
33
  type: :development
80
- version_requirements: *id006
81
- - !ruby/object:Gem::Dependency
82
- name: rspec
83
34
  prerelease: false
84
- requirement: &id007 !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: "0"
90
- type: :development
91
- version_requirements: *id007
92
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *90048210
36
+ - !ruby/object:Gem::Dependency
93
37
  name: rspec
94
- prerelease: false
95
- requirement: &id008 !ruby/object:Gem::Requirement
38
+ requirement: &90047870 !ruby/object:Gem::Requirement
96
39
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
101
44
  type: :development
102
- version_requirements: *id008
103
- - !ruby/object:Gem::Dependency
104
- name: rspec
105
45
  prerelease: false
106
- requirement: &id009 !ruby/object:Gem::Requirement
107
- none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: "0"
112
- type: :development
113
- version_requirements: *id009
114
- description: "This library creates a common object graph for the RSS/Atom/RDF parsing classes in the ruby standard library. This allows you parse different feed formats and get back the same (or at least a very similar) set of results - item authors are accessible under an \"author(s)\" attribute, categories/tags/subjects are accessible under \"category(ies)\" attributes, etc. We do our best to make sure the data makes sense, too - RSS items lack an \"updated\" attribute, so we use \"pubDate\" to populate it. "
115
- email:
46
+ version_requirements: *90047870
47
+ description: ! 'This library creates a common object graph for the RSS/Atom/RDF parsing
48
+ classes in the ruby standard library. This allows you parse different feed formats
49
+ and get back the same (or at least a very similar) set of results - item authors
50
+ are accessible under an "author(s)" attribute, categories/tags/subjects are accessible
51
+ under "category(ies)" attributes, etc. We do our best to make sure the data makes
52
+ sense, too - RSS items lack an "updated" attribute, so we use "pubDate" to populate
53
+ it. '
54
+ email:
116
55
  - djcp@cyber.law.harvard.edu
117
56
  executables: []
118
-
119
57
  extensions: []
120
-
121
- extra_rdoc_files:
58
+ extra_rdoc_files:
122
59
  - README.rdoc
123
- files:
60
+ files:
124
61
  - .gitignore
125
62
  - Gemfile
126
63
  - README.rdoc
@@ -143,6 +80,7 @@ files:
143
80
  - spec/feed_abstract_item_spec.rb
144
81
  - spec/feed_abstract_spec.rb
145
82
  - spec/spec_helper.rb
83
+ - spec/test_data/chillingeffects.xml
146
84
  - spec/test_data/djcp.rss
147
85
  - spec/test_data/djcp.rss92
148
86
  - spec/test_data/djcp_code.rss
@@ -155,30 +93,28 @@ files:
155
93
  - spec/test_data/zotero.rss
156
94
  homepage: https://github.com/berkmancenter/feed-abstract
157
95
  licenses: []
158
-
159
96
  post_install_message:
160
- rdoc_options:
97
+ rdoc_options:
161
98
  - --charset=UTF-8
162
- require_paths:
99
+ require_paths:
163
100
  - lib
164
- required_ruby_version: !ruby/object:Gem::Requirement
101
+ required_ruby_version: !ruby/object:Gem::Requirement
165
102
  none: false
166
- requirements:
167
- - - ">="
168
- - !ruby/object:Gem::Version
169
- version: "0"
170
- required_rubygems_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
171
108
  none: false
172
- requirements:
173
- - - ">="
174
- - !ruby/object:Gem::Version
175
- version: "0"
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
176
113
  requirements: []
177
-
178
114
  rubyforge_project:
179
- rubygems_version: 1.8.10
115
+ rubygems_version: 1.8.6
180
116
  signing_key:
181
117
  specification_version: 3
182
- summary: Abstracts RSS/Atom/RDF parsing features from the ruby standard lib into a common object graph.
118
+ summary: Abstracts RSS/Atom/RDF parsing features from the ruby standard lib into a
119
+ common object graph.
183
120
  test_files: []
184
-