{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,8,1]],"date-time":"2026-08-01T17:06:57Z","timestamp":1785604017769,"version":"3.56.0"},"reference-count":31,"publisher":"Association for Computing Machinery (ACM)","issue":"ICFP","license":[{"start":{"date-parts":[[2022,8,29]],"date-time":"2022-08-29T00:00:00Z","timestamp":1661731200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2022,8,29]]},"abstract":"<jats:p>GitHub hosts hundreds of millions of code repositories written in hundreds of different programming languages. In addition to its hosting services, GitHub provides data and insights into code, such as vulnerability analysis and code navigation, with which users can improve and understand their software development process. GitHub has built Semantic, a program analysis tool capable of parsing and extracting detailed information from source code. The development of Semantic has relied extensively on the functional programming literature; this paper describes how connections to academic research inspired and informed the development of an industrial-scale program analysis toolkit.<\/jats:p>","DOI":"10.1145\/3547639","type":"journal-article","created":{"date-parts":[[2022,8,31]],"date-time":"2022-08-31T19:39:26Z","timestamp":1661974766000},"page":"496-511","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":6,"title":["Fusing industry and academia at GitHub (experience report)"],"prefix":"10.1145","volume":"6","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-1026-9815","authenticated-orcid":false,"given":"Patrick","family":"Thomson","sequence":"first","affiliation":[{"name":"GitHub, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9824-0421","authenticated-orcid":false,"given":"Rob","family":"Rix","sequence":"additional","affiliation":[{"name":"GitHub, Canada"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4161-985X","authenticated-orcid":false,"given":"Nicolas","family":"Wu","sequence":"additional","affiliation":[{"name":"Imperial College London, UK"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8771-5559","authenticated-orcid":false,"given":"Tom","family":"Schrijvers","sequence":"additional","affiliation":[{"name":"KU Leuven, Belgium"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2022,8,31]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/2036918.2036930"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo.5894991"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-76637-7_15"},{"key":"e_1_2_1_4_1","unstructured":"Douglas Creager. 2021. Introducing stack graphs | The GitHub Blog. https:\/\/github.blog\/2021-12-09-introducing-stack-graphs\/ \t\t\t\t  Douglas Creager. 2021. Introducing stack graphs | The GitHub Blog. https:\/\/github.blog\/2021-12-09-introducing-stack-graphs\/"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3110256"},{"key":"e_1_2_1_6_1","unstructured":"Allele Dev and Alexis King. 2016. freer-simple. https:\/\/github.com\/lexi-lambda\/freer-simple \t\t\t\t  Allele Dev and Alexis King. 2016. freer-simple. https:\/\/github.com\/lexi-lambda\/freer-simple"},{"key":"e_1_2_1_7_1","volume-title":"Ahmed","author":"Eisenberg Richard A.","year":"2016","unstructured":"Richard A. Eisenberg , Stephanie Weirich , and Hamidhasan G . Ahmed . 2016 . Visible Type Application. In Programming Languages and Systems, Peter Thiemann (Ed.). Springer Berlin Heidelberg , Berlin, Heidelberg. 229\u2013254. isbn:978-3-662-49498-1 Richard A. Eisenberg, Stephanie Weirich, and Hamidhasan G. Ahmed. 2016. Visible Type Application. In Programming Languages and Systems, Peter Thiemann (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 229\u2013254. isbn:978-3-662-49498-1"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/2505515.2505763"},{"key":"e_1_2_1_9_1","unstructured":"Google. 2008. Protocol Buffers. https:\/\/developers.google.com\/protocol-buffers \t\t\t\t  Google. 2008. Protocol Buffers. https:\/\/developers.google.com\/protocol-buffers"},{"key":"e_1_2_1_10_1","unstructured":"Google. 2014. Kubernetes. https:\/\/kubernetes.io \t\t\t\t  Google. 2014. Kubernetes. https:\/\/kubernetes.io"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1287\/mnsc.1070.0748"},{"key":"e_1_2_1_12_1","volume-title":"Functional programming with overloading and higher-order polymorphism","author":"Jones Mark P.","unstructured":"Mark P. Jones . 1995. Functional programming with overloading and higher-order polymorphism . In Advanced Functional Programming, Johan Jeuring and Erik Meijer (Eds.). Springer Berlin Heidelberg , Berlin, Heidelberg . 97\u2013136. isbn:978-3-540-49270-2 Mark P. Jones. 1995. Functional programming with overloading and higher-order polymorphism. In Advanced Functional Programming, Johan Jeuring and Erik Meijer (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 97\u2013136. isbn:978-3-540-49270-2"},{"key":"e_1_2_1_13_1","volume-title":"Deterministic Techniques for Efficient Non-Deterministic Parsers","author":"Lang Bernard","unstructured":"Bernard Lang . 1974. Deterministic Techniques for Efficient Non-Deterministic Parsers . In Automata, Languages and Programming, Jacques Loeckx (Ed.). Springer Berlin Heidelberg , Berlin, Heidelberg . 255\u2013269. isbn:978-3-662-21545-6 Bernard Lang. 1974. Deterministic Techniques for Efficient Non-Deterministic Parsers. In Automata, Languages and Programming, Jacques Loeckx (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 255\u2013269. isbn:978-3-662-21545-6"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1863523.1863529"},{"key":"e_1_2_1_15_1","unstructured":"Simon Marlow. 2015. Fighting spam with Haskell. https:\/\/engineering.fb.com\/2015\/06\/26\/security\/fighting-spam-with-haskell\/ \t\t\t\t  Simon Marlow. 2015. Fighting spam with Haskell. https:\/\/engineering.fb.com\/2015\/06\/26\/security\/fighting-spam-with-haskell\/"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2692915.2628144"},{"key":"e_1_2_1_17_1","volume-title":"Functional programming with bananas, lenses, envelopes and barbed wire","author":"Meijer Erik","unstructured":"Erik Meijer , Maarten Fokkinga , and Ross Paterson . 1991. Functional programming with bananas, lenses, envelopes and barbed wire . In Functional Programming Languages and Computer Architecture, John Hughes (Ed.). Springer Berlin Heidelberg , Berlin, Heidelberg . 124\u2013144. isbn:978-3-540-47599-6 Erik Meijer, Maarten Fokkinga, and Ross Paterson. 1991. Functional programming with bananas, lenses, envelopes and barbed wire. In Functional Programming Languages and Computer Architecture, John Hughes (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 124\u2013144. isbn:978-3-540-47599-6"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01840446"},{"key":"e_1_2_1_19_1","unstructured":"Ayman Nadeem. 2020. CodeGen: Semantic\u2019s improved language support system | The GitHub Blog. https:\/\/github.blog\/2020-08-04-codegen-semantics-improved-language-support-system\/ \t\t\t\t  Ayman Nadeem. 2020. CodeGen: Semantic\u2019s improved language support system | The GitHub Blog. https:\/\/github.blog\/2020-08-04-codegen-semantics-improved-language-support-system\/"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796802004331"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.22152\/programming-journal.org\/2017\/1\/7"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1016\/S1571-0661(04)80970-8"},{"key":"e_1_2_1_23_1","unstructured":"Rob Rix. 2017. Quickly review changed methods and functions in your pull requests | The GitHub Blog. https:\/\/github.blog\/2017-07-26-quickly-review-changed-methods-and-functions-in-your-pull-requests\/ \t\t\t\t  Rob Rix. 2017. Quickly review changed methods and functions in your pull requests | The GitHub Blog. https:\/\/github.blog\/2017-07-26-quickly-review-changed-methods-and-functions-in-your-pull-requests\/"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/3331545.3342595"},{"key":"e_1_2_1_25_1","unstructured":"Servant. 2014. https:\/\/github.com\/haskell-servant\/servant \t\t\t\t  Servant. 2014. https:\/\/github.com\/haskell-servant\/servant"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796808006758"},{"key":"e_1_2_1_27_1","volume-title":"Efficient parsing for natural language: A fast algorithm for practical systems","author":"Tomita Masaru","unstructured":"Masaru Tomita . 1986. Efficient parsing for natural language: A fast algorithm for practical systems . Kluwer Academic . Masaru Tomita. 1986. Efficient parsing for natural language: A fast algorithm for practical systems. Kluwer Academic."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276484"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1863543.1863553"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-19797-5_15"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2633357.2633358"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3547639","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3547639","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T18:43:29Z","timestamp":1750272209000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3547639"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,8,29]]},"references-count":31,"journal-issue":{"issue":"ICFP","published-print":{"date-parts":[[2022,8,29]]}},"alternative-id":["10.1145\/3547639"],"URL":"https:\/\/doi.org\/10.1145\/3547639","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2022,8,29]]},"assertion":[{"value":"2022-08-31","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}