$30 off During Our Annual Pro Sale. View Details »

developing open-source software

Aman Karmani
September 27, 2022

developing open-source software

an intro on how to get involved

Aman Karmani

September 27, 2022
Tweet

More Decks by Aman Karmani

Other Decks in Technology

Transcript

  1. Aman Gupta Karmani · github.com/tmm1
    developing
    open-source software
    an intro on how to get involved

    View Slide

  2. • open-source enthusiast &
    developer for 20 years

    • early engineer @ GitHub

    • thousands of open-source
    contributions

    • ruby: rails, eventmachine, ruby-
    core, pro
    fi
    lers

    • golang programming language

    • ios/android libraries


    ff
    mpeg/mpv multimedia

    • pytorch, stable-di
    ff
    usion
    Aman Karmani · @tmm1
    about me

    View Slide

  3. View Slide

  4. what is open source?

    View Slide

  5. View Slide

  6. pick your battles
    why open source?

    Operating System

    Device Drivers
    Framework
    Libraries
    Proprietary


    Business Logic
    }
    } closed source
    trade secret
    speci
    fi
    c to your product/business
    open source
    shared infrastructure
    community adding features
    edge case bugs found and
    fi
    xed
    credit cards

    images
    http

    webserver
    tcp/ip

    network stack
    memory
    management


    process
    scheduling

    View Slide

  7. open-source is
    a super power
    control your own destiny
    • look behind the scenes,
    instead of getting stuck

    • every change documented
    for future devs (+ you)

    • who changed it and
    when

    • what lines changed
    where

    • why why why

    View Slide

  8. how does open source work?
    code

    (version control)

    discussion

    (code review)

    View Slide

  9. case study
    open-source software for tax returns

    View Slide

  10. OpenTaxSolver
    20 years old!
    • written in C

    • subversion source control

    • hosted on sourceforge

    • GPLv2, contribute patches
    via email

    • mailing list + facebook
    group for discussion

    View Slide

  11. since 1996!
    excel1040
    • written in excel macros
    (!)

    • no source control

    no license

    • can it be called open-
    source?

    • hosted on google sites

    • contribute bug reports
    via email

    View Slide

  12. • written in TypeScript and
    React.js

    • git for source control

    • AGPL3, hosted on GitHub

    • discord discussions

    • automation: CI, codecov,
    dependabot, code formatting
    newcomer
    UsTaxes.org

    View Slide

  13. let’s contribute!

    View Slide

  14. • with the project

    • README, contribution guidelines, coding style

    • recent discussions, upcoming releases and goals

    • with the code base

    • look at open and recently closed issues

    • read through open and merged pull requests

    • what libraries, languages and frameworks are used?

    • how to setup a development environment?
    familiarize yourself
    let’s contribute

    View Slide

  15. start small
    let’s contribute

    View Slide

  16. documentation
    and project
    planning
    not all
    contributions
    are code
    let’s
    contribute

    View Slide

  17. let’s contribute
    setup development environment

    View Slide

  18. let’s contribute
    setup development environment

    View Slide

  19. document for the future
    let’s contribute

    View Slide

  20. document for the future
    let’s contribute

    View Slide

  21. copy existing patterns and style
    let’s contribute

    View Slide

  22. code review and scope creeeeeeeep
    let’s contribute

    View Slide

  23. code review and scope creeeeeeeep
    let’s contribute

    View Slide

  24. code review and scope creeeeeeeep
    let’s contribute

    View Slide

  25. bug
    fi
    x: follow the open source
    let’s contribute
    ??

    View Slide

  26. bug
    fi
    x: follow the open source
    let’s contribute

    View Slide

  27. bug
    fi
    x: follow the open source
    let’s contribute
    isMobile = is mobile or tablet!

    View Slide

  28. bug
    fi
    x: follow the open source
    let’s contribute

    View Slide

  29. fi
    x bugs that a
    ff
    ect you
    let’s contribute

    View Slide

  30. let’s create open-source!
    from inspiration to implementation

    View Slide

  31. inspiration
    let’s create

    View Slide

  32. inspiration
    let’s create
    🎉

    View Slide

  33. inspiration
    let’s create
    🎉

    View Slide

  34. inspiration
    let’s create
    • NBER is a
    non-pro
    fi
    t
    doing
    academic
    research
    on tax
    policy

    • TAXSIM
    project
    started in
    the 1970s
    using
    Fortran

    View Slide

  35. let’s create
    inspiration: taxsim.nber.org

    View Slide

  36. let’s create
    inspiration: taxsim.nber.org

    View Slide

  37. let’s create
    inspiration
    Your Tax Data
    Your Computer NBER Server
    Results

    View Slide

  38. let’s create
    inspiration
    Your Tax Data
    Your Computer NBER Server
    Results
    • latency issues

    • 100ms, possibly more from west coast

    • no instant feedback = limited UI choices

    • privacy issues

    • tra
    ff i
    c might be sni
    ff
    ed

    • inputs could end up in log
    fi
    les unknowingly

    View Slide

  39. let’s create
    inspiration
    Your Tax Data
    Your Computer NBER Server
    Results
    🚫

    View Slide

  40. let’s create
    inspiration
    Your Tax Data
    Your Computer NBER Server
    Results
    🚫
    • runs locally = instant
    results (1ms)

    • no internet access
    required

    • data never leaves
    your device

    View Slide

  41. let’s create
    inspiration
    • 30,000 lines
    • Fortran 77
    • “
    fi
    xed
    mode” from
    1950s
    punchcards

    fi
    rst 6
    columns
    have special
    meanings
    • 2.3MB of
    source code
    in one
    fi
    le

    View Slide

  42. let’s create
    the source

    View Slide

  43. let’s create
    the source

    View Slide

  44. let’s create
    the source

    View Slide

  45. let’s create
    the source

    View Slide

  46. let’s create
    the source

    View Slide

  47. let’s create
    the result: https://taxsim.app

    View Slide

  48. let’s create
    the result: https://taxsim.app

    View Slide

  49. let’s create
    the result: https://taxsim.app

    View Slide

  50. let’s create
    the power of open-source

    View Slide

  51. let’s give
    back
    the power of
    open-source
    software

    View Slide

  52. let’s give
    back
    the power of
    open-source
    software

    View Slide

  53. questions?
    Aman Karmani
    [email protected] · github.com/tmm1

    View Slide