-
Notifications
You must be signed in to change notification settings - Fork 70
/
comdevtalks.rb
223 lines (214 loc) · 13.4 KB
/
comdevtalks.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
#!/usr/bin/env ruby
# ComDev Talks: Parse ComDev listings of Apache-related talks
$LOAD_PATH.unshift '/srv/whimsy/lib'
require 'whimsy/asf'
require 'yaml'
require 'json'
COMDEVTALKS = ASF::SVN.svnurl!('comdevtalks') # *.yaml
COMDEVDIR = ASF::SVN['comdevtalks'] # *.yaml
SKIPFILE = 'README.yaml'
# Parse all talks and submitters
def parse_talks(dir = COMDEVDIR)
talks = {}
submitters = {}
Dir[File.join(dir, '*.yaml')].each do |fname|
begin
if fname =~ /_/
talks[File.basename(fname, '.*')] = YAML.safe_load(File.read(fname))
elsif fname !~ /SKIPFILE/
submitters[File.basename(fname, '.*')] = YAML.safe_load(File.read(fname))
end
rescue Exception => e
puts "Bogosity! analyzing #{fname} raised #{e.message[0..255]}"
puts "\t#{e.backtrace.join("\n\t")}"
end
end
return talks, submitters
end
# Abstract how cgi gets data
def get_talks_submitters()
# return parse_talks
# HACK static data until we have generated public/ or other format
talks = {
'Apache_Way_2017' => {
'title' => 'Apache Way: Effective Open Source Project Management',
'teaser' => 'Learn how to manage long-lived diverse open source project communities by ' \
'following the behaviors of the Apache Way.',
'submitter' => 'curcuru',
'speakers' => ['curcuru'],
'abstract' => 'The "Apache Way" is the process by which Apache Software Foundation projects are managed. ' \
'It has evolved 18 years and has produced over 170 highly successful open source Apache projects.' \
" But what is it and how does it work?\n\nLearn the core behaviors that make up the Apache Way, " \
'and how they are used in successful Apache projects from core technologies, to big data, to ' \
"user facing projects.\n\nThe behaviors in the Apache Way are required for all Apache projects, " \
'but can be simply used by any open source projects. Distributed ' \
'decision making, open communication, do-ocracy, and diverse communities are the cornerstones.' \
"\n\nBenefit from the experience of over 5,000 Apache committers and 170 successful projects by " \
"applying these behaviors and techniques in your own projects! \n",
'audience' => 'Community managers, developers, project managers involved with FOSS projects.',
'slides' => 'http://shaneslides.com/apachecon/TheApacheWay-Intro-ApacheConNA2017.html',
'video' => 'https://www.youtube.com/watch?v=hpAv54KIgK8',
'topics' => ['apacheway', 'community'],
'present_at' => ['http://apachecon.com/2017'],
'present_date' => '2017-05-16'
},
'Committed_To_The_Apache_Way' => {
'title' => 'Committed To The Apache Way',
'teaser' => 'Learn how being involved in an Apache project is not just about code.',
'submitter' => 'sharan',
'speakers' => ['sharan'],
'abstract' => "'To be committed' is a strange phrase. In the past it was used to describe people who were sent " \
"to mental institutions or 'facilities'. Fast forward to today and words like committed and " \
'commitment are used throughout the Open Source world. Are we all a little crazy? - Perhaps!' \
"\n\nIn this presentation Sharan shares her thoughts and experiences about being a Committer, " \
"life at the ASF (facility) and how not being able to code is still OK.\n",
'audience' => 'Community managers, developers, project managers involved with FOSS projects.',
# 404 "slides" => "http://events.linuxfoundation.org/sites/events/files/slides/Commited%20to%20Apache.pdf",
'slides' => nil,
'video' => 'https://www.youtube.com/watch?v=vT-kxmoLs5k&index=25&list=PLbzoR-pLrL6pLDCyPxByWQwYTL-JrF5Rp',
'topics' => ['community', 'contributors'],
'present_at' => ['http://apachecon.com/2017'],
'present_date' => '2017-05-16'
},
'From_Dev_To_User' => {
'title' => 'From dev@ to user@ to the Apache Way',
'teaser' => 'The story of how an existing project community improved by coming to Apache.',
'submitter' => 'sblackmon',
'speakers' => ['sblackmon'],
'abstract' => 'This talk will cover the journey of Apache Streams (incubating) beyond a solution solely ' \
'by and for java developers, toward a solution that can provide value for anyone, anywhere ' \
'along the experience spectrum, regardless of technical preferences. ' \
"We'll share feedback that served as concentrate focus on mission and usability. " \
"\n\nWe'll walk through some of the improvements made to project code and tooling (maven), " \
'documentation (website, examples), and usability (command line interface, maven plugins, ' \
'zeppelin support, network APIs) to move the project from dev@ to user@, and the ' \
"opportunities we see to increase usability and relevance still further.\n",
'audience' => 'Community managers, developers, project managers involved with FOSS projects.',
# 404 "slides" => "http://events.linuxfoundation.org/sites/events/files/slides/ApacheConNA2017-Blackmon.pdf",
'slides' => nil,
'video' => 'https://www.youtube.com/watch?v=E9A54x6af8o&index=27&list=PLbzoR-pLrL6pLDCyPxByWQwYTL-JrF5Rp',
'topics' => ['incubator', 'apacheway'],
'present_at' => ['http://apachecon.com/2017'],
'present_date' => '2017-05-16'
},
'Tale_Of_Two_Developers' => {
'title' => 'A Tale of Two Developers: Finding Harmony Between Commercial Software Development and the Apache Way',
'teaser' => 'Learn from the real-life lunchtime dialog between an experienced Apache committer and a new coder.',
'submitter' => 'wang',
'speakers' => ['wang', 'Alex Leblang'],
'abstract' => "Apache community members can reference tenets from the Apache Way such as \u201Ccommunity over " \
"code\u201D and \u201Copenness\u201D as if it were second nature. While they may sound simple, " \
'these concepts can be foreign to developers coming to open source for the first time. ' \
'Success as an Apache contributor stresses skills not emphasized in other types of software ' \
'development, including reconciling the requirements of the upstream development process with ' \
"the realities of running a commercial software business.\n\n" \
'With the assistance of choreographed Socratic dialogue, our two protagonists, an experienced ' \
'Apache committer and an enthusiastic young gun contributor, explore the tensions of working on ' \
'an Apache project as employees of a for-profit company. The audience will learn practical ' \
'advice and problem solving techniques for working effectively as part of an Apache community. ' \
'By the end, our greenhorn comes to understand that the yin and yang of commercial software ' \
"development and the Apache Way can exist in harmony.\n\nOur talk contextualizes the Apache Way " \
'for developers who are paid to work on open-source full-time, drawn from our real-world ' \
'experience working at Cloudera. ' \
'This is presented through a series of short vignettes accompanied by intervening discussion and ' \
'review slides. Tenets of the Apache Way like meritocracy, community, and hats are introduced ' \
'and referred to throughout as the backbone to building strong open-source communities. ' \
'We examine the tension between corporate pressures and open-source, emphasizing the underlying ' \
"value that companies gain from open-source software.\n\n" \
"Our two main characters are:\n* Alex, an energetic young developer who is new to open source " \
"but not to development. Excited to get stuff done on this new project.\n* Andrew, a long-time " \
"Apache committer who takes Alex under his wing and teaches him the importance of open-source.\n" \
"\nThe outline for our skits are:\n* Act 1: Introduction to Apache and the Apache Way, FAQs from " \
"Alex as someone getting started as a new contributor\n* Act 2: How to build consensus when " \
"there's conflict (e.g. someone -1's your patch), public communication, demonstrating merit " \
"and the path to committership\n* Act 3: No jerks allowed. Andrew does a heel turn and is " \
'ruling the project with an iron fist, Alex intervenes in a ' \
'come-to-jesus/student-becomes-the-teacher moment. Re-emphasize the importance of community, ' \
"and how dictators are bad for projects.\n",
'audience' => 'Community managers, developers, project managers involved with FOSS projects.',
'slides' => nil,
'video' => 'https://www.youtube.com/watch?v=ea_9qkaTeVw&index=26&list=PLbzoR-pLrL6pLDCyPxByWQwYTL-JrF5Rp',
'topics' => ['apacheway', 'developers'],
'present_at' => ['http://apachecon.com/2017'],
'present_date' => '2017-05-16'
}
}
submitters = {
'curcuru' => {
'name' => 'Shane Curcuru',
'website' => 'http://communityovercode.com/',
'twitter' => 'shanecurcuru',
'facebook' => nil,
'bio' => 'Shane has been involved at the Apache Software Foundation (ASF) since 1999, and serves as Director ' \
'and VP of Brand Management, setting trademark policies and helping all 200+ Apache projects ' \
"implement and defend their brands.\n\nOtherwise, Shane is: a father and husband, a friend, a geek, " \
'a Member of the ASF, a baker, and a punny guy. Oh, and we have cats. Shane blogs at ' \
"http://communityovercode.com/ and regularly speaks on FOSS governance and branding topics.\n"
},
'README' => {
'title' => 'Talk Title: Strings with colons must be quoted',
'teaser' => 'Teaser is one sentence for use on session grids or tweets or the like (where supported).',
'submitter' => 'curcuru',
'speakers' => ['curcuru', 'Court Jester'],
'abstract' => 'Abstracts are the full description of a talk, session, or panel that has already been presented.' \
"\n\nAbstracts may have line breaks, and some systems may allow **formatting** or the like.\n\n" \
'Using the YAML pipe "|" character for a literal multiline scalar means linebreaks are ' \
"preserved in the abstract. \n",
'audience' => 'Brief description of the expected audience for this talk.',
'slides' => 'URL.to/posted-slides',
'video' => 'URL.to/posted-video?if-any',
'present_at' => ['URL.to/last-conference-presented-at'],
'present_date' => '2017-05-16'
},
'sblackmon' => {
'name' => 'Steve Blackmon',
'website' => nil,
'twitter' => 'steveblackmon',
'facebook' => nil,
'bio' => 'VP Technology at People Pattern, previously Director of Data Science at W2O Group, co-founder of ' \
'Ravel, stints at Boeing, Lockheed Martin, and Accenture. Committer and PMC for Apache Streams ' \
'(incubating). ' \
"Experienced user of Spark, Storm, Hadoop, Pig, Hive, Nutch, Cassandra, Tinkerpop, and more.\n"
},
'sharan' => {
'name' => 'Sharan Foga',
'website' => nil,
'twitter' => nil,
'facebook' => nil,
'bio' => 'Sharan Foga have been involved with the ASF since 2008 and has presented at previous Apachecons ' \
'(Vancouver 2016, Budapest 2015 & 2014). She enjoys working on community management and related areas ' \
"and is a Committer and PMC Member for Apache OFBiz and Community Development.\n"
},
'wang' => {
'name' => 'Andrew Wang',
'website' => 'http://umbrant.com/',
'twitter' => nil,
'facebook' => nil,
'bio' => 'Andrew Wang is a software engineer at Cloudera on the HDFS team, where he has worked on projects ' \
'including in-memory caching, transparent encryption, and erasure coding. Previously, he was a PhD ' \
'student in the AMP Lab at UC Berkeley, where he worked on problems related to distributed systems ' \
'and warehouse-scale computing. He is a committer and PMC member on the Apache Hadoop project, a ' \
'committer on Apache Kudu (incubating), and holds masters and bachelors degrees in computer science ' \
'from UC Berkeley and UVa respectively. Andrew has spoken at conferences including Hadoop Summit EU, ' \
"Strata NYC, Strata London, HBaseCon, ACM SoCC, and USENIX HotCloud.\n"
}
}
return talks, submitters
end
# ## ### #### ##### ######
# Main method for command line use
if __FILE__ == $PROGRAM_NAME
dir = COMDEVDIR
outfile = File.join(dir, 'comdevtalks.json')
puts "BEGIN: Parsing YAMLs in #{dir}"
talks, submitters = parse_talks dir
results = {}
results['talks'] = talks
results['submitters'] = submitters
File.open(outfile, 'w') do |f|
f.puts JSON.pretty_generate(results)
end
puts talks
puts "END: Thanks for running, see #{outfile}"
puts submitters
end