| #!/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 |