Abstract
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.
- Patrick Bahr and Tom Hvitved. 2011. Compositional Data Types. In Proceedings of the Seventh ACM SIGPLAN Workshop on Generic Programming (WGP ’11). Association for Computing Machinery, New York, NY, USA. 83–94. isbn:9781450308618 https://doi.org/10.1145/2036918.2036930
Google Scholar
Digital Library
- Max Brunsfeld. 2018. tree-sitter/tree-sitter: v0.20.4. https://doi.org/10.5281/zenodo.5894991
Google Scholar
Cross Ref
- Jacques Carette, Oleg Kiselyov, and Chung-chieh Shan. 2007. Finally Tagless, Partially Evaluated. In Programming Languages and Systems, 5th Asian Symposium, APLAS 2007, Singapore, November 29-December 1, 2007, Proceedings, Zhong Shao (Ed.) (Lecture Notes in Computer Science, Vol. 4807). Springer, 222–238. https://doi.org/10.1007/978-3-540-76637-7_15
Google Scholar
Cross Ref
- Douglas Creager. 2021. Introducing stack graphs | The GitHub Blog. https://github.blog/2021-12-09-introducing-stack-graphs/
Google Scholar
- David Darais, Nicholas Labich, Phúc C. Nguyen, and David Van Horn. 2017. Abstracting Definitional Interpreters (Functional Pearl). Proc. ACM Program. Lang., 1, ICFP (2017), Article 12, aug, 25 pages. https://doi.org/10.1145/3110256
Google Scholar
Digital Library
- Allele Dev and Alexis King. 2016. freer-simple. https://github.com/lexi-lambda/freer-simple
Google Scholar
- 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–254. isbn:978-3-662-49498-1
Google Scholar
- Jan P. Finis, Martin Raiber, Nikolaus Augsten, Robert Brunel, Alfons Kemper, and Franz Färber. 2013. RWS-Diff: Flexible and Efficient Change Detection in Hierarchical Data. In Proceedings of the 22nd ACM International Conference on Information and Knowledge Management (CIKM ’13). Association for Computing Machinery, New York, NY, USA. 339–348. isbn:9781450322638 https://doi.org/10.1145/2505515.2505763
Google Scholar
Digital Library
- Google. 2008. Protocol Buffers. https://developers.google.com/protocol-buffers
Google Scholar
- Google. 2014. Kubernetes. https://kubernetes.io
Google Scholar
- Stefan Haefliger, Georg von Krogh, and Sebastian Spaeth. 2008. Code Reuse in Open Source Software. Management Science, 54, 1 (2008), 180–193. https://doi.org/10.1287/mnsc.1070.0748 arxiv:https://doi.org/10.1287/mnsc.1070.0748.
Google Scholar
Digital Library
- 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–136. isbn:978-3-540-49270-2
Google Scholar
- Bernard Lang. 1974. Deterministic Techniques for Efficient Non-Deterministic Parsers. In Automata, Languages and Programming, Jacques Loeckx (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 255–269. isbn:978-3-662-21545-6
Google Scholar
- José Magalhães, Atze Dijkstra, Johan Jeuring, and Andres Löh. 2010. A Generic Deriving Mechanism for Haskell. Proceedings of the ACM SIGPLAN International Conference on Functional Programming, ICFP, 45, 37–48. https://doi.org/10.1145/1863523.1863529
Google Scholar
Digital Library
- Simon Marlow. 2015. Fighting spam with Haskell. https://engineering.fb.com/2015/06/26/security/fighting-spam-with-haskell/
Google Scholar
- Simon Marlow, Louis Brandy, Jonathan Coens, and Jon Purdy. 2014. There is No Fork: An Abstraction for Efficient, Concurrent, and Concise Data Access. SIGPLAN Not., 49, 9 (2014), aug, 325–337. issn:0362-1340 https://doi.org/10.1145/2692915.2628144
Google Scholar
Digital Library
- 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–144. isbn:978-3-540-47599-6
Google Scholar
Digital Library
- Eugene W. Myers. 1986. An O(ND) Difference Algorithm and Its Variations. Algorithmica, 1 (1986), 251–266.
Google Scholar
Digital Library
- Ayman Nadeem. 2020. CodeGen: Semantic’s improved language support system | The GitHub Blog. https://github.blog/2020-08-04-codegen-semantics-improved-language-support-system/
Google Scholar
- Simon Peyton-Jones and Simon Marlow. 2002. Secrets of the Glasgow Haskell Compiler Inliner. J. Funct. Program., 12, 5 (2002), jul, 393–434. issn:0956-7968 https://doi.org/10.1017/S0956796802004331
Google Scholar
Digital Library
- Matthew Pickering, Jeremy Gibbons, and Nicolas Wu. 2017. Profunctor Optics: Modular Data Accessors. The Art, Science, and Engineering of Programming, 1 (2017), 03, https://doi.org/10.22152/programming-journal.org/2017/1/7
Google Scholar
Cross Ref
- Gordon Plotkin and John Power. 2001. Semantics for Algebraic Operations. Electronic Notes in Theoretical Computer Science, 45 (2001), 07, https://doi.org/10.1016/S1571-0661(04)80970-8
Google Scholar
Cross Ref
- 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/
Google Scholar
- Tom Schrijvers, Maciej Piróg, Nicolas Wu, and Mauro Jaskelioff. 2019. Monad transformers and modular algebraic effects: what binds them together. 98–113. isbn:978-1-4503-6813-1 https://doi.org/10.1145/3331545.3342595
Google Scholar
Digital Library
- Servant. 2014. https://github.com/haskell-servant/servant
Google Scholar
- Wouter Swierstra. 2008. Data types à la carte. Journal of Functional Programming, 18, 4 (2008), 423–436. https://doi.org/10.1017/S0956796808006758
Google Scholar
Digital Library
- Masaru Tomita. 1986. Efficient parsing for natural language: A fast algorithm for practical systems. Kluwer Academic.
Google Scholar
Digital Library
- Hendrik van Antwerpen, Casper Poulsen, Arjen Rouvoet, and Eelco Visser. 2018. Scopes as types. Proceedings of the ACM on Programming Languages, 2 (2018), 10, 1–30. https://doi.org/10.1145/3276484
Google Scholar
Digital Library
- David Van Horn and Matthew Might. 2010. Abstracting Abstract Machines. In Proceedings of the 15th ACM SIGPLAN International Conference on Functional Programming (ICFP ’10). Association for Computing Machinery, New York, NY, USA. 51–62. isbn:9781605587943 https://doi.org/10.1145/1863543.1863553
Google Scholar
Digital Library
- Nicolas Wu and Tom Schrijvers. 2015. Fusion for Free - Efficient Algebraic Effect Handlers. In Mathematics of Program Construction - 12th International Conference, 2015. Proceedings, Ralf Hinze and Janis Voigtländer (Eds.) (Lecture Notes in Computer Science, Vol. 9129). Springer, 302–322. https://doi.org/10.1007/978-3-319-19797-5_15
Google Scholar
Cross Ref
- Nicolas Wu, Tom Schrijvers, and Ralf Hinze. 2014. Effect Handlers in Scope. In Proceedings of the 2014 ACM SIGPLAN Symposium on Haskell (Haskell ’14). Association for Computing Machinery, New York, NY, USA. 1–12. isbn:9781450330411 https://doi.org/10.1145/2633357.2633358
Google Scholar
Digital Library
Index Terms
Fusing industry and academia at GitHub (experience report)
Recommendations
Open Source License Inconsistencies on GitHub
Almost all software, open or closed, builds on open source software and therefore needs to comply with the license obligations of the open source code. Not knowing which licenses to comply with poses a legal danger to anyone using open source software. ...
Experience report: Haskell in the 'real world': writing a commercial application in a lazy functional lanuage
ICFP '09: Proceedings of the 14th ACM SIGPLAN international conference on Functional programmingI describe the initial attempt of experienced business software developers with minimal functional programming background to write a non-trivial, business-critical application entirely in Haskell. Some parts of the application domain are well suited to ...
Is secure coding education in the industry needed?: an investigation through a large scale survey
ICSE-JSEET '21: Proceedings of the 43rd International Conference on Software Engineering: Joint Track on Software Engineering Education and TrainingThe Department of Homeland Security in the United States estimates that 90% of software vulnerabilities can be traced back to defects in design and software coding. The financial impact of these vulnerabilities has been shown to exceed 380 million USD ...






Comments