==============
FederatedCode
==============
FederatedCode is a decentralized, federated metadata system for open source software code and
security information.
Quick Installation
--------------------
Run with Docker
~~~~~~~~~~~~~~~
Clone FederatedCode::
git clone https://github.com/aboutcode-org/federatedcode.git
cd federatedcode
Build and run::
docker compose build
docker compose up
Local development installation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On a Debian system, use this::
sudo apt-get install python3-venv python3-dev postgresql libpq-dev build-essential
git clone https://github.com/aboutcode-org/federatedcode.git
cd federatedcode
make dev envfile postgresdb
make test
source venv/bin/activate
make run
Note that we support Python 3.10 and up only.
Configuration
-------------------
The configuration of FederatedCode depends on environment variables:
- FEDERATEDCODE_WORKSPACE_LOCATION: Directory location of the workspace where we store local Git repos and
content. Default to var/ in current directory in development
- These are generated id and secrets stored in a .env file when running `make envfile`
- SECRET_KEY: Django's secret key
- FEDERATEDCODE_CLIENT_ID: Client UUID
- FEDERATEDCODE_CLIENT_SECRET: Own secret key
Acknowledgements, Funding, Support and Sponsoring
--------------------------------------------------------
This project is funded, supported and sponsored by:
- Generous support and contributions from users like you!
- the European Commission NGI programme
- the NLnet Foundation
- the Swiss State Secretariat for Education, Research and Innovation (SERI)
- Google, including the Google Summer of Code and the Google Seasons of Doc programmes
- Mercedes-Benz Group
- Microsoft and Microsoft Azure
- AboutCode ASBL
- nexB Inc.
|europa| |dgconnect|
|ngi| |nlnet|
|aboutcode| |nexb|
This project was funded through the NGI0 PET Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 825310.
|ngizeropet| https://nlnet.nl/project/VulnerableCode/
This project was funded through the NGI0 Discovery Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 825322.
|ngidiscovery| https://nlnet.nl/project/vulnerabilitydatabase/
This project was funded through the NGI0 Core Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 101092990.
|ngizerocore| https://nlnet.nl/project/VulnerableCode-enhancements/
This project is funded through the NGI0 Entrust Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 101069594.
|ngizeroentrust| https://nlnet.nl/project/FederatedSoftwareMetadata/
This project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 101135429. Additional
funding is made available by the Swiss State Secretariat for Education, Research and Innovation
(SERI).
|ngizerocommons| |swiss| https://nlnet.nl/project/FederatedCodeNext/
.. |nlnet| image:: https://nlnet.nl/logo/banner.png
:target: https://nlnet.nl
:height: 50
:alt: NLnet foundation logo
.. |ngi| image:: https://ngi.eu/wp-content/uploads/thegem-logos/logo_8269bc6efcf731d34b6385775d76511d_1x.png
:target: https://ngi.eu35
:height: 50
:alt: NGI logo
.. |nexb| image:: https://nexb.com/wp-content/uploads/2022/04/nexB.svg
:target: https://nexb.com
:height: 30
:alt: nexB logo
.. |europa| image:: https://ngi.eu/wp-content/uploads/sites/77/2017/10/bandiera_stelle.png
:target: http://ec.europa.eu/index_en.htm
:height: 40
:alt: Europa logo
.. |aboutcode| image:: https://aboutcode.org/wp-content/uploads/2023/10/AboutCode.svg
:target: https://aboutcode.org/
:height: 30
:alt: AboutCode logo
.. |swiss| image:: https://www.sbfi.admin.ch/sbfi/en/_jcr_content/logo/image.imagespooler.png/1493119032540/logo.png
:target: https://www.sbfi.admin.ch/sbfi/en/home/seri/seri.html
:height: 40
:alt: Swiss logo
.. |dgconnect| image:: https://commission.europa.eu/themes/contrib/oe_theme/dist/ec/images/logo/positive/logo-ec--en.svg
:target: https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en
:height: 40
:alt: EC DG Connect logo
.. |ngizerocore| image:: https://nlnet.nl/image/logos/NGI0_tag.svg
:target: https://nlnet.nl/core
:height: 40
:alt: NGI Zero Core Logo
.. |ngizerocommons| image:: https://nlnet.nl/image/logos/NGI0_tag.svg
:target: https://nlnet.nl/commonsfund/
:height: 40
:alt: NGI Zero Commons Logo
.. |ngizeropet| image:: https://nlnet.nl/image/logos/NGI0PET_tag.svg
:target: https://nlnet.nl/PET
:height: 40
:alt: NGI Zero PET logo
.. |ngizeroentrust| image:: https://nlnet.nl/image/logos/NGI0Entrust_tag.svg
:target: https://nlnet.nl/entrust
:height: 38
:alt: NGI Zero Entrust logo
.. |ngiassure| image:: https://nlnet.nl/image/logos/NGIAssure_tag.svg
:target: https://nlnet.nl/image/logos/NGIAssure_tag.svg
:height: 32
:alt: NGI Assure logo
.. |ngidiscovery| image:: https://nlnet.nl/image/logos/NGI0Discovery_tag.svg
:target: https://nlnet.nl/discovery/
:height: 40
:alt: NGI Discovery logo
Raw data
{
"_id": null,
"home_page": "https://github.com/nexB/federatedcode",
"name": "federatedcode",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "open source, package, dependency, activitypub, vulnerabilities, security, dependencies, packages",
"author": "nexB Inc., AboutCode.org and others",
"author_email": "info@aboutcode.org",
"download_url": "https://files.pythonhosted.org/packages/b4/33/594956838672dc60047b705465606fdff156ab7a7de5b08191f6d909d699/federatedcode-0.1.0.tar.gz",
"platform": null,
"description": "==============\nFederatedCode\n==============\n\nFederatedCode is a decentralized, federated metadata system for open source software code and\nsecurity information.\n\n\nQuick Installation\n--------------------\n\nRun with Docker\n~~~~~~~~~~~~~~~\n\n\nClone FederatedCode::\n\n git clone https://github.com/aboutcode-org/federatedcode.git\n cd federatedcode\n\nBuild and run::\n\n docker compose build\n docker compose up\n\n\nLocal development installation\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nOn a Debian system, use this::\n\n sudo apt-get install python3-venv python3-dev postgresql libpq-dev build-essential\n git clone https://github.com/aboutcode-org/federatedcode.git\n cd federatedcode\n make dev envfile postgresdb\n make test\n source venv/bin/activate\n make run\n\nNote that we support Python 3.10 and up only.\n\nConfiguration\n-------------------\n\nThe configuration of FederatedCode depends on environment variables:\n\n\n- FEDERATEDCODE_WORKSPACE_LOCATION: Directory location of the workspace where we store local Git repos and\n content. Default to var/ in current directory in development\n- These are generated id and secrets stored in a .env file when running `make envfile`\n - SECRET_KEY: Django's secret key\n - FEDERATEDCODE_CLIENT_ID: Client UUID\n - FEDERATEDCODE_CLIENT_SECRET: Own secret key\n\n\nAcknowledgements, Funding, Support and Sponsoring\n--------------------------------------------------------\n\nThis project is funded, supported and sponsored by:\n\n- Generous support and contributions from users like you!\n- the European Commission NGI programme\n- the NLnet Foundation \n- the Swiss State Secretariat for Education, Research and Innovation (SERI)\n- Google, including the Google Summer of Code and the Google Seasons of Doc programmes\n- Mercedes-Benz Group\n- Microsoft and Microsoft Azure\n- AboutCode ASBL\n- nexB Inc. \n\n\n\n|europa| |dgconnect| \n\n|ngi| |nlnet| \n\n|aboutcode| |nexb|\n\n\n\nThis project was funded through the NGI0 PET Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 825310.\n\n|ngizeropet| https://nlnet.nl/project/VulnerableCode/\n\n\nThis project was funded through the NGI0 Discovery Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 825322.\n\n|ngidiscovery| https://nlnet.nl/project/vulnerabilitydatabase/\n\n\nThis project was funded through the NGI0 Core Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 101092990.\n\n|ngizerocore| https://nlnet.nl/project/VulnerableCode-enhancements/\n\n\nThis project is funded through the NGI0 Entrust Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 101069594.\n\n|ngizeroentrust| https://nlnet.nl/project/FederatedSoftwareMetadata/\n\n\nThis project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial\nsupport from the European Commission's Next Generation Internet programme, under the aegis of DG\nCommunications Networks, Content and Technology under grant agreement No 101135429. Additional\nfunding is made available by the Swiss State Secretariat for Education, Research and Innovation\n(SERI). \n\n|ngizerocommons| |swiss| https://nlnet.nl/project/FederatedCodeNext/\n\n\n\n\n.. |nlnet| image:: https://nlnet.nl/logo/banner.png\n :target: https://nlnet.nl\n :height: 50\n :alt: NLnet foundation logo\n\n.. |ngi| image:: https://ngi.eu/wp-content/uploads/thegem-logos/logo_8269bc6efcf731d34b6385775d76511d_1x.png\n :target: https://ngi.eu35\n :height: 50\n :alt: NGI logo\n\n.. |nexb| image:: https://nexb.com/wp-content/uploads/2022/04/nexB.svg\n :target: https://nexb.com\n :height: 30\n :alt: nexB logo\n\n.. |europa| image:: https://ngi.eu/wp-content/uploads/sites/77/2017/10/bandiera_stelle.png\n :target: http://ec.europa.eu/index_en.htm\n :height: 40\n :alt: Europa logo\n\n.. |aboutcode| image:: https://aboutcode.org/wp-content/uploads/2023/10/AboutCode.svg\n :target: https://aboutcode.org/\n :height: 30\n :alt: AboutCode logo\n\n.. |swiss| image:: https://www.sbfi.admin.ch/sbfi/en/_jcr_content/logo/image.imagespooler.png/1493119032540/logo.png\n :target: https://www.sbfi.admin.ch/sbfi/en/home/seri/seri.html\n :height: 40\n :alt: Swiss logo\n\n.. |dgconnect| image:: https://commission.europa.eu/themes/contrib/oe_theme/dist/ec/images/logo/positive/logo-ec--en.svg\n :target: https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en\n :height: 40\n :alt: EC DG Connect logo\n\n.. |ngizerocore| image:: https://nlnet.nl/image/logos/NGI0_tag.svg\n :target: https://nlnet.nl/core\n :height: 40\n :alt: NGI Zero Core Logo\n\n.. |ngizerocommons| image:: https://nlnet.nl/image/logos/NGI0_tag.svg\n :target: https://nlnet.nl/commonsfund/\n :height: 40\n :alt: NGI Zero Commons Logo\n\n.. |ngizeropet| image:: https://nlnet.nl/image/logos/NGI0PET_tag.svg\n :target: https://nlnet.nl/PET\n :height: 40\n :alt: NGI Zero PET logo\n\n.. |ngizeroentrust| image:: https://nlnet.nl/image/logos/NGI0Entrust_tag.svg\n :target: https://nlnet.nl/entrust\n :height: 38\n :alt: NGI Zero Entrust logo\n\n.. |ngiassure| image:: https://nlnet.nl/image/logos/NGIAssure_tag.svg\n :target: https://nlnet.nl/image/logos/NGIAssure_tag.svg\n :height: 32\n :alt: NGI Assure logo\n\n.. |ngidiscovery| image:: https://nlnet.nl/image/logos/NGI0Discovery_tag.svg\n :target: https://nlnet.nl/discovery/\n :height: 40\n :alt: NGI Discovery logo\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Share software metadata and vulnerabilities in a federated manner over ActivityPub and git",
"version": "0.1.0",
"project_urls": {
"Homepage": "https://github.com/nexB/federatedcode"
},
"split_keywords": [
"open source",
" package",
" dependency",
" activitypub",
" vulnerabilities",
" security",
" dependencies",
" packages"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b809dfc83a796753f456fe4aca21b1b85afade589f9ea234b5bda901e008d366",
"md5": "3341f20f70c0c46b99d24c9b8c2baf22",
"sha256": "35a158ceef71de7380f243d8d1b229bb2156901fb7621405472a3864668a14ae"
},
"downloads": -1,
"filename": "federatedcode-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3341f20f70c0c46b99d24c9b8c2baf22",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 60225,
"upload_time": "2025-01-07T15:42:07",
"upload_time_iso_8601": "2025-01-07T15:42:07.920646Z",
"url": "https://files.pythonhosted.org/packages/b8/09/dfc83a796753f456fe4aca21b1b85afade589f9ea234b5bda901e008d366/federatedcode-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b433594956838672dc60047b705465606fdff156ab7a7de5b08191f6d909d699",
"md5": "b122bbe8bc6f961d8cc7aa48d99b8e9e",
"sha256": "003bddb40fcc2607ae2a42f8f209c4a7e579a97cc44e34a985af3c5716b5cc18"
},
"downloads": -1,
"filename": "federatedcode-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "b122bbe8bc6f961d8cc7aa48d99b8e9e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 61732,
"upload_time": "2025-01-07T15:42:10",
"upload_time_iso_8601": "2025-01-07T15:42:10.554511Z",
"url": "https://files.pythonhosted.org/packages/b4/33/594956838672dc60047b705465606fdff156ab7a7de5b08191f6d909d699/federatedcode-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-07 15:42:10",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nexB",
"github_project": "federatedcode",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "aboutcode.hashid",
"specs": [
[
"==",
"0.2.0"
]
]
},
{
"name": "aboutcode.pipeline",
"specs": [
[
"==",
"0.2.0"
]
]
},
{
"name": "alabaster",
"specs": [
[
"==",
"1.0.0"
]
]
},
{
"name": "annotated-types",
"specs": [
[
"==",
"0.7.0"
]
]
},
{
"name": "anyio",
"specs": [
[
"==",
"4.7.0"
]
]
},
{
"name": "asgiref",
"specs": [
[
"==",
"3.8.1"
]
]
},
{
"name": "attrs",
"specs": [
[
"==",
"24.2.0"
]
]
},
{
"name": "babel",
"specs": [
[
"==",
"2.16.0"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2024.8.30"
]
]
},
{
"name": "cffi",
"specs": [
[
"==",
"1.17.1"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
"==",
"3.4.0"
]
]
},
{
"name": "click",
"specs": [
[
"==",
"8.1.7"
]
]
},
{
"name": "colorama",
"specs": [
[
"==",
"0.4.6"
]
]
},
{
"name": "cryptography",
"specs": [
[
"==",
"44.0.0"
]
]
},
{
"name": "Django",
"specs": [
[
"==",
"5.1.2"
]
]
},
{
"name": "django-environ",
"specs": [
[
"==",
"0.11.2"
]
]
},
{
"name": "django-ninja",
"specs": [
[
"==",
"1.3.0"
]
]
},
{
"name": "django-oauth-toolkit",
"specs": [
[
"==",
"3.0.1"
]
]
},
{
"name": "djangorestframework",
"specs": [
[
"==",
"3.15.2"
]
]
},
{
"name": "doc8",
"specs": [
[
"==",
"1.1.2"
]
]
},
{
"name": "docutils",
"specs": [
[
"==",
"0.21.2"
]
]
},
{
"name": "exceptiongroup",
"specs": [
[
"==",
"1.2.2"
]
]
},
{
"name": "gitdb",
"specs": [
[
"==",
"4.0.11"
]
]
},
{
"name": "GitPython",
"specs": [
[
"==",
"3.1.43"
]
]
},
{
"name": "gunicorn",
"specs": [
[
"==",
"23.0.0"
]
]
},
{
"name": "h11",
"specs": [
[
"==",
"0.14.0"
]
]
},
{
"name": "http-message-signatures",
"specs": [
[
"==",
"0.5.0"
]
]
},
{
"name": "http_sfv",
"specs": [
[
"==",
"0.9.9"
]
]
},
{
"name": "httpcore",
"specs": [
[
"==",
"1.0.7"
]
]
},
{
"name": "httpx",
"specs": [
[
"==",
"0.28.1"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.10"
]
]
},
{
"name": "imagesize",
"specs": [
[
"==",
"1.4.1"
]
]
},
{
"name": "iniconfig",
"specs": [
[
"==",
"2.0.0"
]
]
},
{
"name": "Jinja2",
"specs": [
[
"==",
"3.1.4"
]
]
},
{
"name": "jsonpointer",
"specs": [
[
"==",
"3.0.0"
]
]
},
{
"name": "jwcrypto",
"specs": [
[
"==",
"1.5.6"
]
]
},
{
"name": "MarkupSafe",
"specs": [
[
"==",
"3.0.2"
]
]
},
{
"name": "oauthlib",
"specs": [
[
"==",
"3.2.2"
]
]
},
{
"name": "packageurl-python",
"specs": [
[
"==",
"0.16.0"
]
]
},
{
"name": "packaging",
"specs": [
[
"==",
"24.2"
]
]
},
{
"name": "pbr",
"specs": [
[
"==",
"6.1.0"
]
]
},
{
"name": "pillow",
"specs": [
[
"==",
"11.0.0"
]
]
},
{
"name": "pluggy",
"specs": [
[
"==",
"1.5.0"
]
]
},
{
"name": "pprintpp",
"specs": [
[
"==",
"0.4.0"
]
]
},
{
"name": "psycopg2-binary",
"specs": [
[
"==",
"2.9.10"
]
]
},
{
"name": "pycparser",
"specs": [
[
"==",
"2.22"
]
]
},
{
"name": "pydantic",
"specs": [
[
"==",
"2.10.3"
]
]
},
{
"name": "pydantic_core",
"specs": [
[
"==",
"2.27.1"
]
]
},
{
"name": "Pygments",
"specs": [
[
"==",
"2.18.0"
]
]
},
{
"name": "pytest",
"specs": [
[
"==",
"8.3.4"
]
]
},
{
"name": "pytest-django",
"specs": [
[
"==",
"4.9.0"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
"==",
"1.0.1"
]
]
},
{
"name": "PyYAML",
"specs": [
[
"==",
"6.0.2"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.32.3"
]
]
},
{
"name": "restructuredtext-lint",
"specs": [
[
"==",
"1.4.0"
]
]
},
{
"name": "saneyaml",
"specs": [
[
"==",
"0.6.1"
]
]
},
{
"name": "smmap",
"specs": [
[
"==",
"5.0.1"
]
]
},
{
"name": "sniffio",
"specs": [
[
"==",
"1.3.1"
]
]
},
{
"name": "snowballstemmer",
"specs": [
[
"==",
"2.2.0"
]
]
},
{
"name": "Sphinx",
"specs": [
[
"==",
"8.1.3"
]
]
},
{
"name": "sphinx-autobuild",
"specs": [
[
"==",
"2024.10.3"
]
]
},
{
"name": "sphinx-copybutton",
"specs": [
[
"==",
"0.5.2"
]
]
},
{
"name": "sphinx-jsonschema",
"specs": [
[
"==",
"1.19.1"
]
]
},
{
"name": "sphinx-rtd-dark-mode",
"specs": [
[
"==",
"1.3.0"
]
]
},
{
"name": "sphinx-rtd-theme",
"specs": [
[
"==",
"3.0.2"
]
]
},
{
"name": "sphinx_reredirects",
"specs": [
[
"==",
"0.1.5"
]
]
},
{
"name": "sphinxcontrib-applehelp",
"specs": [
[
"==",
"2.0.0"
]
]
},
{
"name": "sphinxcontrib-devhelp",
"specs": [
[
"==",
"2.0.0"
]
]
},
{
"name": "sphinxcontrib-django",
"specs": [
[
"==",
"2.5"
]
]
},
{
"name": "sphinxcontrib-htmlhelp",
"specs": [
[
"==",
"2.1.0"
]
]
},
{
"name": "sphinxcontrib-jquery",
"specs": [
[
"==",
"4.1"
]
]
},
{
"name": "sphinxcontrib-jsmath",
"specs": [
[
"==",
"1.0.1"
]
]
},
{
"name": "sphinxcontrib-qthelp",
"specs": [
[
"==",
"2.0.0"
]
]
},
{
"name": "sphinxcontrib-serializinghtml",
"specs": [
[
"==",
"2.0.0"
]
]
},
{
"name": "sqlparse",
"specs": [
[
"==",
"0.5.3"
]
]
},
{
"name": "starlette",
"specs": [
[
"==",
"0.41.3"
]
]
},
{
"name": "stevedore",
"specs": [
[
"==",
"5.4.0"
]
]
},
{
"name": "tomli",
"specs": [
[
"==",
"2.2.1"
]
]
},
{
"name": "typing_extensions",
"specs": [
[
"==",
"4.12.2"
]
]
},
{
"name": "urllib3",
"specs": [
[
"==",
"2.2.3"
]
]
},
{
"name": "uvicorn",
"specs": [
[
"==",
"0.32.1"
]
]
},
{
"name": "watchfiles",
"specs": [
[
"==",
"1.0.3"
]
]
},
{
"name": "websockets",
"specs": [
[
"==",
"14.1"
]
]
}
],
"lcname": "federatedcode"
}