Advertisement
Advertisement

More Related Content

Similar to All good things scale - ohs 2020 - 03.13.2020(20)

Advertisement

All good things scale - ohs 2020 - 03.13.2020

  1. All Good Things Scale 10th Open Hardware Summit - 03.13.2020 Amanda (w0z) Wozniak
  2. This is more of a story than a how-to checklist! Throwback! Although, I think I’m the first to clip this slide from 2010….
  3. What does it take to make great things happen? ● Technology ● People ● Process
  4. Put another way... ● Goals ● People ● Tools
  5. This is not a joke! ● Right Tools + ● Right Squad = ● SQUAD GOALS
  6. A long time ago… Alice wanted to write code.
  7. A Brief History of Software’s Increasing Utility 1950s - Formally Provable Languages FORTRAN and COBOL - great for high-reliability but challenging to use 1972 - C Bell Labs creates ‘C’ 1978 - C “The C Programming Language” makes ‘C’ accessible to coders 1989 - C++ 2.0 object oriented programming of the future (with documentation) 1990s - Moar Languages! new languages emphasize “codeability” and formalism and many use common build tools and linkers (GNU) 1965 - Object Oriented 1967 - Libraries + Linking SIMULA 67 combines object oriented programming with classes, libraries, and compile-time linking https://en.wikipedia.org/wiki/History_of_programming_languages https://en.wikipedia.org/wiki/Library_(computing)
  8. A Brief History of Software Development + Dev Tools 1969 - Punchcards good luck debugging that run 2001 - SVN Bootstraps 2001 - IBM frees ECLIPSE syntax highlighting, an integrated compiler, debugger, unit test AND multi-user source control? 2005 - GIT is born linux kernel developer count grows from ~1 to ~3,700 2016 - GitHub Goes Big > 14,000,000 users > 35,000,000 repos biggest code repository on Earth https://www.iri.com/blog/iri/business/brief-history-of-eclipse/ https://blog.codinghorror.com/fifty-years-of-software-development/ 1976 - Text Editors vi + emacs start a religious war
  9. What made ECLIPSE and GIT so good that no one jokes about ‘vi’ anymore?
  10. Eclipse User-Friendly Workspace - Syntax highlighting - Code Navigation - Code Completion - Multiple language support - Multiple OS support All The Tools In One Spot - Debugger - Unit Test - Refactoring - Source Control / Versioning FREE - FREE - FREE - FREE https://en.wikipedia.org/wiki/Syntax_highlighting
  11. GIT (and GitHub) Takes the Pain out Multiple Users Participating in a Software Project - Hosting + Sharing == More Devs - Push/Pull/Merge - Code Review - Automated Build Tools + Unit Test - Continuous Integration Practically Builds Itself - Community == Acceleration - Tool-based Bootstrapping FREE - FREE - FREE - FREEhttps://en.wikipedia.org/wiki/Continuous_integration https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg
  12. Let’s decompile the recipe for success into ingredients!
  13. accessibility BUILD TOOLS SO USABLE THAT TODAY’S NOVICES CAN CONTRIBUTE 10x MORE THAN LAST YEAR’S EXPERTS WITH HALF THE SWEARING
  14. Accessible Design Principles ● Use Classes + Inheritance ● Provide Great Libraries ● Seamless Linking ● Seamless Build Systems ● Clean User + Design Interfaces ● Intuitive Syntax ● Limit Use Error Through Design ● Remove User Touches ● Write Thoughtful Error Messages ● Democratize Expertise: Through Process + Offloading don’t be like MakeFiles! https://edublocks.org/circuitpy.html https://oshpark.com/ https://fritzing.org/home/
  15. test TEST IS THE PRODUCT BEHIND THE PRODUCT https://www.bunniestudios.com/blog/?p=5450
  16. Test Drives Innovation... No/Bad Test Drives Failure ● Test is a product, too! (and 3-4x the work) (with all the UX requirements) ● Test is for HW and SW ● Integrated Test is Best ● Some Test > No Test ● Real, online test unlocks exponential design velocity https://www.bunniestudios.com/blog/?p=5450
  17. automation TEDIOUS, ERROR-PRONE, MANUAL REPETITION IS ENTROPY PROFOUND CREATIVITY REQUIRES STRATEGIC LAZINESS https://www.bunniestudios.com/blog/?p=5450
  18. Automation Requires A Stable Foundation Open Source HW Comes in Many Stable, Mature Flavors ● Arduino ● Circuit Playground Git Automates FW Builds for HW Adafruit CircuitPython Stats on Git Action ● each PR builds against 116 boards in 12 languages ● automated 12 platform checks for Arduino hardware https://circuitpython.org/downloads https://github.com/adafruit/circuitpython/pulls?q=is%3Apr+is%3Aclosed
  19. scale EVEN IF I’M SMART - ONE ME IS NOT SMARTER THAN ALL OF YOU
  20. Open Source (hardware) Tools EE Core Development - KiCad + ngspice ME Core Development - FreeCAD Accessible CAD Front-End - Fritzing Hierarchical Design Reuse - none yet! Pull + Merge Tools for HW - none yet! Unit Test + Debug in CAD - none yet Manufacturing + Repo: OSHPark https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-004-computation-structures-spring-2009/tools/
  21. … there’s a secret ingredient
  22. altruism WISE SELFISHNESS MEANS PEOPLE WITH EXPERTISE, TIME, AND RESOURCES CONTRIBUTE TO PROJECTS FOR THE SAKE OF ENABLING MORE PEOPLE TO CONTRIBUTE TO COLLECTIVE GOALS
  23. … so what happens next?
  24. A Brief History of Open Source Hardware Tools 1992 - Basic HW CAD KiCad is released, creating open-source schematic capture and PCB design 2021 - Hierarchical Design benevolent group with massive engineering resources releases first open-source visual circuit editor with modular circuit libraries 2023 - Usable Hardware Unit Test Part and circuit libraries add behavioral test support 2031 - Full Collab Mode > 10,000 users > 30,000 repos open source HW designs are mature, robust, and everywhere 1993 - Low-Level Sim ngspice can simulate low-level circuits (current, voltage, transients) http://ngspice.sourceforge.net/resources.html https://esim.fossee.in/ 2024 - Concurrent Design version sets for sch/pcb capture + test
  25. Community-Created Tools and Libraries of Expertise Build The Dream
  26. Thanks! Questions? Comments? Concerns? woz@mit.edu
Advertisement