SOLFIND
Web Lens
Portal home

archive-program/TheTechTree.md at master · github/archive-program · GitHub

https://github.com/github/archive-program/blob/master/TheTechTree.md • 353 KB fetched
Open original page


archive-program/TheTechTree.md at master · github/archive-program · GitHub Skip to content Navigation Menu Sign in Appearance settings * Platform * AI CODE CREATION * GitHub Copilot Write better code with AI * GitHub Copilot app Direct agents from issue to merge * MCP Registry Integrate external tools * DEVELOPER WORKFLOWS * Actions Automate any workflow * Codespaces Instant dev environments * Issues Plan and track work * Code Review Manage code changes * Code Quality Enforce quality at merge * APPLICATION SECURITY * GitHub Advanced Security Find and fix vulnerabilities * Code security Secure your code as you build * Secret protection Stop leaks before they start * EXPLORE * Why GitHub * Documentation * Blog * Changelog * Marketplace View all features * Solutions * BY COMPANY SIZE * Enterprises * Small and medium teams * Startups * Nonprofits * BY USE CASE * App Modernization * DevSecOps * DevOps * CI/CD * View all use cases * BY INDUSTRY * Healthcare * Financial services * Manufacturing * Government * View all industries View all solutions * Resources * EXPLORE BY TOPIC * AI * Software Development * DevOps * Security * View all topics * EXPLORE BY TYPE * Customer stories * Events & webinars * Ebooks & reports * Business insights * GitHub Skills * SUPPORT & SERVICES * Documentation * Customer support * Community forum * Trust center * Partners View all resources * Open Source * COMMUNITY * GitHub Sponsors Fund open source developers * PROGRAMS * Security Lab * Maintainer Community * GitHub Stars * Archive Program * REPOSITORIES * Topics * Trending * Collections * Enterprise * ENTERPRISE SOLUTIONS * Enterprise platform AI-powered developer platform * AVAILABLE ADD-ONS * GitHub Advanced Security Enterprise-grade security features * Copilot for Business Enterprise-grade AI features * Premium Support Enterprise-grade 24/7 support * Pricing Search / Sign in Sign up Appearance settings You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert Uh oh! There was an error while loading. Please reload this page . github / archive-program Public * Notifications You must be signed in to change notification settings * Fork 261 * Star 3.1k * Code * Issues 11 * Pull requests 14 * Actions * Projects * Security and quality 0 * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Projects * Security and quality * Insights Files Expand file tree master Breadcrumbs * archive-program / TheTechTree.md Copy path Blame More file actions Blame More file actions Latest commit   History History History 367 lines (191 loc) · 21.9 KB master Breadcrumbs * archive-program / TheTechTree.md Copy path Top File metadata and controls * Preview * Code * Blame 367 lines (191 loc) · 21.9 KB Raw Copy raw file Download raw file Outline Edit and raw actions GitHub Arctic Code Vault: Tech Tree Introduction: A Guide To The Tech Tree What follows, which we call the Tech Tree, is a selection of works intended to describe how the world makes and uses software today, as well as an overview of how computers work and the foundational technologies required to make and use computers. The purpose of the GitHub Archive Program is to preserve open source software for future generations. This implies also preserving the knowledge of other technologies on which open-source software runs, along with a depiction of the open-source movement which brought this software into being. This initial version of the Tech Tree will consist almost entirely of copies of pre-existing works, none of which were written for an unknown audience a long way into the future. As such it is not so much a guide as a collection of resources that we hope will be historically interesting and/or useful. We have tried to strike a balance between abstract/theoretical and concrete/practical work, and to provide at least an overview of the entire technical stack on which modern software engineering rests. In addition to this technical documentation, we have also included a selection of artistic, cultural, and historical works, to help describe the overall cultural context in which this archive was created. A data dump of an entire 2020 snapshot of Wikipedia in the archive's five primary languages, along with a snapshot of Stack Overflow and sundry other smaller data collections, is also stored alongside the works itemized below. The current iteration of the Tech Tree is loosely divided into the following thirteen sections: * Fundamentals of computing and the Internet: the essentials of how computers work, and, at least as important to today's world, how they are connected together into a single planetary network which includes most of the computers on Earth. * Algorithms and data structures: processes, sets of rules, and methods of arranging data to solve common categories of problems in efficient ways. Metaphorically, algorithms are the intelligence in a software program, and data structures are its storage. * Compilers, assembler, and operating systems: how written source code becomes the machine code which causes the electrical signals inside a computer to change in a controlled manner, and the theory of operating systems, the software which supports a computer's basic functions and provides the fundamental, low-level functionality that all other software ultimately calls upon. * Programming languages: some of the world's most popular and widely used programming languages described in detail. While, fundamentally, any program can be written in any language, certain languages are better or worse at particular tasks. * Networking and connectivity: how computers connect to one another, via physical wires and radio signals, both one-on-one and in larger networks. Includes descriptions of the structure of the global "network of networks" known as the Internet, which connects most of the computers on Earth. * Modern software development: the processes and procedures of dealing with software projects, tools, and services at scale, with constant monitoring and communication, at assured levels of quality. * Modern software applications: in-depth description of applications such as Web development (the Web is, essentially, that part of the Internet used to display output and receive input from human beings); scientific research and analysis; image processing; pattern recognition and generation via neural networks; software distributed across many different computers; cryptocurrencies, which can be used as a platform for trustless decentralized software; and the new field of quantum computing. * Hardware architectures: the concepts, structures, and layout of computer hardware. Hardware refers to physical electronic components; hardware architecture refers to how those components are structured and connected in order to run software; and software ultimately becomes ephemeral patterns of electricity within those physical components. * Hardware development: how to build simple computers from collections of electronic components. * Electronic components, transistors, semiconductor manufacturing: those electronic components which predated computers, along with individual transistors, the component from which computers are made, and an overview of the technologies and processes of fabricating interconnected transistors at scale. * Pre-industrial technologies: technologies of eras which predated electricity. * Fiction, culture, and history: human histories and changing human cultures, mostly through the lens of celebrated fictional narratives written over the last 150 years. * Cultural context: information about humanity at the time the Tech Tree was created; in particular, a snapshot of Wikipedia, a collectively generated repository of all sorts of information about our world. Due to Wikipedia's enormous size, this section is provided as encoded data, like the rest of the archive, rather than as visual/readable pages. The first seven sections are devoted to software, the purpose and content of the GitHub Arctic Code Vault, and its uses and applications. The next four sections describe the technologies required to construct computers on which software might run. The remaining two are intended to illustrate the human context in which these technologies have been developed, the stories the cultures of our era told, the languages in which we told them, and the factual background and descriptions of the world in which we lived. The Tech Tree is part of the much larger GitHub Arctic Code Vault. As such, it also includes, as an appendix, visual copies of the Guide to the GitHub Code Vault, along with an index of the archive's fifteen thousand most significant code repositories, including brief descriptions and locations within the archive. It is perhaps worth noting that our advisory board stressed that ours is likely to be the best-documented era in human history by far, so bundling the Tech Tree with the archive is likely to be more convenient than essential for its inheritors. As such, it is entirely possible -- indeed quite likely -- that its value will consist largely of providing context regarding the era and culture in which the archive was created, rather than as a source of new and unavailable knowledge, though of course there are imaginable futures in which it plays the latter role. What follows is a brief summary of each section, describing both the general topics it covers, and the works the Tech Tree includes to document our current understanding of those topics. Fundamentals of computing and the Internet These books describe what computers are, from the silicon up -- electricity, transistors, binary logic, digital gates, bits, bytes, chips, ALUs, microprocessors, software -- as well as introducing what they can do. It also includes books which describe, at a high level, how computers can be connected together, and what that means. The works in question are: The Pattern On The Stone by W. Daniel Hills (Basic Books) But How Do It Know? by J. Clark Scott (John C Scott) Code: The Hidden Language of Computer Hardware and Software by Charles Petzold (Pearson Education) Computer Fundamentals by Anita Goel (Pearson Education) How The Internet Really Works by Ulrike Uhlig, Mallory Knodel, Niels ten Oever, Corinne Cath, and Catnip (No Starch) Algorithms and data structures These are the fundamentals of computer science, and hence the foundation of software engineering; describing how data is structured and stored, and the most effective and efficient ways in which it can be processed. The Art of Computer Programming by Donald Knuth (Pearson) Algorithmic Thinking by Daniel Zingaro (No Starch) Sequential and Parallel Algorithms and Data Structures by Peter Sanders, Kurt Mehlhorn, Martin Dietzfelbinger, Roman Dementiev (Springer) Cryptography by Simon Rubinstein-Salzedo (Springer) Mastering SciPy by Francisco J. Blanco-Silva (Packt) Everyday Data Structures by William Smith (Packt) Database Internals by Alex Petrov (O'Reilly) Introduction to the Theory of Computation by Michael Sipser (Cengage) Think Like A Programmer by V. Anton Spraul (No Starch) Write Great Code by Randall Hyde (No Starch) Compilers, assembler, and operating systems The purpose of the Archive Program is to preserve software, and these are the fundamental building blocks of software. These books help to explain how high-level written software becomes low-level electrical impulses: A Practical Approach To Compiler Construction by Des Watson (Springer) The Secret Life Of Programs by Jonathan Steinhart (No Starch) The Art of Assembly Language by Randall Hyde (No Starch) Understanding the Linux Kernel by Daniel P. Bovet and Marco Cesati (O'Reilly) Mastering Linux Kernel Development by Raghu Bharadwaj (Packt) The Linux Programming Interface by Michael Kerrick (No Starch) Programming languages There are hundreds of programming languages; the enormous chart visualizing their evolution at the Computer History Museum is worth visiting if you're a developer, and we don't intend to document them all. Still, accessible book-length descriptions of a selection of the world's major languages seems desirable. Introducing Python by Bill Lubanovic (O'Reilly) Comprehensive Ruby Programming by Jordan Hudgens (Packt) LISP, Lore, and Logic by W. Richard Stark (Springer) The C Programming Language by Kernighan and Ritchie (Pearson) Learn C The Hard Way by Zed Shaw (Pearson) Head First C by David Griffiths, Dawn Griffiths (O'Reilly) Effective C by Robert Seacord (No Starch) The C++ Primer by Stanley B. Lippman, Josée Lajoie, and Barbara E. Moo (Pearson) Programming Rust by Jim Blandy and Jason Orendorff (O'Reilly) The Rust Programming Language by Steve Klabnik and Carol Nichols (No Starch Press) The Go Programming Language by Alan A. A. Donovan and Brian W. Kernighan (Pearson) Head First Go by Jay McGavren (O'Reilly) Learning Java by Patrick Niemeyer and Daniel Leuck (O'Reilly) The Java Virtual Machine Specification by Tim Lindholm, Frank Yellin, Gilad Bracha, and Alex Buckley (Pearson) JavaScript: The Definitive Guide by David Flanagan (O'Reilly) JavaScript: The Good Parts by Douglas Crockford (O'Reilly) Automate the Boring Stuff with Python by Al Sweigart (No Starch) Learning Swift by Jonathon Manning, Paris Buttfield-Addison, and Tim Nugent (O'Reilly) Introducing Erlang by Simon St. Laurent (O'Reilly) Clojure Programming by Chas Emerick, Brian Carper, and Christophe Grand (O'Reilly) Clojure for the Brave and True by Daniel Higginbotham (No Starch) The Art of R Programming by Norman Matloff (No Starch) Mastering Scientific Computing with R by Paul Gerrard and Radia M. Johnson (Packt) Learn You A Haskell For Great Good by Miran Lipovaca (No Starch) Networking and connectivity Computers are great, but in a way, so 20th century; it's networked computers which are, at least arguably, the real technical revolution of the 21st. As such our networking protocols and technologies deserve considerable attention. We might hope our inheritors will either have long surpassed our networking, or will have the freedom to design anew rather than be shackled by all the compromises we've needed to make for the sake of backwards compatibility but either way, hopefully they can learn something from what we've done. Which is described by: Cabling: The Complete Guide To Copper and Fiber-Optic Networking by Andrew Oliviero and Bill Woodward (Wiley) Ethernet: The Definitive Guide by Charles E. Spurgeon and Joann Zimmerman (O'Reilly) Understanding TCP/IP by Alena Kabelová and Libor Dostálek (Packt) TCP/IP Essentials by Shivendra S. Panwar, Shiwen Mao, Jeong-dong Ryoo, and Yihan Li (Cambridge) DNS and BIND by Cricket Liu and Paul Albitz (O'Reilly) BGP by Iljitsch van Beijnum (O'Reilly) HTTP: The Definitive Guide by David Gourley, Brian Totty, Marjorie Sayer, Anshu Aggarwal, and Sailu Reddy (O'Reilly) Implementing SSL / TLS Using Cryptography and PKI by Joshua Davies (Wiley) Nginx HTTP Server by Martin Fjordvald and Clement Nedelcu (Packt) sendmail by Bryan Costales, Claus Assmann, George Jansen, and Gregory Neil Shapiro (O'Reilly) Programming Internet Email by David Wood (O'Reilly) Data Communications and Networking by Behrouz A. Forouzan (McGraw-Hill) Computer Networking: Principles, Protocols, and Practice by Olivier Bonaventure (Pearson) Computer Networking: A Top-down Approach by Jim Kurose (Pearson) Modern software development The line-by-line act of writing software is quite different from the team-by-team process of developing, testing, integrating, and deploying it. A few key approaches, tools, and roles are described here, including, for obvious reasons, unpacking Git itself. Working in Public: The Making and Maintenance of Open Source Software by Nadia Eghbal (Stripe Press) / The Manager's Path by Camille Fournier (O'Reilly) The Missing README by Chris Riccomini and Dmitriy Ryaboy (No Starch) Learning Agile by Andrew Stellman and Jennifer Greene (O'Reilly) Professional Git by Brent Laster (Wiley) Tangled Web: A Guide to Securing Modern Web Applications by Michal Zalewski (No Starch) Metasploit by David Kennedy, Jim O'Gorman, Devon Kearns, and Mati Aharoni (No Starch) Effective DevOps by Jennifer Davis and Ryn Daniels (O'Reilly) Site Reliability Engineering edited by Betsy Beyer, Chris Jone, Jennifer Petoff & Niall Richard Murphy (O'Reilly) Designing Distributed Systems by Brendan Burns (O'Reilly) Designing Data-Intensive Applications by Martin Kleppmann (O'Reilly) Exercises in Programming Style by Cristina Videira Lopes (CRC Press) Modern software applications It would take a tech forest, not a tree, to even try to describe all of the uses to which software is put. However, some depictions of how individual projects and libraries are knit together into powerful networked applications seem valuable, as do overviews of e.g. virtualization, "big data" software, and especially machine learning. Web development Web Development with Node and Express by Ethan Brown (O'Reilly) Flask Web Development by Miguel Grinberg (O'Reilly) RESTful Web APIs by Leonard Richardson, Mike Amundsen, Sam Ruby (O'Reilly) Ruby on Rails Tutorial by Michael Hartl (Pearson) Django for Professionals: Production Websites with Python & Django by William S. Vincent (Still River) Machine learning Deep Learning from Scratch by Seth Weidman (O'Reilly) Deep Learning: A Visual Approach by Andrew Glassner Fundamentals of Deep Learning by Nikhil Buduma and Nicholas Locascio (O'Reilly) Practical Convolutional Neural Networks by Mohit Sewak, Md. Rezaul Karim, and Pradeep Pujari (Packt) Pattern Recognition and Machine Learni

Links found on this page

  1. Skip to content [direct]
  2. Sign in [direct]
  3. GitHub Copilot Write better code with AI [direct]
  4. GitHub Copilot app Direct agents from issue to merge [direct]
  5. MCP Registry Integrate external tools [direct]
  6. Actions Automate any workflow [direct]
  7. Codespaces Instant dev environments [direct]
  8. Issues Plan and track work [direct]
  9. Code Review Manage code changes [direct]
  10. Code Quality Enforce quality at merge [direct]
  11. GitHub Advanced Security Find and fix vulnerabilities [direct]
  12. Code security Secure your code as you build [direct]
  13. Secret protection Stop leaks before they start [direct]
  14. Why GitHub [direct]
  15. Documentation [direct]
  16. Blog [direct]
  17. Changelog [direct]
  18. Marketplace [direct]
  19. View all features [direct]
  20. Enterprises [direct]
  21. Small and medium teams [direct]
  22. Startups [direct]
  23. Nonprofits [direct]
  24. App Modernization [direct]
  25. DevSecOps [direct]
  26. DevOps [direct]
  27. CI/CD [direct]
  28. View all use cases [direct]
  29. Healthcare [direct]
  30. Financial services [direct]
  31. Manufacturing [direct]
  32. Government [direct]
  33. View all industries [direct]
  34. View all solutions [direct]
  35. AI [direct]
  36. Software Development [direct]
  37. DevOps [direct]
  38. Security [direct]
  39. View all topics [direct]
  40. Customer stories [direct]
  41. Events & webinars [direct]
  42. Ebooks & reports [direct]
  43. Business insights [direct]
  44. GitHub Skills [direct]
  45. Customer support [direct]
  46. Community forum [direct]
  47. Trust center [direct]
  48. Partners [direct]
  49. View all resources [direct]
  50. GitHub Sponsors Fund open source developers [direct]
  51. Security Lab [direct]
  52. Maintainer Community [direct]
  53. GitHub Stars [direct]
  54. Archive Program [direct]
  55. Topics [direct]
  56. Trending [direct]
  57. Collections [direct]
  58. Copilot for Business Enterprise-grade AI features [direct]
  59. Premium Support Enterprise-grade 24/7 support [direct]
  60. Pricing [direct]
  61. Sign up [direct]
  62. github [direct]
  63. archive-program [direct]
  64. Notifications [direct]
  65. Issues 11 [direct]
  66. Pull requests 14 [direct]
  67. Actions [direct]
  68. Projects [direct]
  69. Security and quality 0 [direct]
  70. Insights [direct]
  71. archive-program [direct]
  72. History [direct]
  73. Raw [direct]
  74. Terms [direct]
  75. Privacy [direct]
  76. Security [direct]
  77. Status [direct]
  78. Community [direct]
  79. Contact [direct]