opendp

The core library of differential privacy algorithms powering the OpenDP Project.

https://github.com/opendp/opendp

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    2 of 12 committers (16.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.5%) to scientific vocabulary

Keywords

differential-privacy dp-programming-framework opendp opendp-commons privacy
Last synced: 6 months ago · JSON representation ·

Repository

The core library of differential privacy algorithms powering the OpenDP Project.

Basic Info
  • Host: GitHub
  • Owner: opendp
  • License: mit
  • Language: Rust
  • Default Branch: main
  • Homepage: https://docs.opendp.org
  • Size: 834 MB
Statistics
  • Stars: 379
  • Watchers: 13
  • Forks: 61
  • Open Issues: 301
  • Releases: 23
Topics
differential-privacy dp-programming-framework opendp opendp-commons privacy
Created about 5 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License Code of conduct Citation Security

README.md

OpenDP logo

Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public. License: MIT

Python R Rust

main CI nightly CI doc-check CI

The OpenDP Library is a modular collection of statistical algorithms that adhere to the definition of differential privacy. It can be used to build applications of privacy-preserving computations, using a number of different models of privacy. OpenDP is implemented in Rust, with bindings for easy use from Python and R.

The architecture of the OpenDP Library is based on a conceptual framework for expressing privacy-aware computations. This framework is described in the paper A Programming Framework for OpenDP.

The OpenDP Library is part of the larger OpenDP Project, a community effort to build trustworthy, open source software tools for analysis of private data. (For simplicity in these docs, when we refer to “OpenDP,” we mean just the library, not the entire project.)

Status

OpenDP is under development, and we expect to release new versions frequently, incorporating feedback and code contributions from the OpenDP Community. It's a work in progress, but it can already be used to build some applications and to prototype contributions that will expand its functionality. We welcome you to try it and look forward to feedback on the library! However, please be aware of the following limitations:

OpenDP, like all real-world software, has both known and unknown issues. If you intend to use OpenDP for a privacy-critical application, you should evaluate the impact of these issues on your use case.

More details can be found in the Limitations section of the User Guide.

Installation

Install OpenDP for Python with pip (the package installer for Python):

$ pip install opendp

Install OpenDP for R from an R session:

install.packages("opendp", repos = "https://opendp.r-universe.dev")

More information can be found in the Getting Started section of the User Guide.

Documentation

The full documentation for OpenDP is located at https://docs.opendp.org. Here are some helpful entry points:

Getting Help

If you're having problems using OpenDP, or want to submit feedback, please reach out! Here are some ways to contact us:

Contributing

OpenDP is a community effort, and we welcome your contributions to its development! If you'd like to participate, please contact us! We also have a contribution process section in the Contributor Guide.

Owner

  • Name: OpenDP
  • Login: opendp
  • Kind: organization
  • Email: info@opendp.org

Open Differential Privacy

Citation (CITATION.cff)

abstract: >-
  The OpenDP Library is a modular collection of statistical algorithms that adhere to the definition of
  differential privacy. It can be used to build applications of privacy-preserving computations, using a number
  of different models of privacy. OpenDP is implemented in Rust, with bindings for easy use from Python.
authors:
  # Just taking contributors from the list in order.
  # https://github.com/opendp/opendp/graphs/contributors
  # In a few cases the name wasn't transparent on github and a little research was needed.
  - family-names: Shoemate # Shoeboxam
    given-names: Michael
  - family-names: Vyrros # andrewvyrros
    given-names: Andrew
  - family-names: McCallum # mccalluc
    given-names: Chuck
  - family-names: Prasad # raprasad
    given-names: Raman
  - family-names: Durbin # pdurbin
    given-names: Philip 
  - family-names: Casacuberta Puig # silviacasac
    given-names: Sílvia 
  - family-names: Cowan # ecowan
    given-names: Ethan
  - family-names: Xu # matchaginseng
    given-names: Vicki
  - family-names: Ratliff # zachratliff
    given-names: Zachary
  - family-names: Berrios # nbcl
    given-names: Nicolás
  - family-names: Whitworth # alexWhitworth
    given-names: Alex
  - family-names: Eliot # michaeleliot
    given-names: Michael
  - family-names: Lebeda # ChristianLebeda
    given-names: Christian
  - family-names: Renard # orespo
    given-names: Oren
  - family-names: McKay Bowen # ClaireMcKayBowen
    given-names: Claire
cff-version: 1.2.0
contact:
  - email: info@opendp.org
    name: The OpenDP Team
    website: https://opendp.org
identifiers:
  - type: url
    value: https://github.com/opendp/opendp
license: MIT
message: If you use this software, please cite it using the metadata from this file.
references:
  - abstract: >-
      In this working paper, we propose a programming framework for the library of differentially private
      algorithms that will be at the core of the OpenDP open-source software project, and recommend programming
      languages in which to implement the framework.
    authors:
    - family-names: Hay
      given-names: Michael
    - family-names: Gaboardi
      given-names: Marco
    - family-names: Vadhan
      given-names: Salil
    conference:
      date-end: 2020-05-15
      date-start: 2020-05-13
      name: 2020 OpenDP Community Meeting
    status: preprint
    title: A Programming Framework for OpenDP
    type: conference-paper
    url: https://projects.iq.harvard.edu/files/opendp/files/opendp_programming_framework_11may2020_1_01.pdf
    year: 2020
repository-artifact: https://pypi.org/project/opendp
repository-code: https://github.com/opendp/opendp
title: OpenDP Library
type: software
url: https://github.com/opendp/opendp

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 221
  • Total Committers: 12
  • Avg Commits per committer: 18.417
  • Development Distribution Score (DDS): 0.344
Top Committers
Name Email Commits
Michael Shoemate s****m@g****m 145
Andrew Vyrros 6****s@u****m 48
Philip Durbin p****n@h****u 10
Raman Prasad r****d@h****u 8
Ethan Cowan e****4@g****m 3
Christian Lebeda c****e@i****k 1
Alex Whitworth a****h@u****m 1
Claire McKay Bowen c****n@u****g 1
Oren 5****o@u****m 1
Sourav s****y@g****m 1
silviacasac 4****c@u****m 1
Michael Eliot m****t@p****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 1,006
  • Total pull requests: 1,318
  • Average time to close issues: 5 months
  • Average time to close pull requests: about 2 months
  • Total issue authors: 28
  • Total pull request authors: 27
  • Average comments per issue: 0.54
  • Average comments per pull request: 1.15
  • Merged pull requests: 831
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 221
  • Pull requests: 364
  • Average time to close issues: 22 days
  • Average time to close pull requests: 21 days
  • Issue authors: 7
  • Pull request authors: 9
  • Average comments per issue: 0.12
  • Average comments per pull request: 0.98
  • Merged pull requests: 195
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mccalluc (434)
  • Shoeboxam (381)
  • raprasad (76)
  • andrewvyrros (46)
  • ankke (13)
  • GKD-stack (12)
  • chikeabuah (9)
  • PaulineMauryL (7)
  • shlomihod (6)
  • TedTed (3)
  • samhaney (2)
  • joshua-oss (1)
  • damienbfs (1)
  • Bogzworth (1)
  • rionides (1)
Pull Request Authors
  • mccalluc (650)
  • Shoeboxam (528)
  • GKD-stack (28)
  • ankke (18)
  • PaulineMauryL (13)
  • andrewvyrros (12)
  • damienbfs (10)
  • shlomihod (10)
  • raprasad (8)
  • chikeabuah (7)
  • matchaginseng (4)
  • tudorcebere (4)
  • silviacasac (3)
  • maxine-park (3)
  • zachratliff (2)
Top Labels
Issue Labels
docs (180) bug (89) polars-integration (54) CI (41) docs-restructure (34) Effort 2 - Medium :cookie: (29) Polars integration (26) Effort 1 - Small :coffee: (24) R-bindings (22) usability (21) good first issue (20) review (14) polars parity (13) Effort 3 - Large :cake: (12) web (10) Polars (9) Proof (8) SmartNoise (8) docs-education (7) Context API (6) Effort 4 - Too Large :oncoming_bus: (4) Priority 1 - High :zap: (4) Polars API (4) docs-polars (4) synthetic (3) polars-api (2) placeholder (1) Priority 3 - Low :sunflower: (1)
Pull Request Labels
Proof (37) polars-integration (37) docs (36) CI (32) vetting (24) docs-polars (15) Polars integration (12) docs-restructure (8) R-bindings (7) polars parity (2) bug (2) good first issue (1) SmartNoise (1) Effort 3 - Large :cake: (1)

Packages

  • Total packages: 6
  • Total downloads:
    • pypi 37,888 last-month
    • cargo 764,586 total
  • Total docker downloads: 120
  • Total dependent packages: 13
    (may contain duplicates)
  • Total dependent repositories: 4
    (may contain duplicates)
  • Total versions: 1,194
  • Total maintainers: 5
pypi.org: opendp

Python bindings for the OpenDP Library

  • Versions: 312
  • Dependent Packages: 8
  • Dependent Repositories: 4
  • Downloads: 37,888 Last month
  • Docker Downloads: 120
Rankings
Dependent packages count: 1.0%
Downloads: 2.5%
Average: 4.4%
Stargazers count: 4.4%
Forks count: 6.1%
Dependent repos count: 7.8%
Last synced: 6 months ago
proxy.golang.org: github.com/opendp/opendp
  • Versions: 24
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 6.0%
Average: 6.2%
Dependent repos count: 6.4%
Last synced: 6 months ago
crates.io: opendp

A library of differential privacy algorithms for the statistical analysis of sensitive private data.

  • Versions: 293
  • Dependent Packages: 2
  • Dependent Repositories: 0
  • Downloads: 271,500 Total
Rankings
Forks count: 9.7%
Stargazers count: 10.8%
Dependent packages count: 11.4%
Average: 17.0%
Downloads: 23.7%
Dependent repos count: 29.3%
Maintainers (1)
Last synced: 6 months ago
crates.io: opendp-ffi

Foreign function interfaces for the OpenDP library.

  • Versions: 16
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 17,622 Total
Rankings
Forks count: 9.7%
Stargazers count: 10.8%
Average: 22.9%
Dependent repos count: 29.3%
Downloads: 31.0%
Dependent packages count: 33.8%
Maintainers (1)
Last synced: 6 months ago
crates.io: opendp_tooling

Tooling for proc-macros and code generation.

  • Versions: 275
  • Dependent Packages: 2
  • Dependent Repositories: 0
  • Downloads: 238,041 Total
Rankings
Forks count: 9.7%
Stargazers count: 10.8%
Dependent packages count: 11.4%
Average: 24.1%
Dependent repos count: 29.3%
Downloads: 59.0%
Maintainers (1)
Last synced: 6 months ago
crates.io: opendp_derive

Minimal proc-macro wrappers around the opendp_tooling crate.

  • Versions: 274
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 237,423 Total
Rankings
Forks count: 9.7%
Stargazers count: 10.8%
Dependent packages count: 17.0%
Average: 25.4%
Dependent repos count: 29.3%
Downloads: 60.0%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/docs.yml actions
  • actions/checkout v3 composite
  • opendp/pull-request-artifacts main composite
  • xu-cheng/latex-action v2 composite
.github/workflows/latex.yml actions
  • actions/checkout v3 composite
  • opendp/pull-request-artifacts main composite
  • xu-cheng/latex-action v2 composite
.github/workflows/release.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v3 composite
  • lannonbr/repo-permission-check-action 2.0.0 composite
  • msys2/setup-msys2 v2 composite
.github/workflows/smoke-test.yml actions
  • actions/cache v2 composite
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v3 composite
rust/Cargo.toml cargo
  • criterion 0.4 development
  • az 1.2.0
  • backtrace 0.3
  • gmp-mpfr-sys 1.4.7
  • lazy_static 1.4.0
  • num 0.3.1
  • openssl 0.10.29
  • rand 0.7.3
  • rug 1.14.0
  • statrs 0.13.0
  • thiserror 1.0.24
  • vega_lite_4 0.6.0
.binder/requirements.txt pypi
  • opendp *
docs/requirements.txt pypi
  • ipython *
  • nbsphinx *
  • pandoc *
  • pydata-sphinx-theme *
  • pypandoc *
  • sphinx ==5.1.1
  • sphinx-prompt *
docs/requirements_notebooks.txt pypi
  • matplotlib *
  • numpy *
  • pandas *
  • scipy *
  • seaborn *
tools/requirements-assert_version.txt pypi
  • toml *
tools/requirements-publish_tool.txt pypi
  • toml *
  • twine *
.github/workflows/build.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v3 composite
  • actions/upload-artifact v3 composite
  • msys2/setup-msys2 v2 composite
.github/workflows/credential-check.yml actions
  • actions-cool/check-user-permission v2 composite
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
.github/workflows/latex-release.yml actions
  • actions/checkout v3 composite
  • opendp/pull-request-artifacts main composite
  • xu-cheng/latex-action v2 composite
.github/workflows/nightly.yml actions
  • octokit/request-action v2.x composite
.github/workflows/prepare.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
.github/workflows/publish.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v3 composite
.github/workflows/sanity-test.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v3 composite
rust/opendp_derive/Cargo.toml cargo
rust/opendp_tooling/Cargo.toml cargo
python/pyproject.toml pypi
python/setup.py pypi
tools/requirements-channel_tool.txt pypi
  • semver ==3.0
  • tomlkit ==0.11.8
docs/pyproject.toml pypi