blob: fb935b639356a64de6f2cbc72a3eaf052cd96b51 [file] [log] [blame]
#!/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