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 +29 -1
- data/feed-abstract.gemspec +12 -29
- data/lib/feed-abstract/channel/rdf.rb +1 -1
- data/lib/feed-abstract/channel/rss.rb +2 -2
- data/lib/feed-abstract/item/rss.rb +1 -1
- data/lib/feed-abstract/version.rb +1 -1
- data/spec/feed_abstract_channel_spec.rb +18 -0
- data/spec/feed_abstract_item_spec.rb +14 -0
- data/spec/feed_abstract_spec.rb +1 -0
- data/spec/spec_helper.rb +3 -1
- data/spec/test_data/chillingeffects.xml +245 -0
- metadata +53 -117
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
|
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
|
data/feed-abstract.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.0.
|
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 = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email = [
|
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 =
|
53
|
-
s.rdoc_options = [
|
54
|
-
s.require_paths = [
|
55
|
-
s.rubygems_version =
|
56
|
-
s.summary =
|
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.
|
@@ -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® 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> by <a href='http://www.flickr.com/people/nffcnnr/' target='_blank'> nffcnnr</a><a href='http://www.imagecodr.org/' target='_blank'> </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
|
data/spec/feed_abstract_spec.rb
CHANGED
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><br>
|
52
|
+
<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
|
53
|
+
<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>
|
54
|
+
<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. </description>
|
55
|
+
</item>
|
56
|
+
|
57
|
+
<item rdf:about="https://www.chillingeffects.org/weather.cgi?WeatherID=647">
|
58
|
+
<title>The Value of a "-book": Facebook v. Teachbook</title>
|
59
|
+
<link>https://www.chillingeffects.org/weather.cgi?WeatherID=647</link>
|
60
|
+
<description><br>
|
61
|
+
<img src="//images.chillingeffects.org/snowy.gif" alt="snowy" width="80" height="80"align=left> <h2>The Value of a "-book": Facebook v. Teachbook</h2><p><i>University of San Francisco Internet and Intellectual Property Justice Clinic</i>, December 15, 2010
|
62
|
+
<p><i>Abstract:</i> On August 18, 2010 Facebook, Inc., better known as Facebook.com, one of the world&#146;s most popular Internet websites, filed a federal lawsuit against Teachbook.com LLC alleging trademark infringement due to the use of Teachbook.com&#146;s &#147;-book&#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. <hr size=1></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><br>
|
69
|
+
<img src="//images.chillingeffects.org/stormy.gif" alt="stormy" width="80" height="80"align=left> <h2>iPhone Jailbreaking and the DMCA</h2><p>Sinny Thai, <i>University of San Francisco Internet + Intellectual Property Justice Clinic</i>, December 15, 2010
|
70
|
+
<p><i>Abstract:</i> The Digital Millennium Copyright Act (DMCA) was originally enacted to prohibit &#147;circumvention&#148; of digital rights management and &#147;other technical protection measures&#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. <hr size=1></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><br>
|
77
|
+
<img src="//images.chillingeffects.org/cloudy.gif" alt="cloudy" width="80" height="80"align=left> <h2>Repeat Senders</h2><p>Wendy Seltzer, <i>Chilling Effects Clearinghouse</i>, December 15, 2010
|
78
|
+
<p><i>Abstract:</i> 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. <p>In this post, I look at repeat senders -- individuals and entities who send frequent DMCA takedown notices.<hr size=1>
|
79
|
+
<p><hr size=1 width="75%"><p>Chilling Effects receives notices from several sources, but lately, the largest sources have been Internet hosts and search engines who pass on the <a href="/dmca512c/">DMCA Notices</a> 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)<p>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.<p>Principals:<pre><u>number Sender: type</u><br>1272 IFPI (International Federation of the Phonographic Industry): music<br>303 Clube do Hardware: articles<br>299 Twentieth Century Fox Film Corporation: film<br>257 MAGNOLIA PICTURES INC.: film<br>230 APCM - Associa&ccedil;&atilde;o Anti Pirataria de Cinema e Musica: music<br>221 Removeyourcontent, LLC: images and video (adult content)<br>203 RIAA (Recording Industry Association of America): music<br>166 Autodata Limited: technical manuals<br>158 Folkert Knieper: recipe photographs<br>122 Product Partners, LLC / Beachbody: fitness DVDs<br>117 SONY MUSIC ENTERTAINMENT / EPIC RECORDS / ESTATE OF MICHAEL JACKSON: music<br>106 Stones Throw Records LLC: music<br>92 Chappell & Co: music<br>88 Microsoft Corporation: software and instructional material<br>88 Globo Comunica&ccedil;&atilde;o e Participa&ccedil;&otilde;es S/A: video<br>85 The New York Times: articles<br>84 Deckers Outdoor Corporation (UGG Australia): images of UGG boots<br>82 Vivid Entertainment Group, LLC: video (adult content)<br>81 Digiturk: TV<br>81 The NBA - National Basketball Association: video streams<br></pre><p>Agents:<pre> Removeyourcontent, LLC<br> Web Sheriff<br> RipBlock Antipiracy<br> NetResult<br> Attributor Corporation<br> French Solutions Ltd.<br> Internet Copyright Management<br> ebay_wise<br> MiMTiD Corp.<br> Greer, Burns & Crain, Ltd.<br></pre><p>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><br>
|
86
|
+
<img src="//images.chillingeffects.org/cloudy.gif" alt="cloudy" width="80" height="80"align=left> <h2>Microsoft Invokes DMCA to Take Down Cryptome.org, then Relents</h2><p>David Abrams, <i>Chilling Effects Clearinghouse</i>, February 25, 2010
|
87
|
+
<p><i>Abstract:</i> 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.<hr size=1>
|
88
|
+
<p><hr size=1 width="75%"><p>
|
89
|
+
<p>Network Solutions has taken the <a href="http://cryptome.org/">Cryptome website</a> down after receiving a DMCA
|
90
|
+
takedown notice from Microsoft claiming copyright infringement.</a> Cryptome collects "documents for publication that
|
91
|
+
are prohibited by governments worldwide, in particular
|
92
|
+
<a href="http://cryptome.org">material on freedom of
|
93
|
+
expression, privacy, cryptology, dual-use technologies, national security,
|
94
|
+
intelligence, and secret governance”</a>. It has been in operation <a href=" http://en.wikipedia.org/wiki/Cryptome">
|
95
|
+
since 1996</a>. 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. </p>
|
99
|
+
|
100
|
+
|
101
|
+
<p>Cryptome obtained and posted <a
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
href="http://www.wired.com/images_blogs/threatlevel/2010/02/microsoft-online-services-global-criminal-compliance-handbook.pdf">Microsoft’s
|
106
|
+
Global Criminal Compliance Handbook</a> and subsequently refused Microsoft’s
|
107
|
+
request to remove the document. Microsoft then invoked the <a
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
href="http://chillingeffects.org/dmca512/">takedown procedures of the Digital
|
112
|
+
Millennium Copyright Act (DMCA)</a>, sending
|
113
|
+
a takedown notice to Cryptome’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 “disable
|
116
|
+
your Web site on Thursday, February 25, 2010, unless the dispute between the
|
117
|
+
Notifying Party and yourself is resolved.” Young refused to remove the
|
118
|
+
document, citing what appears to be a <a href="http://chillingeffects.org/copyright/faq.cgi#QID10">fair use/news reporting defense</a>, that the “document
|
119
|
+
<a
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
href="http://cryptome.org/">provides important information</a> 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.” On
|
126
|
+
Wednesday, Feb. 24,Young <a
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
href="http://chillingeffects.org/dmca512/faq.cgi#QID870">sent a counter notice</a> to Network Solutions contesting
|
131
|
+
Microsoft’s claim of infringement. Network Solutions then forwarded the
|
132
|
+
counter notice to Microsoft, but apparently <a
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
href="http://www.wired.com/threatlevel/2010/02/microsoft-cryptome/">chose to
|
137
|
+
disable the Cryptome web site immediately</a> 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, <a
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
href="http://www.bitlaw.com/source/17usc/512.html">Network Solutions will be
|
144
|
+
required to restore the site under DMCA rules</a>.</p>
|
145
|
+
|
146
|
+
|
147
|
+
|
148
|
+
<p>In the meantime, however, Young has republished the Cryptome
|
149
|
+
web site at <a href="http://cryptomeorg.siteprotect.net/">http://cryptomeorg.siteprotect.net/</a>
|
150
|
+
minus the contested document. Young argues that Microsoft is:</p>
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
<blockquote>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.</blockquote>
|
159
|
+
|
160
|
+
<p>Whether true or not, the result of Microsoft’s action in
|
161
|
+
having a such a high profile web site taken down is only <a
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
href="http://en.wikipedia.org/wiki/Streisand_effect">likely to make more people
|
166
|
+
aware of the very document it is trying to keep confidential</a>. The manual
|
167
|
+
is currently available on <a
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
href="http://www.wired.com/threatlevel/2010/02/microsoft-cryptome/">Wired’s web
|
172
|
+
site</a> and the publicity surrounding the takedown will likely cause more
|
173
|
+
people to seek it out to see what the fuss is about.</p>
|
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 <a href="http://www.readwriteweb.com/archives/microsoft_to_withdraw_copyright_complaint_cryptome.php"> withdrawing
|
177
|
+
its takedown notice<a/>. The site is now back up at its <a href="http://Cryptome.org"> original URL</a>.
|
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><br>
|
187
|
+
<img src="//images.chillingeffects.org/sunny.gif" alt="sunny" width="80" height="79"align=left> <h2>Better to Switch Than Fight?</h2><p>David Abrams, <i>Chilling Effects Clearinghouse</i>, September 3, 2010
|
188
|
+
<p><i>Abstract:</i> The New York Times today (page B1) is reporting that "more than one-third of the two billion views of YouTube videos with ads each week are ... uploaded without the copyright owner's permission but left up by the owner's choice." 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 "[h]undreds of these [content] partners make more than $100,000 per year."<hr size=1>
|
189
|
+
<p><hr size=1 width="75%"><p>
|
190
|
+
While Chilling Effects is primarily concerned with the <a href="http://chillingeffects.org/weather.cgi?WeatherID=627">negative effects</a> of the DMCA on <em>legal</em> content, the huge quantity of illegally posted material leads to a shotgun approach by content owners to <a href="http://chillingeffects.org/weather.cgi?WeatherID=631
|
191
|
+
">takedown everything</a> without an evaluation of fair use or, worse, the use of <a href="http://chillingeffects.org/weather.cgi?WeatherID=634">automated tools</a> 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 <a href="http://dbanach.com/sisyphus.htm">Sisyphean</a> task of tracking copyright violations and sending DMCA takedown notices. This alternative to the DMCA takedown regime benefits content owners without restricting the public's right to enjoy content based on legal uses of copyrighted material. <a href=http://www.nytimes.com/2010/09/03/technology/03youtube.html?_r=1&amp;ref=business">Link to New York Times article.</a><br /><br />
|
192
|
+
|
193
|
+
(My apologies to <a href="http://en.wikipedia.org/wiki/Us_Tareyton_smokers_would_rather_fight_than_switch!">Taryton smokers</a> for this Weather Report'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><br>
|
200
|
+
<img src="//images.chillingeffects.org/sunny.gif" alt="sunny" width="80" height="79"align=left> <h2>A New DMCA Exemption for Security Research</h2><p>Blake Ellis Reid, <i>Chilling Effects Clearinghouse</i>, August 6, 2010
|
201
|
+
<p><i>Abstract:</i> By now, most readers have probably heard about the <a href="http://www.copyright.gov/1201/2010/Librarian-of-Congress-1201-Statement.html">six newly minted exemptions</a> to the <a href="http://www.copyright.gov/title17/92chap12.html#1201">anti-circumvention measures of the Digital Millennium Copyright Act (DMCA)</a>, announced last week by the Librarian of Congress. For the uninitiated, <a href="http://arstechnica.com/tech-policy/news/2010/07/apple-loses-big-in-drm-ruling-jailbreaks-are-fair-use.ars">Ars Technica</a> and <a href="https://www.chillingeffects.org/weather.cgi?WeatherID=640">David Abrams of Chilling Effects</a> 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.<p>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.<hr size=1>
|
202
|
+
<p><hr size=1 width="75%"><p>This exemption was the brainchild of University of Michigan professor and DMCA exemption veteran <a href="http://www.cse.umich.edu/~jhalderm/">Alex Halderman</a>, 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 <a href="http://paulohm.com">Paul Ohm</a>, <a href="http://lawweb.colorado.edu/profiles/profile.jsp?id=316">Harry Surden</a>, and <a href="http://lawweb.colorado.edu/profiles/profile.jsp?id=192">Brad Bernthal</a> via the <a href="http://www.colorado.edu/law/clinics/tech/">Glushko-Samuelson Technology Law and Policy Clinic</a> at the <a href="http://www.colorado.edu/law/">University of Colorado Law School</a>; we also received tremendous support from the <a href="http://www.eff.org">Electronic Frontier Foundation</a> and a <a href="http://www.copyright.gov/1201/2008/responses/glushko-samuelson-29.pdf">coalition of professional and academic security researchers</a>.<p>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's anti-circumvention measures remain unanswered, and traps may lie in wait for the unwary. In this post, I'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.<p><i>(Obligatory disclaimer: this is not legal advice and shouldn't be taken as such; researchers should consult university, in-house, or outside counsel before proceeding with a research agenda that involves circumventing DRM.)</i><p><h2>The Basics</h2><p>At the outset, an overview of the anti-circumvention measures is in order. First, the DMCA distinguishes between two types of DRM systems: <b>access controls</b> and <b>copy controls</b>. 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.<p>Second, the DMCA addresses two types of activities: <b>circumvention</b> and <b>trafficking</b>. 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're right - more later.)<p>With these definitions in mind, the DMCA bans three activities: 1) circumventing access controls (the <b>"basic provision"</b>); 2) trafficking in access control circumvention tools (the <b>"trafficking ban"</b>); and 3) trafficking in copy control circumvention tools (the <b>"additional violations"</b>). 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.<p><table border=1><br><tr><td>&nbsp;</td><td>Access Controls</td><td>Copy Controls</td></tr><br><tr><td>Circumvention</td><td>Banned (basic provision)</td><td>Not banned</td></tr><br><tr><td>Trafficking</td><td>Banned (trafficking ban)</td><td>Banned (additional violations)</td></tr><br></table><p>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.<p><h2>The Exemption</h2><p>It'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. <p>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:<p><blockquote>(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:<br>(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<br>(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.</blockquote><p>Researchers should pay careful attention to the following caveats when thinking about the exemption:<br><ul><br><li>The exemption <b>applies only to video games</b>. Broadly speaking, this means that the exemption doesn'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.</li><br><li>The exemption applies only to <b>PC and Mac-based</b> video games. That means that <b>it doesn't cover console-based or handheld games</b> (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.</li><br><li>The exemption applies only to <b>good faith security research standing alone</b>. That means that pirates who happen to correct a security flaw in the course of cracking a game for illegal distribution don'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).</li><br><li>The exemption likely applies <b>only to the basic provision</b> of the DMCA, and not the trafficking ban or the additional violations. Essentially, this means that <b>researchers can circumvent, but probably can't traffic</b> in circumvention tools. (Though some academics have argued to the contrary, it's a tough row to hoe in light of the unfavorable text of the statute and legislative history.)<p>The question, then, is what exactly "trafficking" encompasses. The DMCA is rather vague, stating that "[n]o person shall manufacture, import, offer to the public, provide, or otherwise traffic in any technology, product, service, device, component, or part thereof . . . " that is "primarily designed" to circumvent, has only "limited commercially significant" non-circumvention purposes, or is "marketed" for circumvention purposes.<p>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's definition of trafficking? I honestly don't know, and it's extremely difficult to predict how a court would rule on the issue.<p>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.</li><br><li>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's a long ways out regardless, but researchers should take care to make sure that long-term agendas aren't threatened by the expiration of the exemption, or better yet, get involved in renewing, evolving, and expanding the exemption during the next rulemaking.</li><br></ul><p>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.<p><i>Cross-posted at <a href="http://www.freedom-to-tinker.com/blog/blakereid/new-dmca-exemption-security-research">Freedom to Tinker</a>.</i></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><br>
|
209
|
+
<img src="//images.chillingeffects.org/partly_cloudy.gif" alt="partly cloudy" width="80" height="63"align=left> <h2>Fight For Your Right For Fair Use</h2><p>David Abrams, <i>Chilling Effects Clearinghouse</i>, July 27, 2010
|
210
|
+
<p><i>Abstract:</i> 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 "jailbreaking" 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.<hr size=1>
|
211
|
+
<p><hr size=1 width="75%"><p>The DMCA prohibits a user from circumventing <i>access controls</i> on a copyrighted work, even if the intended use would qualify as fair use and therefore not be a violation of the owner'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, <a href="http://www.copyright.gov/title17/92chap12.html#1201">there is a provision in the DMCA</a> which allows the Librarian of Congress to create exceptions to this prohibition where a person would be "adversely affected by virtue of such prohibition in their ability to make non-infringing uses of that particular class of works." These exceptions <a href="https://www.chillingeffects.org/weather.cgi?WeatherID=572">only last three years</a> and must be renewed by reapplying to the Library of Congress. The Librarian has just released <a href="http://www.copyright.gov/1201/">the latest set of circumvention exceptions</a> 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.<br /><p>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 "jailbreaking" the iPhone. At the request of the Librarian of Congress, <a href="http://www.copyright.gov/1201/2010/initialed-registers-recommendation-june-11-2010.pdf">the Register of Copyrights examined the issue</a> and determined that jailbreaking a phone "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" likely constitutes fair use. <p>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'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. <a href="http://arstechnica.com/tech-policy/news/2010/07/apple-loses-big-in-drm-ruling-jailbreaks-are-fair-use.ars">This is a significant loss in Apple's attempt to control all iThings</a>. [Note that while this decision allows the <i>use</i> of an iPhone jailbreaking program, it is still a separate violation of the DMCA, 1201(a)(2), to supply such programs.]<br /><p>The second wireless phone exception applies not only to smartphones such as the iPhone, but to wireless phone providers who use software or firmware "locks" 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 "to keep consumers bound to their existing networks." 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.<br /><p>The Register also expanded slightly an existing exemption to allow "college and university professors and university film and media studies students" to circumvent the CSS protection system on movie DVDs to incorporate short portions of the movie into new works "for the purpose of criticism or comment." This exemption now also applies to documentary filmmakers and makers of noncommercial videos, including <a href="http://transformativeworks.org/projects/vidding-press-release-DMCA-EXEMPTION">fan vidders</a>. 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.<br /><p>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 "broadcast flag" 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.<br /><p>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.<br /><p><br>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 <a href="http://www.eff.org/deeplinks/2005/11/dmca-used-stymie-competition-again">stifle competition</a>.</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><br>
|
218
|
+
<img src="//images.chillingeffects.org/thermometer.gif" alt="thermometer" width="35" height="120"align=left> <h2>ThinkGeek : Officially our best-ever cease and desist</h2><p><i>ThinkGeek</i>, June 21, 2010
|
219
|
+
<p><i>Abstract:</i> ThinkGeek describes its "best-ever cease and desist letter" recently received for its April Fools' product Canned Unicorn Meat:<p><blockquote>"The very special but also very real letter is from the National Pork Board, who claims we're infringing on the slogan "The Other White Meat," a slogan they're apparently thinking about phasing out anyways."</blockquote><p>The New York Times blogs it as <a href="http://bits.blogs.nytimes.com/2010/06/22/unicorns-theyre-not-the-other-white-meat/">Unicorns. They&#146;re Not the Other White Meat.</a> <p>What a meaty issue!<hr size=1></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><br>
|
226
|
+
<img src="//images.chillingeffects.org/sunny.gif" alt="sunny" width="80" height="79"align=left> <h2>East Coast Enlightenment - Protect the Innocent</h2><p>David Abrams, <i>Chilling Effects Clearinghouse</i>, May 21, 2010
|
227
|
+
<p><i>Abstract:</i> 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 "innocent infringer" 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 "work" 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. <hr size=1>
|
228
|
+
<p><hr size=1 width="75%"><p>
|
229
|
+
Under current <a href="http://www4.law.cornell.edu/uscode/17/504.html">U.S. copyright law (17 U.S.C. 504)</a>, the owner of a copyrighted work found to be infringed may seek "statutory damages" rather than actual damages. The <i>minimum</i> statutory penalty that a court may impose is $750 per work infringed unless the defendant can show he or she "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]." </p>
|
230
|
+
<p>
|
231
|
+
In 1988, Congress <a href="http://www.copyright.gov/title17/92chap4.html">amended the copyright law</a> 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 "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." Two federal courts of appeals (the Fifth Circuit and the Seventh Circuit) have interpreted “to which a defendant . . . had access” to mean that if any recording anywhere contains a copyright notice, then <a href="http://chillingeffects.org/weather.cgi?WeatherID=630">the innocent infringement defense is not available</a> 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 <st1:state w:st="on">Louisiana</st1:state>, <st1:state w:st="on">Mississippi</st1:state>, <st1:state w:st="on">Texas</st1:state>, <st1:state w:st="on">Wisconsin</st1:state>, <st1:state w:st="on">Illinois</st1:state> and <st1:place w:st="on"><st1:state w:st="on">Indiana</st1:state></st1:place>.</p>
|
232
|
+
<p>
|
233
|
+
In the recent <a href="http://www.leagle.com/unsecure/page.htm?shortname=infco20100427120">Second Circuit case</a>, a music production company agreed to resell physical copies of two of the plaintiffs' albums, each containing ten songs. The production company, in turn, contracted with a music wholesaler, Orchard, to distribute the albums "by any and all means and media (whether now known or existing in the future), including ... via the Internet." 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' 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, "all the parts of a compilation ... constitute one work" 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.</p>
|
234
|
+
<p>
|
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 <i>directly</i> 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 <st1:city w:st="on">New York</st1:city>, <st1:state w:st="on">Connecticut</st1:state> and <st1:state w:st="on"><st1:place w:st="on">Vermont</st1:place></st1:state> that if they accidentally infringe a copyright without meaning to they will not find themselves bankrupt by mindless application of the statutory penalties.</p></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
|
-
|
14
|
-
|
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
|
-
|
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:
|
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
|
-
|
63
|
-
|
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
|
-
|
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:
|
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
|
-
|
85
|
-
|
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
|
-
|
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:
|
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
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
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:
|
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:
|
109
|
+
requirements:
|
110
|
+
- - ! '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
176
113
|
requirements: []
|
177
|
-
|
178
114
|
rubyforge_project:
|
179
|
-
rubygems_version: 1.8.
|
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
|
118
|
+
summary: Abstracts RSS/Atom/RDF parsing features from the ruby standard lib into a
|
119
|
+
common object graph.
|
183
120
|
test_files: []
|
184
|
-
|