{"id":13532956,"url":"https://github.com/foursquare/fsqio","last_synced_at":"2025-10-25T00:14:54.401Z","repository":{"id":39007371,"uuid":"48192426","full_name":"foursquare/fsqio","owner":"foursquare","description":"A monorepo that holds all of Foursquare's opensource projects","archived":false,"fork":false,"pushed_at":"2024-07-30T18:02:04.000Z","size":13878,"stargazers_count":256,"open_issues_count":21,"forks_count":52,"subscribers_count":152,"default_branch":"master","last_synced_at":"2025-10-02T10:57:49.538Z","etag":null,"topics":["foursquare","mongodb","monorepo","pants","rogue","scala"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/foursquare.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-12-17T18:53:44.000Z","updated_at":"2025-08-29T15:34:42.000Z","dependencies_parsed_at":"2024-11-24T02:15:25.685Z","dependency_job_id":null,"html_url":"https://github.com/foursquare/fsqio","commit_stats":{"total_commits":1253,"total_committers":38,"mean_commits":"32.973684210526315","dds":0.5139664804469274,"last_synced_commit":"d5345c9f580f8c9049265a7a0ec402e8b0179951"},"previous_names":[],"tags_count":92,"template":false,"template_full_name":null,"purl":"pkg:github/foursquare/fsqio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foursquare%2Ffsqio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foursquare%2Ffsqio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foursquare%2Ffsqio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foursquare%2Ffsqio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/foursquare","download_url":"https://codeload.github.com/foursquare/fsqio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foursquare%2Ffsqio/sbom","scorecard":{"id":408003,"data":{"date":"2025-08-11","repo":{"name":"github.com/foursquare/fsqio","commit":"d5345c9f580f8c9049265a7a0ec402e8b0179951"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.1,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/29 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Vulnerabilities","score":1,"reason":"9 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-42991 / GHSA-v3c5-jqr6-7qm8","Warn: Project is vulnerable to: GHSA-m87m-mmvp-v9qm","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: PYSEC-2022-43012 / GHSA-r9hx-vwmv-q579"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: src/jvm/io/fsq/twofishes/Dockerfile:1: pin your Docker image by updating fsqio/fsqio to fsqio/fsqio@sha256:c2b696012001bbb0e2d2f155c0df310a82f707364d128d9632d15c14efe8fd98","Warn: pipCommand not pinned by hash: build-support/fsqio/upkeep/scripts/opensource-pants-env.sh:84","Warn: pipCommand not pinned by hash: build-support/fsqio/upkeep/scripts/opensource-pants-env.sh:85","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-18T21:53:26.073Z","repository_id":39007371,"created_at":"2025-08-18T21:53:26.073Z","updated_at":"2025-08-18T21:53:26.073Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280885070,"owners_count":26407814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-24T02:00:06.418Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["foursquare","mongodb","monorepo","pants","rogue","scala"],"created_at":"2024-08-01T07:01:15.343Z","updated_at":"2025-10-25T00:14:54.370Z","avatar_url":"https://github.com/foursquare.png","language":"Scala","funding_links":[],"categories":["著名的公开 monorepos"],"sub_categories":["Code ownership"],"readme":"# Foursquare Fsq.io\n### All of Foursquare's open source code in a single repo.\n\n[![Build Status](https://travis-ci.org/foursquare/fsqio.svg?branch=master)](https://travis-ci.org/foursquare/fsqio)\n\nAll Foursquare code lives in a single repository, an architecture generally called a monorepo.\n`Fsq.io` is a subset of that internal monorepo. `Fsq.io` holds many of Foursquare's\nopen source projects that had previously lived in their own separate Github repos. Foursquare contributes\nto a build tool specifically designed to work with monorepos called [Pants](https://pantsbuild.github.io/).\nThe entire `Fsq.io` repo is is built and tested by Pants.\n\nDeploying directly from our monorepo has some nice advantages, for consumers of our open source projects as\nwell as Foursquare itself. The entire repo is built daily by our CIs and internal contributions are open sourced\nautomatically without the overhead of publishing. This repo will always contain the latest code that we use\ninternally, all of the tools can be built just as we use them, directly from HEAD.\n\n## Projects include:\n* [Fhttp](https://github.com/foursquare/fsqio/tree/master/src/jvm/io/fsq/fhttp):\nA request building interface similar to scalaj-http for Finagle http clients.\n* [Rogue](https://github.com/foursquare/fsqio/tree/master/src/jvm/io/fsq/rogue): A Scala DSL for MongoDB\n* [Spindle](https://github.com/foursquare/fsqio/tree/master/src/jvm/io/fsq/spindle): A Scala code generator for Thrift\n* [Twofishes](https://github.com/foursquare/fsqio/tree/master/src/jvm/io/fsq/twofishes):\nA coarse, splitting geocoder and reverse geocoder in Scala\n* and others.\n\n\n## Requirements\n\n* JDK 1.8 (1.8.0_40 preferred)\n* python2.6+ (2.7 preferred)\n* postgresql\n* [monogdb server](https://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/) (required to pass some tests)\n* An increased number of file descriptors (we use 32768)\n\nInternally we use OSX Yosemite or later. Other OS may work but are officially unsupported. (_Unofficially_, if\nbuilding on Linux you should install `python-dev`, `build-essential`, and `libpq-dev` in addition to the above).\n\n\n## Pants build system\nPants is a build system that works particularly well for a source code workspace containing many\ndistinct but interdependent pieces.\n\nPants is similar to `make`, `maven`, `ant`, `gradle`, `sbt`, etc. but pants pursues different design goals.\nPants optimizes for:\n\n* building multiple, dependent things from source\n* building code in a variety of languages\n* speed of build execution\n\nPants is a true community project, with major contributions from Twitter, Foursquare, Square, among other\ncompanies and independent contributors. It has friendly documentation [here](https://pantsbuild.github.io),\nin this README we will just touch on how to compile and test the code.\n\n\n## Compiling and Testing\n#### First Run\nA good first run is to compile the repo and run every test.\n\n     ./pants compile test src:: test::\n\n#### Targets and BUILD files\nTargets are adressable project or dependency level modules that can be built by Pants. `BUILD` files are\nconfiguration files that define targets that can be built by Pants. Each target has a name and can be built\nby running a Pants task against the target's name and location.\n\nFor example, Fsq.io's JVM projects live under `src/jvm`\n[here](https://github.com/foursquare/fsqio/tree/master/src/jvm/io/fsq). You can compile Rogue by running:\n\n     ./pants compile src/jvm/io/fsq/rogue:rogue\n\n#### Build and Test every project\nAdding a `::` to a path will glob every target under that location. So to compile every target in Fsq.io:\n\n     ./pants compile src::\n\nSimilarly, to run all the tests, (after starting the mongodb server):\n\n    ./pants test test::\n\nProjects aspirationally have READMEs at the project root.\n\n## Acknowledgements\n\n* Thanks to the great community supporting [Pants](https://github.com/pantsbuild/pants).\n* Fsq.io is split from commits to our internal monorepo by [Sapling](https://github.com/jsirois/sapling),\na git porcelain tool by @jsirois.\n\n## Discussion\n\nPlease open an issue if you have any questions or concerns.\n\n## License\nApache License, Version 2.0 (Apache-2.0)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoursquare%2Ffsqio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffoursquare%2Ffsqio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoursquare%2Ffsqio/lists"}