TypeScript 55.4%
Python 43.2%
SQL 1.2%
1# Spec for config/sources.d/47-open-source-long-tail.yaml (executed in order by scripts/gen-open-source-long-tail.py; parts 2–6 reuse the src()/ext() helpers defined here).2# Entry keys: id, extend, name, domain, categories, tier, weight, aliases, products, country, llm, notes,3# repos: "owner/repo" | ("owner/repo", kind|None, label|None, tier|None) kind defaults to releases4# feeds: (name, url[, type[, tier]])5# A bare string in SPEC is a section comment.67HEADER = """# config/sources.d/47-open-source-long-tail.yaml — the long tail of open-source projects and developer tooling8# (2026-09-11): GitHub release / tag Atom feeds for ~400 widely used repositories not covered by 10–46, grouped9# under their organization or foundation (existing ids are extended), plus the official blog / news feed of each10# organization when one exists. Every sensor was fetched and parsed by `apps/engine/src/validate.ts` before being11# written; repos without GitHub releases use `tags.atom` (`kind: tags`). Generated by12# `scripts/gen-open-source-long-tail.py` from `scripts/gen-open-source-long-tail-spec*.py`."""1314OSD = ["open-source", "developer"]15OSINF = ["open-source", "developer", "infrastructure"]16OSSEC = ["open-source", "developer", "cyber"]17OSAPP = ["open-source", "consumer-tech"]18OSML = ["open-source", "developer", "ai"]19OSOS = ["open-source", "technology"]20T = "tags"212223def src(id, name, domain, aliases=(), repos=(), feeds=(), tier="C", categories=OSD, country=None, products=(), llm=True, notes=None, weight=None):24 d = {"id": id, "name": name, "domain": domain, "categories": list(categories), "tier": tier, "aliases": list(aliases), "repos": list(repos), "feeds": list(feeds),25 "products": [(p, "software") if isinstance(p, str) else p for p in products], "llm": llm}26 if country: d["country"] = country27 if notes: d["notes"] = notes28 if weight: d["weight"] = weight29 return d303132def ext(id, repos=(), feeds=(), products=(), aliases=(), country=None):33 d = {"id": id, "extend": True, "repos": list(repos), "feeds": list(feeds), "products": [(p, "software") if isinstance(p, str) else p for p in products], "aliases": list(aliases)}34 if country: d["country"] = country35 return d363738SPEC = [39 "Foundations",40 ext("linux-foundation", feeds=[("newsroom feed", "https://www.linuxfoundation.org/press/rss.xml")], country="US"),41 src("numfocus", "NumFOCUS", "numfocus.org", ["numfocus foundation"], categories=["open-source", "science", "ngo"], country="US", feeds=[("news feed", "https://numfocus.org/feed")]),42 src("sfconservancy", "Software Freedom Conservancy", "sfconservancy.org", ["software freedom conservancy"], categories=["open-source", "ngo", "legal"], country="US",43 feeds=[("news feed", "https://sfconservancy.org/feeds/news/"), ("blog feed", "https://sfconservancy.org/feeds/blog/")]),44 src("fsfe", "Free Software Foundation Europe", "fsfe.org", ["fsfe", "free software foundation europe"], categories=["open-source", "ngo", "legal"], country="DE", feeds=[("news feed", "https://fsfe.org/news/news.en.rss")]),45 src("cd-foundation", "Continuous Delivery Foundation", "cd.foundation", ["cdf", "continuous delivery foundation"], country="US", feeds=[("news feed", "https://cd.foundation/feed/")]),46 src("lf-ai-data", "LF AI & Data Foundation", "lfaidata.foundation", ["lf ai & data", "lf ai and data"], categories=["open-source", "ai"], country="US", feeds=[("news feed", "https://lfaidata.foundation/feed/")]),47 src("openinfra", "OpenInfra Foundation (OpenStack)", "openinfra.org", ["openinfra foundation", "openstack", "openstack foundation", "kata containers"], categories=["open-source", "cloud"], country="US",48 products=["OpenStack", "Kata Containers"], repos=["kata-containers/kata-containers", ("openstack/nova", T), ("openstack/neutron", T), ("openstack/keystone", T)],49 feeds=[("superuser blog", "https://superuser.openinfra.org/feed/")]),50 src("bytecode-alliance", "Bytecode Alliance", "bytecodealliance.org", ["bytecode alliance", "wasmtime"], country="US", products=["Wasmtime", "wasm-tools"],51 repos=["bytecodealliance/wasmtime", "bytecodealliance/wasm-tools", "bytecodealliance/wasm-micro-runtime", "bytecodealliance/jco"]),52 src("webassembly", "WebAssembly", "webassembly.org", ["wasm", "wasi", "wasmer", "wasmedge", "wasmcloud"], categories=["open-source", "developer", "standards"],53 products=["WASI", "Binaryen", "wabt", "Wasmer", "WasmEdge", "wasmCloud"],54 repos=[("WebAssembly/spec", T), ("WebAssembly/WASI", T), "WebAssembly/binaryen", "WebAssembly/wabt", "wasmerio/wasmer", "WasmEdge/WasmEdge", "wasmCloud/wasmCloud"]),55 ext("openjs", products=["jQuery", "Mocha", "Appium", "WebdriverIO", "Node-RED", "Jest", "nvm", "undici"],56 repos=["nodejs/undici", "nvm-sh/nvm", "jquery/jquery", ("lodash/lodash", T), "mochajs/mocha", "appium/appium", "webdriverio/webdriverio", "node-red/node-red", "jestjs/jest"]),57 ext("eclipse", products=["Eclipse Theia", "Eclipse Vert.x", "Eclipse Mosquitto", "Eclipse Jetty", "Jakarta EE", "Eclipse Temurin", "OpenJ9", "GlassFish", "Eclipse Che"],58 repos=["eclipse-theia/theia", "eclipse-vertx/vert.x", "eclipse-mosquitto/mosquitto", "jetty/jetty.project", "eclipse-platform/eclipse.platform", "eclipse-che/che",59 "jakartaee/platform", "eclipse-paho/paho.mqtt.java", "eclipse-openj9/openj9", "adoptium/temurin21-binaries", "eclipse-ee4j/glassfish", "eclipse-ee4j/jersey"]),60 ext("apache",61 products=[("Apache Spark", "software", ["spark"]), ("Apache Flink", "software", ["flink"]), "Apache Beam", ("Apache Arrow", "software", ["arrow", "pyarrow"]), ("Apache Iceberg", "software", ["iceberg"]),62 "Apache Hudi", "Apache Druid", "Apache Pinot", ("Apache Superset", "software", ["superset"]), ("Apache NiFi", "software", ["nifi"]), ("Apache Pulsar", "software", ["pulsar"]),63 ("Apache ZooKeeper", "software", ["zookeeper"]), ("Apache Tomcat", "software", ["tomcat"]), ("Apache Lucene", "software", ["lucene"]), ("Apache Solr", "software", ["solr"]),64 ("Apache Hadoop", "software", ["hadoop"]), "Apache Hive", "Apache HBase", ("Apache CouchDB", "software", ["couchdb"]), "Apache Camel", ("Apache ActiveMQ", "software", ["activemq"]),65 ("Apache Groovy", "software", ["groovy"]), ("Apache NetBeans", "software", ["netbeans"]), ("Apache APISIX", "software", ["apisix"]), "Apache SkyWalking", "Apache Dubbo",66 "Apache ShardingSphere", "Apache Doris", "Apache Paimon", "Apache SeaTunnel", "Apache DolphinScheduler", ("Apache ECharts", "software", ["echarts"]), ("Apache RocketMQ", "software", ["rocketmq"]),67 "Apache DataFusion", "Apache OpenDAL", ("Apache Log4j", "software", ["log4j", "log4j2"]), "Apache TVM", "Apache Kyuubi", "Apache Ozone", "Apache NuttX", "Apache AGE",68 ("Apache Cordova", "software", ["cordova"]), "Apache Thrift", "Apache Avro", "Apache Calcite", ("Apache JMeter", "software", ["jmeter"]), ("Apache Struts", "software", ["struts"]),69 ("Apache CloudStack", "software", ["cloudstack"]), "Apache Traffic Server", "Apache Ignite", "Apache Tika", "Apache PDFBox", "Apache POI", ("Apache Guacamole", "software", ["guacamole"]),70 "Apache Gravitino", "Apache Polaris", "Apache Celeborn", "Apache Answer", "Apache Shiro", "Apache Karaf", "Apache TinkerPop", "Apache Jena", "Apache Storm", "Apache Pekko", "Apache TomEE"],71 repos=[("apache/spark", T), ("apache/flink", T), "apache/beam", "apache/arrow", "apache/iceberg", "apache/hudi", "apache/druid", "apache/pinot", "apache/superset", ("apache/nifi", T),72 "apache/pulsar", ("apache/zookeeper", T), ("apache/tomcat", T), ("apache/lucene", T), ("apache/solr", T), ("apache/hadoop", T), ("apache/hive", T), ("apache/hbase", T),73 ("apache/couchdb", T), ("apache/camel", T), ("apache/activemq", T), ("apache/groovy", T), "apache/netbeans", "apache/apisix", "apache/skywalking", "apache/dubbo",74 "apache/shardingsphere", "apache/doris", "apache/paimon", "apache/seatunnel", "apache/dolphinscheduler", "apache/echarts", "apache/rocketmq", "apache/datafusion", "apache/opendal",75 "apache/logging-log4j2", "apache/tvm", "apache/kyuubi", "apache/ozone", "apache/nuttx", "apache/age", "apache/cordova-android", ("apache/thrift", T), "apache/avro", ("apache/calcite", T),76 ("apache/jmeter", T), ("apache/struts", T), ("apache/cloudstack", T), ("apache/trafficserver", T), ("apache/ignite", T), ("apache/tika", T), ("apache/pdfbox", T), ("apache/poi", T),77 ("apache/guacamole-server", T), "apache/gravitino", "apache/polaris", "apache/celeborn", "apache/answer", "apache/shiro", "apache/karaf", "apache/tinkerpop", "apache/jena",78 ("apache/storm", T), "apache/pekko", "apache/tomee", ("apache/httpcomponents-client", T), ("apache/commons-lang", T)],79 feeds=[("foundation blog", "https://blogs.apache.org/foundation/feed/entries/atom", "ATOM")]),80 ext("cncf",81 products=["Cortex", "Contour", "Operator SDK", "KubeEdge", "Antrea", "CloudEvents", "in-toto", "Notation", "Kubescape", "Emissary-ingress", "KubeVela", "Artifact Hub", "OpenFeature", "Flatcar",82 "Cluster API", "kind", "Gateway API", "Kustomize", "CRI-O", "Rook", "Longhorn", "Buildpacks", "TiKV", "Cloud Custodian", "Kuma", "MetalLB", "Litmus", "Chaos Mesh", "Karmada", "Volcano",83 "SPIRE", "Open Policy Agent", "Gatekeeper", "Kyverno", "KEDA", "Knative", "Dapr", "Backstage", "Harbor", "Thanos", "KubeVirt", "Fluent Bit", "Fluentd", "OpenFGA", "CloudNativePG",84 "Strimzi", "OpenCost", "Jaeger", "Vitess", "NATS", "gRPC", "CubeFS", "KubeArmor", "Meshery", "Headlamp", "Kubeflow", "OpenEBS", "Argo Workflows", "Argo Rollouts", "Tekton", "Temporal",85 ("OpenTelemetry", "software", ["otel"]), "Prometheus Operator", "Keptn", "Dragonfly", "Kueue", "Karpenter", "Kubebuilder", "minikube", "kOps"],86 repos=["cortexproject/cortex", "projectcontour/contour", "operator-framework/operator-sdk", "kubeedge/kubeedge", "antrea-io/antrea", ("cloudevents/spec", T), "in-toto/in-toto",87 "notaryproject/notation", "kubescape/kubescape", "emissary-ingress/emissary", "kubevela/kubevela", "artifacthub/hub", "open-feature/spec", "flatcar/Flatcar", "dragonflyoss/dragonfly",88 "kubernetes-sigs/cluster-api", "kubernetes-sigs/kind", "kubernetes-sigs/gateway-api", "kubernetes-sigs/kustomize", "kubernetes-sigs/metrics-server", "kubernetes-sigs/external-dns",89 "kubernetes-sigs/descheduler", "kubernetes-sigs/aws-load-balancer-controller", "kubernetes-sigs/kueue", "kubernetes-sigs/karpenter", "kubernetes-sigs/kubebuilder", "kubernetes-sigs/controller-runtime",90 "cri-o/cri-o", "rook/rook", "longhorn/longhorn", "buildpacks/pack", "tikv/tikv", "cloud-custodian/cloud-custodian", "kumahq/kuma", "metallb/metallb", "litmuschaos/litmus",91 "chaos-mesh/chaos-mesh", "karmada-io/karmada", "volcano-sh/volcano", "spiffe/spire", "open-policy-agent/opa", "open-policy-agent/gatekeeper", "kyverno/kyverno", "kedacore/keda",92 "knative/serving", "knative/eventing", "dapr/dapr", "backstage/backstage", "goharbor/harbor", "thanos-io/thanos", "kubevirt/kubevirt", "fluent/fluent-bit", "fluent/fluentd", "openfga/openfga",93 "cloudnative-pg/cloudnative-pg", "strimzi/strimzi-kafka-operator", "opencost/opencost", "jaegertracing/jaeger", "ko-build/ko", "kubernetes/minikube", "kubernetes/kops", "kubernetes/dashboard",94 "kubernetes/kube-state-metrics", ("kubernetes/kubectl", T), "istio/ztunnel", "vitessio/vitess", "nats-io/nats-server", "nats-io/nats.go", "grpc/grpc", "grpc/grpc-go", "grpc/grpc-java",95 "grpc/grpc-node", "cubefs/cubefs", "kubearmor/KubeArmor", "meshery/meshery", "headlamp-k8s/headlamp", "kubeflow/kubeflow", "kubeflow/pipelines", "kubeflow/trainer", "openebs/openebs",96 "argoproj/argo-workflows", "argoproj/argo-rollouts", "argoproj/argo-events", "tektoncd/pipeline", "tektoncd/cli", "temporalio/temporal", "temporalio/sdk-go", "temporalio/sdk-typescript",97 "open-telemetry/opentelemetry-collector-contrib", "open-telemetry/opentelemetry-js", "open-telemetry/opentelemetry-python", "open-telemetry/opentelemetry-java", "open-telemetry/opentelemetry-go",98 "open-telemetry/opentelemetry-dotnet", "open-telemetry/opentelemetry-operator", ("open-telemetry/opentelemetry-specification", None, "otel specification releases"), "open-telemetry/opentelemetry-demo",99 "prometheus/node_exporter", "prometheus/blackbox_exporter", "prometheus-operator/prometheus-operator", "prometheus/client_golang", "prometheus/pushgateway", "keptn/lifecycle-toolkit"],100 feeds=[("opentelemetry blog", "https://opentelemetry.io/blog/index.xml"), ("cncf blog", "https://www.cncf.io/blog/feed/")]),101 ext("openssf", products=["OpenBao", "Sigstore", "Rekor", "Fulcio", "SLSA", "Allstar"],102 repos=["ossf/allstar", "ossf/package-analysis", "openbao/openbao", "sigstore/sigstore", "sigstore/rekor", "sigstore/fulcio", "sigstore/gitsign", "slsa-framework/slsa"]),103104 "Languages and runtimes",105 ext("rust-foundation", products=["rustup", "rust-analyzer", "Cargo", "mdBook", "rustfmt", "Clippy", "Miri", "crates.io"],106 repos=["rust-lang/rustup", "rust-lang/rust-analyzer", ("rust-lang/cargo", T), "rust-lang/mdBook", "rust-lang/rustfmt", "rust-lang/rust-clippy", "rust-lang/crates.io", "rust-lang/miri"]),107 ext("rust", products=["Tokio", "Axum", "Serde", "Hyper", "clap", "Actix Web", "reqwest", "SQLx", "Diesel", "SeaORM", "Leptos", "Dioxus", "Yew", "Bevy", "rustls", "tracing", "Rayon", "ripgrep", "bat", "Nushell", "maturin", "kube-rs"],108 repos=["tokio-rs/tokio", "tokio-rs/axum", "serde-rs/serde", "hyperium/hyper", "clap-rs/clap", "actix/actix-web", "seanmonstar/reqwest", "launchbadge/sqlx", "diesel-rs/diesel", "SeaQL/sea-orm",109 "leptos-rs/leptos", "DioxusLabs/dioxus", "yewstack/yew", "bevyengine/bevy", "rustls/rustls", "tokio-rs/tracing", "rayon-rs/rayon", "BurntSushi/ripgrep", "sharkdp/bat", "nushell/nushell",110 "PyO3/maturin", "kube-rs/kube"]),111 ext("python", products=["mypy", "pip", "setuptools", "Poetry", "Pydantic", "Black", "Requests", "PyO3", "Cython", "pipx", "Werkzeug", "Jinja", "Click", "pylint", "pytest", "HTTPX", "Starlette", "Uvicorn",112 "Django REST framework", "Gunicorn", "uWSGI", "Celery", "SQLAlchemy", "Alembic", "aiohttp", "Typer", "Wagtail", "Textual", "Rich", "pyenv", "IPython", "conda", "pixi", "Sphinx",113 "MkDocs", "Litestar", "Streamlit", "Gradio", "Dash", "marimo", "JupyterHub", "Scrapy", "Pyright"],114 repos=["python/mypy", "pypa/pip", "pypa/setuptools", "pypa/packaging", "pypa/hatch", "python-poetry/poetry", "pydantic/pydantic", "psf/black", "psf/requests", "PyO3/pyo3", "cython/cython",115 "pypa/pipx", "pypa/cibuildwheel", "pallets/werkzeug", "pallets/jinja", "pallets/click", "pylint-dev/pylint", "pytest-dev/pytest", "encode/httpx", "encode/starlette", "encode/uvicorn",116 "encode/django-rest-framework", "benoitc/gunicorn", ("unbit/uwsgi", T), "celery/celery", "sqlalchemy/sqlalchemy", "sqlalchemy/alembic", "aio-libs/aiohttp", "fastapi/typer", "wagtail/wagtail",117 "Textualize/textual", "Textualize/rich", "pyenv/pyenv", "ipython/ipython", "conda/conda", "prefix-dev/pixi", "sphinx-doc/sphinx", "mkdocs/mkdocs", "squidfunk/mkdocs-material",118 "litestar-org/litestar", "streamlit/streamlit", "gradio-app/gradio", "plotly/dash", "marimo-team/marimo", "jupyterhub/jupyterhub", "scrapy/scrapy", "microsoft/pyright", "python/peps"]),119 src("astral", "Astral", "astral.sh", ["astral sh", "uv python", "ruff linter"], tier="B", country="US", products=["uv", ("Ruff", "software", ["ruff"]), "ty"],120 repos=["astral-sh/uv", "astral-sh/ruff", "astral-sh/ty", "astral-sh/python-build-standalone"], feeds=[("blog feed", "https://astral.sh/blog/rss.xml")]),121 ext("nodejs", products=["Node.js", "Corepack", "PM2", "nodemon", "tsx", "libuv", "Volta", "fnm", "axios", "Zod", "Socket.IO", "ws", "Sequelize", "TypeORM", "Knex", "Mongoose", "BullMQ", "Puppeteer", "Vitest", "Husky", "semantic-release", "Changesets", "typescript-eslint"],122 repos=["nodejs/node", "nodejs/corepack", "Unitech/pm2", "remy/nodemon", "privatenumber/tsx", "libuv/libuv", "volta-cli/volta", "Schniz/fnm", "axios/axios", "colinhacks/zod", "socketio/socket.io",123 "websockets/ws", "sequelize/sequelize", "typeorm/typeorm", "knex/knex", "Automattic/mongoose", "taskforcesh/bullmq", "puppeteer/puppeteer", "vitest-dev/vitest", "typicode/husky",124 "semantic-release/semantic-release", "changesets/changesets", "typescript-eslint/typescript-eslint"]),125 ext("go", products=["gopls", "golangci-lint", "Delve", "GoReleaser", "Gin", "Echo", "Fiber", "chi", "Cobra", "Viper", "zap", "GORM", "sqlc", "pgx", "testify", "Wire", "grpc-gateway", "Connect", "Bubble Tea", "Buf", "Task", "gqlgen", "ent", "golang-migrate", "go-redis", "Kratos", "go-zero", "Kitex", "govulncheck"],126 repos=[("golang/tools", T), "golangci/golangci-lint", "go-delve/delve", "goreleaser/goreleaser", "gin-gonic/gin", "labstack/echo", "gofiber/fiber", "go-chi/chi", "spf13/cobra", "spf13/viper",127 "uber-go/zap", "go-gorm/gorm", "sqlc-dev/sqlc", "jackc/pgx", "stretchr/testify", "google/wire", "grpc-ecosystem/grpc-gateway", "connectrpc/connect-go", "charmbracelet/bubbletea",128 "bufbuild/buf", "go-task/task", "99designs/gqlgen", "ent/ent", "golang-migrate/migrate", "redis/go-redis", "go-kratos/kratos", "zeromicro/go-zero", "cloudwego/kitex", "golang/vuln"]),129 ext("ruby", products=["RubyGems", "RuboCop", "Puma", "Sidekiq", "RSpec", "Rack", "Sinatra", "Hanami", "Ruby LSP", "RBS", "Jekyll", "fastlane", "Chef", "Puppet", "Passenger"],130 repos=[("ruby/ruby", T), "rubygems/rubygems", "rubocop/rubocop", "puma/puma", "sidekiq/sidekiq", "rspec/rspec-core", "rack/rack", "sinatra/sinatra", "hanami/hanami", "Shopify/ruby-lsp", "ruby/rbs",131 "jekyll/jekyll", "fastlane/fastlane", "chef/chef", "puppetlabs/puppet", "phusion/passenger"]),132 ext("rails", products=["Kamal", "Turbo", "Stimulus", "Propshaft", "Solid Queue", "Devise"],133 repos=["basecamp/kamal", "hotwired/turbo", "hotwired/stimulus", "rails/propshaft", "rails/solid_queue", "heartcombo/devise"]),134 ext("php", products=["Composer", "PHPUnit", "PHPStan", "Psalm", "PHP CS Fixer", "FrankenPHP", "RoadRunner", "Swoole", "Guzzle", "Doctrine ORM", "Twig", "Monolog", "phpMyAdmin", "CakePHP", "Yii", "CodeIgniter", "Slim", "Rector", "PhpSpreadsheet", "Carbon"],135 repos=["php/php-src", "composer/composer", "sebastianbergmann/phpunit", "phpstan/phpstan", "vimeo/psalm", "PHP-CS-Fixer/PHP-CS-Fixer", "php/frankenphp", "roadrunner-server/roadrunner", "swoole/swoole-src",136 "guzzle/guzzle", "doctrine/orm", "twigphp/Twig", "Seldaek/monolog", "phpmyadmin/phpmyadmin", "cakephp/cakephp", "yiisoft/yii2", "codeigniter4/CodeIgniter4", "slimphp/Slim", "rectorphp/rector",137 "PHPOffice/PhpSpreadsheet", "briannesbitt/Carbon"]),138 src("symfony", "Symfony", "symfony.com", ["symfony framework", "sensiolabs"], tier="B", country="FR", products=["Symfony", "API Platform", "Symfony CLI", "Symfony UX"],139 repos=["symfony/symfony", "api-platform/core", "symfony/cli", "symfony/ux", "symfony/webpack-encore", "symfony/maker-bundle"], feeds=[("blog feed", "https://feeds.feedburner.com/symfony/blog")]),140 ext("laravel", products=["Livewire", "Inertia.js", "Filament", "Laravel Octane", "Laravel Sail", "Laravel Horizon", "Laravel Pint", "Pest"],141 repos=["laravel/laravel", "livewire/livewire", "inertiajs/inertia", "filamentphp/filament", "laravel/octane", "laravel/sail", "laravel/horizon", "laravel/pint", "laravel/passport", "pestphp/pest"]),142 ext("spring", products=["Spring Framework", "Spring Security", "Spring Data JPA", "Spring Cloud Gateway", "Spring AI", "Spring Batch", "Spring Kafka", "Spring Authorization Server", "Spring GraphQL"],143 repos=["spring-projects/spring-framework", "spring-projects/spring-security", "spring-projects/spring-data-jpa", "spring-cloud/spring-cloud-gateway", "spring-projects/spring-ai",144 "spring-projects/spring-batch", "spring-projects/spring-kafka", "spring-projects/spring-authorization-server", "spring-projects/spring-graphql", "spring-io/initializr"]),145 src("quarkus", "Quarkus", "quarkus.io", ["quarkus framework", "red hat quarkus"], repos=["quarkusio/quarkus", "quarkusio/quarkus-quickstarts"], feeds=[("blog feed", "https://quarkus.io/feed.xml")]),146 src("micronaut", "Micronaut", "micronaut.io", ["micronaut framework"], repos=["micronaut-projects/micronaut-core", "micronaut-projects/micronaut-starter"]),147 src("openjdk", "OpenJDK", "openjdk.org", ["openjdk", "java development kit", "jdk"], tier="B", products=[("JDK", "software", ["java se"]), "JDK Mission Control", "jextract"],148 repos=[("openjdk/jdk", T), ("openjdk/jdk21u", T), ("openjdk/jdk17u", T), "openjdk/jmc", "openjdk/jextract"], feeds=[("inside.java feed", "https://inside.java/feed.xml")]),149 src("graalvm", "GraalVM", "graalvm.org", ["graal", "graalvm native image", "graaljs", "graalpy"], country="US", products=["GraalVM", "GraalJS", "GraalPy", "Native Build Tools", "Mandrel"],150 repos=["oracle/graal", "oracle/graaljs", "oracle/graalpython", "graalvm/native-build-tools", "graalvm/mandrel"], feeds=[("blog feed", "https://medium.com/feed/graalvm")]),151 src("java-libraries", "Java ecosystem — major libraries", "java.net", ["java libraries", "jvm libraries"],152 products=["Hibernate", "Jackson", "JUnit", "Mockito", "Netty", "Guava", "Lombok", "Micrometer", "Resilience4j", "Helidon", "Dropwizard", "Play Framework", "Vaadin", "Javalin", "Logback", "MapStruct", "jOOQ", "Testcontainers", "OkHttp", "Retrofit", "Gson", "Dagger", "Reactor", "RxJava", "Flyway", "Liquibase", "WildFly", "Open Liberty", "Hazelcast", "Infinispan"],153 repos=["hibernate/hibernate-orm", "FasterXML/jackson-databind", "junit-team/junit-framework", "mockito/mockito", "netty/netty", "google/guava", "projectlombok/lombok", "micrometer-metrics/micrometer",154 "resilience4j/resilience4j", "helidon-io/helidon", "dropwizard/dropwizard", "playframework/playframework", "vaadin/flow", "javalin/javalin", "qos-ch/logback", "mapstruct/mapstruct", "jOOQ/jOOQ",155 "testcontainers/testcontainers-java", "square/okhttp", "square/retrofit", "google/gson", "google/dagger", "reactor/reactor-core", "ReactiveX/RxJava", "flyway/flyway", "liquibase/liquibase",156 "wildfly/wildfly", "OpenLiberty/open-liberty", "hazelcast/hazelcast", "infinispan/infinispan"]),157 ext("kotlin", products=["kotlinx.coroutines", "kotlinx.serialization", "Ktor", "Compose Multiplatform", "Exposed", "ktlint", "detekt", "SQLDelight", "Koin", "KSP", "Arrow"],158 repos=["JetBrains/kotlin", "Kotlin/kotlinx.coroutines", "Kotlin/kotlinx.serialization", "ktorio/ktor", "JetBrains/compose-multiplatform", "JetBrains/Exposed", "pinterest/ktlint", "detekt/detekt",159 "sqldelight/sqldelight", "InsertKoinIO/koin", "google/ksp", "arrow-kt/arrow"]),160 ext("swift", products=["Swift Package Manager", "SwiftNIO", "Vapor", "SourceKit-LSP", "swift-syntax", "swift-format", "Hummingbird", "SwiftLint", "SwiftFormat", "Alamofire", "The Composable Architecture", "CocoaPods", "Tuist", "XcodeGen", "Swift Testing", "swift-openapi-generator"],161 repos=["swiftlang/swift", "swiftlang/swift-package-manager", "apple/swift-nio", "vapor/vapor", "swiftlang/sourcekit-lsp", "swiftlang/swift-syntax", "swiftlang/swift-format", "hummingbird-project/hummingbird",162 "realm/SwiftLint", "nicklockwood/SwiftFormat", "Alamofire/Alamofire", "pointfreeco/swift-composable-architecture", "CocoaPods/CocoaPods", "tuist/tuist", "yonaskolb/XcodeGen", "swiftlang/swift-testing",163 "apple/swift-openapi-generator", "apple/swift-collections", "apple/swift-argument-parser", "grpc/grpc-swift"]),164 src("elixir", "Elixir", "elixir-lang.org", ["elixir language", "elixir lang", "phoenix framework"], products=[("Phoenix Framework", "software", ["phoenix"]), "Ecto", "LiveView", "Nx", "Livebook", "Oban", "Absinthe", "Hex"],165 repos=["elixir-lang/elixir", "phoenixframework/phoenix", "phoenixframework/phoenix_live_view", "elixir-ecto/ecto", "elixir-nx/nx", "livebook-dev/livebook", "elixir-lang/ex_doc", "oban-bg/oban",166 "absinthe-graphql/absinthe", "hexpm/hex", "elixir-lsp/elixir-ls", "elixir-nx/bumblebee"], feeds=[("blog feed", "https://elixir-lang.org/atom.xml", "ATOM")]),167 src("erlang", "Erlang/OTP", "erlang.org", ["erlang", "otp", "erlang otp", "beam vm", "rebar3"], products=["Erlang/OTP", "rebar3"],168 repos=["erlang/otp", "erlang/rebar3", "erlang-ls/erlang_ls"], feeds=[("blog feed", "https://www.erlang.org/blog.xml")]),169 src("gleam", "Gleam", "gleam.run", ["gleam language"], repos=["gleam-lang/gleam", "gleam-lang/stdlib"], feeds=[("news feed", "https://gleam.run/feed.xml")]),170 src("scala", "Scala", "scala-lang.org", ["scala language", "scala center", "scala 3", "dotty"], country="CH", products=["Scala 3", "sbt", "Metals", "Akka", "ZIO", "Cats", "Cats Effect", "http4s", "scalafmt", "Mill", "Scala CLI", "Tapir"],171 repos=["scala/scala3", "scala/scala", "sbt/sbt", "scalameta/metals", "akka/akka", "zio/zio", "typelevel/cats", "typelevel/cats-effect", "http4s/http4s", "scalameta/scalafmt", "com-lihaoyi/mill",172 "VirtusLab/scala-cli", "softwaremill/tapir", "scalatest/scalatest"], feeds=[("blog feed", "https://www.scala-lang.org/feed.xml")]),173 src("haskell", "Haskell", "haskell.org", ["haskell language", "ghc", "glasgow haskell compiler", "haskell foundation"], products=["GHC", "Cabal", "Stack", ("Haskell Language Server", "software", ["hls"]), "GHCup"],174 repos=["haskell/cabal", "commercialhaskell/stack", "haskell/haskell-language-server", "haskell/ghcup-hs"],175 feeds=[("ghc tags (gitlab)", "https://gitlab.haskell.org/ghc/ghc/-/tags?format=atom", "ATOM"), ("discourse announcements", "https://discourse.haskell.org/c/announcements/10.rss")]),176 src("ocaml", "OCaml", "ocaml.org", ["ocaml language", "opam", "dune build", "reasonml", "rescript"], country="FR", products=["opam", "Dune", "Merlin", "OCaml LSP", "Reason", "ReScript", "MirageOS"],177 repos=["ocaml/ocaml", "ocaml/opam", "ocaml/dune", "ocaml/merlin", "ocaml/ocaml-lsp", "ocsigen/lwt", "janestreet/base", "mirage/mirage", "reasonml/reason", "rescript-lang/rescript"],178 feeds=[("blog feed", "https://ocaml.org/feed.xml", "ATOM")]),179 src("dart", "Dart", "dart.dev", ["dart language", "dart sdk", "pub.dev"], country="US", products=["Dart SDK", "pub"],180 repos=[("dart-lang/sdk", T), "dart-lang/pub", "dart-lang/language", "dart-lang/native", "dart-lang/shelf", "dart-lang/build"], feeds=[("blog feed", "https://medium.com/feed/dartlang")]),181 ext("flutter", products=["bloc", "Riverpod", "GetX", "FlutterFire", "Flame", "Isar", "Drift", "FVM"],182 repos=["flutter/packages", "flutter/devtools", "felangel/bloc", "rrousselGit/riverpod", "jonataslaw/getx", "firebase/flutterfire", "flame-engine/flame", "isar/isar", "simolus3/drift", "leoafarias/fvm"]),183 src("lua", "Lua", "lua.org", ["lua language", "luajit", "luarocks", "luau"], country="BR", products=["LuaJIT", "LuaRocks", "Luau", "Lua Language Server"],184 repos=[("lua/lua", T), ("LuaJIT/LuaJIT", T), "luarocks/luarocks", "luau-lang/luau", "LuaLS/lua-language-server", "openresty/lua-nginx-module", "teal-language/tl"]),185 src("nim", "Nim", "nim-lang.org", ["nim language", "nim lang", "nimble"], repos=["nim-lang/Nim", "nim-lang/nimble", "nim-lang/langserver"], feeds=[("blog feed", "https://nim-lang.org/feed.xml")]),186 src("crystal", "Crystal", "crystal-lang.org", ["crystal language", "crystal lang", "shards"], repos=["crystal-lang/crystal", "crystal-lang/shards", "luckyframework/lucky", "kemalcr/kemal"],187 feeds=[("blog feed", "https://crystal-lang.org/feed.xml", "ATOM")]),188 src("vlang", "V language", "vlang.io", ["vlang", "v programming language"], repos=["vlang/v", "vlang/ui"]),189 src("odin-lang", "Odin", "odin-lang.org", ["odin language", "odin programming language"], repos=["odin-lang/Odin"]),190 src("mojo", "Modular / Mojo", "modular.com", ["mojo language", "modular ai", "max engine"], categories=OSML, country="US", repos=["modular/modular"], feeds=[("blog feed", "https://www.modular.com/blog/rss.xml")]),191 src("perl", "Perl", "perl.org", ["perl language", "perl 5", "cpan", "raku", "rakudo"], products=["Perl 5", ("Raku", "software", ["perl 6"]), "Rakudo", "Mojolicious", "cpanminus", "Dancer2", "perltidy", "Perl::Critic"],192 repos=[("Perl/perl5", T), "rakudo/rakudo", "mojolicious/mojo", "miyagawa/cpanminus", "MoarVM/MoarVM", "PerlDancer/Dancer2", "perltidy/perltidy", "Perl-Critic/Perl-Critic"],193 feeds=[("perl.com feed", "https://www.perl.com/article/index.xml"), ("perl weekly", "https://perlweekly.com/perlweekly.rss")]),194 src("clojure", "Clojure", "clojure.org", ["clojure language", "clojurescript", "leiningen", "babashka"], products=["Clojure", "ClojureScript", "Leiningen", "Babashka", "shadow-cljs", "clj-kondo", "clojure-lsp", "CIDER", "Ring", "reitit", "re-frame", "Reagent"],195 repos=[("clojure/clojure", T), ("clojure/clojurescript", T), "technomancy/leiningen", "babashka/babashka", "thheller/shadow-cljs", "clj-kondo/clj-kondo", "clojure-lsp/clojure-lsp", "clojure-emacs/cider",196 "ring-clojure/ring", "metosin/reitit", "day8/re-frame", "reagent-project/reagent", "clojure/tools.deps"], feeds=[("clojure news", "https://clojure.org/feed.xml", "ATOM")]),197 src("racket", "Racket", "racket-lang.org", ["racket language", "plt scheme"], repos=["racket/racket", "racket/typed-racket"], feeds=[("blog feed", "https://blog.racket-lang.org/feeds/all.atom.xml", "ATOM")]),198 ext("julia", products=["Pkg.jl", "IJulia", "DifferentialEquations.jl", "Flux.jl", "Plots.jl", "DataFrames.jl", "Pluto.jl", "CUDA.jl", "JuMP", "juliaup", "Makie", "Turing.jl", "Genie", "Documenter"],199 repos=["JuliaLang/Pkg.jl", "JuliaLang/IJulia.jl", "julia-vscode/julia-vscode", "SciML/DifferentialEquations.jl", "FluxML/Flux.jl", "JuliaPlots/Plots.jl", "JuliaData/DataFrames.jl", "fonsp/Pluto.jl",200 "JuliaGPU/CUDA.jl", "jump-dev/JuMP.jl", "JuliaLang/juliaup", "MakieOrg/Makie.jl", "TuringLang/Turing.jl", "GenieFramework/Genie.jl", "JuliaDocs/Documenter.jl"]),201 ext("r-project", products=["ggplot2", "dplyr", "tidyr", "purrr", "devtools", "testthat", "roxygen2", "data.table", "Shiny", "R Markdown", "knitr", "rlang", "pak", "renv", "reticulate", "tidymodels", "sf", "plumber", "httr2", "targets", "bslib"],202 repos=[("wch/r-source", T), "tidyverse/ggplot2", "tidyverse/dplyr", "tidyverse/tidyr", "tidyverse/purrr", "r-lib/devtools", "r-lib/testthat", "r-lib/roxygen2", "Rdatatable/data.table", "rstudio/shiny",203 "rstudio/rmarkdown", "yihui/knitr", "r-lib/rlang", "r-lib/pak", "rstudio/renv", "rstudio/reticulate", "tidymodels/tidymodels", "r-spatial/sf", "rstudio/plumber", "r-lib/httr2", "ropensci/targets", "rstudio/bslib"]),204 src("posit", "Posit (RStudio)", "posit.co", ["posit pbc", "rstudio pbc", "rstudio", "quarto"], categories=["open-source", "developer", "science"], country="US", products=["RStudio", "Positron", "Quarto", "Shiny for Python", "Great Tables", "Ark"],205 repos=[("rstudio/rstudio", T), "posit-dev/positron", "quarto-dev/quarto-cli", "posit-dev/py-shiny", "posit-dev/great-tables", "posit-dev/publisher", "posit-dev/ark", "posit-dev/pointblank"],206 feeds=[("blog feed", "https://posit.co/feed/")]),207 ext("dotnet", aliases=["asp.net core", "aspnetcore", ".net maui", "entity framework", "blazor", "powershell"],208 products=["ASP.NET Core", ".NET SDK", ".NET MAUI", "Entity Framework Core", "Roslyn", "F#", "PowerShell", "NuGet", "Orleans", "Aspire", "MSBuild", "Avalonia", "Uno Platform", "Polly", "MediatR", "Serilog", "xUnit", "NUnit", "Dapper", "MassTransit", "Hangfire", "Npgsql"],209 repos=["dotnet/aspnetcore", "dotnet/sdk", "dotnet/maui", "dotnet/efcore", "dotnet/roslyn", "dotnet/fsharp", "PowerShell/PowerShell", "NuGet/NuGet.Client", "dotnet/orleans", "dotnet/aspire", "dotnet/msbuild",210 "AvaloniaUI/Avalonia", "unoplatform/uno", "App-vNext/Polly", "jbogard/MediatR", "serilog/serilog", "xunit/xunit", "nunit/nunit", "DapperLib/Dapper", "MassTransit/MassTransit", "HangfireIO/Hangfire",211 "npgsql/npgsql", "microsoft/garnet", "OmniSharp/omnisharp-roslyn"]),212 ext("deno", products=["Fresh", "Deno Standard Library"], repos=["denoland/fresh", "denoland/std"]),213 ext("microsoft", products=["Windows Terminal", "WSL", "winget", "vcpkg", "Playwright", "PowerToys", "Fluent UI", "LightGBM", "TypeSpec", "windows-rs", "Monaco Editor", "mimalloc", "MsQuic", "Windows App SDK", "typescript-go"],214 repos=["microsoft/terminal", "microsoft/WSL", "microsoft/winget-cli", "microsoft/vcpkg", "microsoft/playwright", "microsoft/PowerToys", "microsoft/fluentui", "microsoft/LightGBM", "microsoft/typespec",215 "microsoft/windows-rs", "microsoft/monaco-editor", "microsoft/mimalloc", "microsoft/msquic", "microsoft/WindowsAppSDK", "microsoft/typescript-go", "microsoft/vscode-python", "microsoft/vscode-cpptools",216 "microsoft/vscode-jupyter", "microsoft/pylance-release", "microsoft/rushstack"]),217 ext("typescript", products=["typedoc", "type-fest", "typescript-language-server", "DefinitelyTyped"],218 repos=["typescript-language-server/typescript-language-server", "TypeStrong/typedoc", "sindresorhus/type-fest", "TypeStrong/ts-loader"]),219220 "Web frameworks, front-end and build tooling",221 src("expressjs", "Express", "expressjs.com", ["express js", "expressjs", "express framework"], tier="B", repos=["expressjs/express", "expressjs/body-parser", "expressjs/multer", "expressjs/cors"]),222 src("fastify", "Fastify", "fastify.dev", ["fastify framework"], tier="B", repos=["fastify/fastify", "fastify/fastify-cli", "fastify/fastify-swagger", "fastify/fastify-jwt", "pinojs/pino"]),223 src("nestjs", "NestJS", "nestjs.com", ["nest js", "nestjs framework", "nest framework"], tier="B", repos=["nestjs/nest", "nestjs/nest-cli", "nestjs/graphql", "nestjs/swagger", "nestjs/typeorm"]),224 src("hono", "Hono", "hono.dev", ["honojs", "hono framework"], country="JP", repos=["honojs/hono", "honojs/middleware", "honojs/node-server", "honojs/honox"]),225 src("koa", "Koa", "koajs.com", ["koajs", "koa framework"], repos=["koajs/koa", "koajs/router"]),226 src("adonisjs", "AdonisJS", "adonisjs.com", ["adonis js", "adonisjs framework"], repos=["adonisjs/core", "adonisjs/lucid"]),227 src("remix", "Remix / React Router", "remix.run", ["remix run", "react router", "react-router"], tier="B", country="US", products=["React Router", "Remix"],228 repos=["remix-run/react-router", "remix-run/remix"], feeds=[("blog feed", "https://remix.run/blog/rss.xml")]),229 src("nuxt", "Nuxt", "nuxt.com", ["nuxt js", "nuxtjs", "nuxt framework", "unjs", "nitro"], tier="B", country="FR", products=["Nuxt", "Nitro", "UnJS", "Nuxt UI", "Nuxt Content", "h3"],230 repos=["nuxt/nuxt", "nitrojs/nitro", "h3js/h3", "nuxt/ui", "nuxt/content", "nuxt/image", "nuxt/devtools", "unjs/unstorage", "unjs/ofetch", "nuxt-modules/i18n"], feeds=[("blog feed", "https://nuxt.com/blog/rss.xml")]),231 ext("svelte", products=["SvelteKit", "vite-plugin-svelte", "Svelte language tools", "shadcn-svelte", "Skeleton", "Bits UI", "Threlte"],232 repos=["sveltejs/kit", "sveltejs/vite-plugin-svelte", "sveltejs/language-tools", "sveltejs/cli", "huntabyte/shadcn-svelte", "huntabyte/bits-ui", "skeletonlabs/skeleton", "threlte/threlte"]),233 src("solidjs", "SolidJS", "solidjs.com", ["solid js", "solidjs framework", "solidstart"], products=["Solid", "SolidStart", "Solid Router", "Kobalte"],234 repos=["solidjs/solid", "solidjs/solid-start", "solidjs/solid-router", "solidjs-community/solid-primitives", "kobaltedev/kobalte"]),235 src("qwik", "Qwik", "qwik.dev", ["qwik framework", "qwikcity", "builder.io qwik", "partytown"], products=["Qwik", "Partytown", "Mitosis"], repos=["QwikDev/qwik", "QwikDev/partytown", "BuilderIO/mitosis"]),236 src("htmx", "htmx", "htmx.org", ["htmx library", "hypermedia systems", "big sky software", "hyperscript"], products=["htmx", "_hyperscript", "idiomorph"],237 repos=["bigskysoftware/htmx", "bigskysoftware/htmx-extensions", "bigskysoftware/_hyperscript", "bigskysoftware/idiomorph"], feeds=[("essays feed", "https://htmx.org/atom.xml", "ATOM")]),238 src("alpinejs", "Alpine.js", "alpinejs.dev", ["alpine js", "alpinejs"], repos=["alpinejs/alpine"]),239 src("preact", "Preact", "preactjs.com", ["preactjs", "preact signals"], repos=["preactjs/preact", "preactjs/signals", "preactjs/preact-render-to-string", "preactjs/preset-vite"]),240 src("lit", "Lit", "lit.dev", ["lit element", "lit-element", "polymer", "web components"], country="US", products=["Lit", "Shoelace", "Stencil", "Open Web Components"],241 repos=["lit/lit", "shoelace-style/shoelace", "stenciljs/core", "open-wc/open-wc", "modernweb-dev/web"]),242 src("emberjs", "Ember.js", "emberjs.com", ["ember js", "emberjs", "ember cli", "ember data"], products=["Ember CLI", "Ember Data", "Embroider", "Glimmer"],243 repos=["emberjs/ember.js", "ember-cli/ember-cli", "emberjs/data", "embroider-build/embroider", "glimmerjs/glimmer-vm"], feeds=[("blog feed", "https://blog.emberjs.com/feed.xml")]),244 src("tanstack", "TanStack", "tanstack.com", ["tanstack query", "react query", "tanstack router", "tanstack table", "tanstack start"], tier="B", country="US",245 products=[("TanStack Query", "software", ["react query"]), "TanStack Router", "TanStack Table", "TanStack Start", "TanStack Form", "TanStack Virtual", "TanStack DB"],246 repos=["TanStack/query", "TanStack/router", "TanStack/table", "TanStack/form", "TanStack/virtual", "TanStack/db"]),247 ext("vue", products=["Vue Router", "Pinia", "VitePress", "Vue language tools (Volar)", "Vue DevTools", "VueUse", "Vuetify", "Element Plus", "PrimeVue", "Quasar", "Ant Design Vue", "Naive UI"],248 repos=["vuejs/router", "vuejs/pinia", "vuejs/vitepress", "vuejs/language-tools", "vuejs/devtools", "vuejs/test-utils", "vuejs/create-vue", "vuejs/eslint-plugin-vue", "vueuse/vueuse", "vuetifyjs/vuetify",249 "element-plus/element-plus", "primefaces/primevue", "quasarframework/quasar", "vueComponent/ant-design-vue", "tusen-ai/naive-ui", "unplugin/unplugin-vue-components", "vitejs/vite-plugin-vue"]),250 ext("react", products=["Relay", "Lexical", "Hermes", "Redux", "Redux Toolkit", "Zustand", "Jotai", "React Three Fiber", "react-spring", "React Hook Form", "Motion (Framer Motion)", "dnd kit", "SWR", "Recharts", "styled-components", "Emotion", "React Testing Library", "Metro", "Flow", "StyleX", "Docusaurus", "Yoga"],251 repos=["facebook/react", "facebook/relay", "facebook/lexical", "facebook/hermes", "reduxjs/redux", "reduxjs/redux-toolkit", "pmndrs/zustand", "pmndrs/jotai", "pmndrs/react-three-fiber", "pmndrs/react-spring",252 "react-hook-form/react-hook-form", "motiondivision/motion", "clauderic/dnd-kit", "vercel/swr", "recharts/recharts", "styled-components/styled-components", "emotion-js/emotion",253 "testing-library/react-testing-library", "facebook/metro", "facebook/flow", "facebook/yoga", "facebook/stylex", "facebook/docusaurus"]),254 ext("react-native", products=["React Navigation", "Reanimated", "Gesture Handler", "react-native-screens", "React Native Paper", "FlashList", "React Native Skia", "VisionCamera", "MMKV", "react-native-maps", "Async Storage", "Bottom Sheet", "React Native CLI"],255 repos=["react-navigation/react-navigation", "software-mansion/react-native-reanimated", "software-mansion/react-native-gesture-handler", "software-mansion/react-native-screens", "callstack/react-native-paper",256 "Shopify/flash-list", "Shopify/react-native-skia", "react-native-community/cli", "mrousavy/react-native-vision-camera", "mrousavy/react-native-mmkv", "react-native-maps/react-native-maps",257 "react-native-async-storage/async-storage", "gorhom/react-native-bottom-sheet", "callstack/react-native-testing-library"]),258 ext("angular", products=["Angular CLI", "Angular Material / CDK", "AngularFire", "NgRx", "ng-bootstrap", "PrimeNG", "ng-packagr", "angular-eslint", "Analog", "NGXS", "Transloco", "ngx-translate", "Taiga UI", "NG-ZORRO"],259 repos=["angular/angular-cli", "angular/components", "angular/angularfire", "ngrx/platform", "ng-bootstrap/ng-bootstrap", "primefaces/primeng", "ng-packagr/ng-packagr", "angular-eslint/angular-eslint",260 "analogjs/analog", "ngxs/store", "jsverse/transloco", "ngx-translate/core", "taiga-family/taiga-ui", "NG-ZORRO/ng-zorro-antd", "angular/vscode-ng-language-service"]),261 ext("tailwind", products=["Headless UI", "Heroicons", "tailwindcss-typography", "tailwindcss-forms", "prettier-plugin-tailwindcss", "Tailwind CSS IntelliSense", "daisyUI", "Flowbite", "tailwind-merge", "cva", "UnoCSS", "PostCSS", "Autoprefixer", "Sass", "Less", "Lightning CSS", "Bootstrap", "Bulma", "Pico CSS", "Open Props", "stylelint", "Browserslist", "cssnano"],262 repos=["tailwindlabs/headlessui", "tailwindlabs/heroicons", "tailwindlabs/tailwindcss-typography", "tailwindlabs/tailwindcss-forms", "tailwindlabs/prettier-plugin-tailwindcss", "tailwindlabs/tailwindcss-intellisense",263 "saadeghi/daisyui", "themesberg/flowbite", "dcastil/tailwind-merge", "joe-bell/cva", "unocss/unocss", "postcss/postcss", "postcss/autoprefixer", "sass/dart-sass", "less/less.js", "parcel-bundler/lightningcss",264 "twbs/bootstrap", "twbs/icons", "jgthms/bulma", "picocss/pico", "argyleink/open-props", "stylelint/stylelint", "browserslist/browserslist", "cssnano/cssnano"]),265 src("shadcn-ui", "shadcn/ui", "ui.shadcn.com", ["shadcn", "shadcn ui", "shadcn/ui"], tier="B", country="US", repos=["shadcn-ui/ui"]),266 src("radix-ui", "Radix UI", "radix-ui.com", ["radix ui", "radix primitives", "radix themes", "workos radix"], country="US", products=["Radix Primitives", "Radix Themes", "Radix Colors", "Radix Icons"],267 repos=["radix-ui/primitives", "radix-ui/themes", "radix-ui/colors", "radix-ui/icons"]),268 src("mui", "MUI (Material UI)", "mui.com", ["material ui", "material-ui", "mui x", "base ui", "pigment css", "toolpad"], tier="B", products=["Material UI", "MUI X", "Base UI", "Pigment CSS", "Toolpad"],269 repos=["mui/material-ui", "mui/mui-x", "mui/base-ui", "mui/pigment-css", "mui/toolpad"]),270 src("chakra-ui", "Chakra UI", "chakra-ui.com", ["chakra", "chakra ui", "zag js", "ark ui", "panda css"], products=["Chakra UI", "Zag", "Ark UI", "Panda CSS"], repos=["chakra-ui/chakra-ui", "chakra-ui/zag", "chakra-ui/ark", "chakra-ui/panda"]),271 src("ant-design", "Ant Design", "ant.design", ["antd", "ant design", "ant design pro", "ant design x"], country="CN", products=["Ant Design", "Ant Design Pro Components", "Ant Design Mobile", "Ant Design X"],272 repos=["ant-design/ant-design", "ant-design/pro-components", "ant-design/ant-design-mobile", "ant-design/x"]),273 src("mantine", "Mantine", "mantine.dev", ["mantine ui", "mantine dev"], repos=["mantinedev/mantine"]),274 src("storybook", "Storybook", "storybook.js.org", ["storybookjs", "storybook js", "chromatic"], tier="B", products=["Storybook", "Storybook test-runner", "Chromatic CLI"],275 repos=["storybookjs/storybook", "storybookjs/test-runner", "chromaui/chromatic-cli"]),276 src("primer", "GitHub Primer design system", "primer.style", ["primer design system", "primer react", "octicons"], country="US", products=["Primer React", "Primer CSS", "Primer Primitives", "Octicons"],277 repos=["primer/react", "primer/css", "primer/primitives", "primer/octicons"]),278 src("carbon-design-system", "Carbon Design System (IBM)", "carbondesignsystem.com", ["carbon design system", "ibm carbon", "carbon components"], country="US", products=["Carbon", "Carbon Charts"],279 repos=["carbon-design-system/carbon", "carbon-design-system/carbon-charts"]),280 src("adobe-spectrum", "Adobe Spectrum / React Aria", "react-spectrum.adobe.com", ["react spectrum", "react aria", "spectrum design system", "spectrum css", "spectrum web components"], country="US",281 products=["React Aria", "React Spectrum", "Spectrum CSS", "Spectrum Web Components"], repos=["adobe/react-spectrum", "adobe/spectrum-css", "adobe/spectrum-web-components"]),282 src("nx", "Nx", "nx.dev", ["nx monorepo", "nrwl", "nx dev", "lerna"], tier="B", country="US", products=["Nx", "Nx Console", "Lerna"], repos=["nrwl/nx", "nrwl/nx-console", "lerna/lerna"]),283 src("biome", "Biome", "biomejs.dev", ["biomejs", "biome toolchain", "rome tools"], tier="B", repos=["biomejs/biome", "biomejs/biome-vscode"]),284 src("oxc", "Oxc / VoidZero", "oxc.rs", ["oxc project", "oxlint", "void zero", "voidzero", "rolldown"], tier="B", products=["oxlint", "oxfmt", "Rolldown", "Vite+"],285 repos=["oxc-project/oxc", "oxc-project/oxc-resolver", "rolldown/rolldown", "voidzero-dev/vite-plus"]),286 src("swc", "SWC", "swc.rs", ["swc project", "speedy web compiler"], tier="B", repos=["swc-project/swc", "swc-project/swc-node", "swc-project/plugins"]),287 src("rspack", "Rspack / Rstack (ByteDance web-infra)", "rspack.dev", ["rspack", "rsbuild", "rspress", "rslib", "modern.js", "web-infra-dev"], tier="B", country="CN",288 products=["Rspack", "Rsbuild", "Rspress", "Rslib", "Rsdoctor", "Modern.js"],289 repos=["web-infra-dev/rspack", "web-infra-dev/rsbuild", "web-infra-dev/rspress", "web-infra-dev/rslib", "web-infra-dev/rsdoctor", "web-infra-dev/modern.js"]),290 src("parcel", "Parcel", "parceljs.org", ["parcel bundler", "parceljs"], repos=["parcel-bundler/parcel", "parcel-bundler/watcher"]),291 ext("vite", products=["vite-plugin-react", "vite-plugin-pwa", "Vike", "vitest VS Code", "eslint-plugin-vitest"],292 repos=["vitejs/vite-plugin-react", "vite-pwa/vite-plugin-pwa", "vikejs/vike", "vitest-dev/vscode", "vitest-dev/eslint-plugin-vitest"]),293 ext("webpack", products=["webpack-cli", "webpack-dev-server", "Module Federation", "webpack-bundle-analyzer"],294 repos=["webpack/webpack-cli", "webpack/webpack-dev-server", "module-federation/core", "webpack-contrib/webpack-bundle-analyzer", "webpack-contrib/css-loader", "webpack-contrib/mini-css-extract-plugin"]),295 ext("esbuild", products=["tsup"], repos=["egoist/tsup"]),296 ext("rollup", products=["Rollup plugins"], repos=["rollup/plugins"]),297 ext("babel", products=["babel-loader", "babel-plugin-macros"], repos=["babel/babel-loader", "babel/minify", "kentcdodds/babel-plugin-macros"]),298 ext("eslint", products=["ESLint Stylistic", "eslint-plugin-import", "eslint-plugin-react", "eslint-plugin-jsx-a11y", "eslint-plugin-unicorn", "eslint-plugin-n", "@eslint/css", "@eslint/markdown", "@eslint/json"],299 repos=["eslint-stylistic/eslint-stylistic", "import-js/eslint-plugin-import", "jsx-eslint/eslint-plugin-react", "jsx-eslint/eslint-plugin-jsx-a11y", "sindresorhus/eslint-plugin-unicorn", "eslint-community/eslint-plugin-n",300 "eslint/css", "eslint/markdown", "eslint/json", "eslint/rewrite", "eslint/config-inspector"]),301 ext("prettier", products=["prettier-vscode", "eslint-config-prettier", "eslint-plugin-prettier", "@prettier/plugin-php", "@prettier/plugin-ruby", "@prettier/plugin-xml", "pretty-quick"],302 repos=["prettier/prettier-vscode", "prettier/eslint-config-prettier", "prettier/eslint-plugin-prettier", "prettier/plugin-php", "prettier/plugin-ruby", "prettier/plugin-xml", "prettier/pretty-quick"]),303 src("graphql", "GraphQL Foundation", "graphql.org", ["graphql", "graphql foundation", "graphql spec", "graphql-js"], categories=["open-source", "developer", "standards"], country="US",304 products=["GraphQL specification", "GraphQL.js", "GraphiQL", "GraphQL Code Generator", "GraphQL Yoga", "GraphQL Mesh", "graphql-ws", "DataLoader"],305 repos=["graphql/graphql-js", ("graphql/graphql-spec", T), "graphql/graphiql", "dotansimha/graphql-code-generator", "graphql-hive/graphql-yoga", "graphql-hive/graphql-mesh", "enisdenjo/graphql-ws", "graphql/dataloader"],306 feeds=[("blog feed", "https://graphql.org/blog/rss.xml")]),307 src("apollo-graphql", "Apollo GraphQL", "apollographql.com", ["apollo graphql", "apollo server", "apollo client", "apollo router", "apollo federation"], tier="B", country="US",308 products=["Apollo Server", "Apollo Client", "Apollo Router", "Apollo Federation", "Rover"], repos=["apollographql/apollo-server", "apollographql/apollo-client", "apollographql/router", "apollographql/federation", "apollographql/rover"]),309 src("hasura", "Hasura", "hasura.io", ["hasura graphql engine", "hasura ddn", "promptql"], tier="B", country="US", products=["Hasura GraphQL Engine", "Hasura DDN", "PromptQL"], repos=["hasura/graphql-engine", "hasura/ndc-postgres", "hasura/ndc-hub"]),310 src("prisma", "Prisma", "prisma.io", ["prisma orm", "prisma client", "prisma postgres", "prisma accelerate"], tier="B", country="DE", products=["Prisma ORM", "Prisma Postgres", "Prisma Accelerate"],311 repos=["prisma/prisma", "prisma/prisma-engines", "prisma/language-tools", "prisma/studio"], feeds=[("blog feed", "https://www.prisma.io/blog/rss.xml")]),312 src("drizzle", "Drizzle ORM", "orm.drizzle.team", ["drizzle orm", "drizzle kit", "drizzle team"], tier="B", repos=["drizzle-team/drizzle-orm", "drizzle-team/drizzle-kit-mirror"]),313 src("trpc", "tRPC", "trpc.io", ["trpc", "typescript rpc"], repos=["trpc/trpc"]),314 src("keycloak", "Keycloak", "keycloak.org", ["keycloak", "red hat sso", "keycloak identity"], tier="B", categories=OSSEC, repos=["keycloak/keycloak", "keycloak/keycloak-quickstarts"], feeds=[("blog feed", "https://www.keycloak.org/rss.xml")]),315 src("ory", "Ory", "ory.sh", ["ory kratos", "ory hydra", "ory keto", "ory oathkeeper", "ory network"], categories=OSSEC, country="DE", products=["Kratos", "Hydra", "Keto", "Oathkeeper"],316 repos=["ory/kratos", "ory/hydra", "ory/keto", "ory/oathkeeper", "ory/fosite"]),317 src("authentik", "authentik", "goauthentik.io", ["authentik", "goauthentik", "authentik security"], categories=OSSEC, country="US", repos=["goauthentik/authentik"]),318 src("authelia", "Authelia", "authelia.com", ["authelia"], categories=OSSEC, repos=["authelia/authelia"]),319 src("zitadel", "ZITADEL", "zitadel.com", ["zitadel", "zitadel identity"], categories=OSSEC, country="CH", repos=["zitadel/zitadel", "zitadel/oidc"]),320 src("authjs", "Auth.js (NextAuth.js)", "authjs.dev", ["auth.js", "authjs", "next-auth", "nextauth", "nextauth.js"], repos=["nextauthjs/next-auth"]),321 src("better-auth", "Better Auth", "better-auth.com", ["better auth", "better-auth"], repos=["better-auth/better-auth"]),322 src("supertokens", "SuperTokens", "supertokens.com", ["supertokens"], categories=OSSEC, repos=["supertokens/supertokens-core", "supertokens/supertokens-node"]),323 src("casbin", "Casbin / Casdoor", "casbin.org", ["casbin", "casdoor"], categories=OSSEC, repos=["casbin/casbin", "casdoor/casdoor", "casbin/jcasbin", "casbin/pycasbin"]),324 src("hanko", "Hanko", "hanko.io", ["hanko", "hanko passkeys"], categories=OSSEC, country="DE", repos=["teamhanko/hanko"]),325 src("logto", "Logto", "logto.io", ["logto"], categories=OSSEC, repos=["logto-io/logto"]),326 src("cypress", "Cypress", "cypress.io", ["cypress testing", "cypress.io"], tier="B", country="US", repos=["cypress-io/cypress", "cypress-io/github-action"]),327 src("testing-library", "Testing Library", "testing-library.com", ["testing library", "dom testing library", "user-event", "jest-dom"], products=["DOM Testing Library", "user-event", "jest-dom", "Vue Testing Library", "Svelte Testing Library", "Angular Testing Library"],328 repos=["testing-library/dom-testing-library", "testing-library/user-event", "testing-library/jest-dom", "testing-library/vue-testing-library", "testing-library/svelte-testing-library", "testing-library/angular-testing-library"]),329 src("mock-service-worker", "Mock Service Worker", "mswjs.io", ["msw", "mock service worker", "mswjs"], repos=["mswjs/msw", "mswjs/data", "mswjs/interceptors"]),330 src("faker", "Faker", "fakerjs.dev", ["faker js", "fakerjs", "faker.js", "faker python", "datafaker"], products=["Faker (JS)", "Faker (Python)", "Faker (Ruby)", "FakerPHP", "Datafaker", "gofakeit"],331 repos=["faker-js/faker", "joke2k/faker", "faker-ruby/faker", "FakerPHP/Faker", "datafaker-net/datafaker", "brianvoe/gofakeit"]),332 src("d3", "D3 / Observable", "d3js.org", ["d3 js", "d3js", "d3.js", "observable plot", "observablehq"], country="US", products=["D3", "Observable Plot", "Observable Framework", "Observable Runtime"],333 repos=["d3/d3", "observablehq/plot", "observablehq/framework", "observablehq/runtime"]),334 src("chartjs", "Chart.js", "chartjs.org", ["chart js", "chartjs", "chart.js"], products=["Chart.js", "chartjs-plugin-datalabels", "chartjs-plugin-annotation", "chartjs-plugin-zoom", "react-chartjs-2"],335 repos=["chartjs/Chart.js", "chartjs/chartjs-plugin-datalabels", "chartjs/chartjs-plugin-annotation", "chartjs/chartjs-plugin-zoom", "reactchartjs/react-chartjs-2"]),336 src("apexcharts", "ApexCharts", "apexcharts.com", ["apexcharts", "apex charts"], repos=["apexcharts/apexcharts.js", "apexcharts/react-apexcharts", "apexcharts/vue-apexcharts", "apexcharts/ng-apexcharts"]),337 src("plotly", "Plotly", "plotly.com", ["plotly", "plotly.js", "plotly python", "plotly dash", "plotly express"], tier="B", country="CA", products=["plotly.js", "plotly.py", "Dash", "Dash AG Grid", "Kaleido", "Dash Mantine Components", "dash-bootstrap-components"],338 repos=["plotly/plotly.js", "plotly/plotly.py", "plotly/dash-ag-grid", "plotly/Kaleido", "snehilvj/dash-mantine-components", "facultyai/dash-bootstrap-components", "plotly/plotly.rs"]),339 src("vega", "Vega / Vega-Lite / Altair", "vega.github.io", ["vega", "vega-lite", "altair", "vega-altair", "vega embed"], country="US", products=["Vega", "Vega-Lite", "Vega-Altair", "vega-embed", "vl-convert"],340 repos=["vega/vega", "vega/vega-lite", "vega/altair", "vega/vega-embed", "vega/vl-convert"]),341 src("holoviz", "Bokeh / HoloViz", "holoviz.org", ["bokeh", "holoviz", "holoviews", "hvplot", "datashader", "param"], categories=["open-source", "developer", "science"], products=["Bokeh", "Panel", "HoloViews", "hvPlot", "Datashader", "Param"],342 repos=["bokeh/bokeh", "holoviz/panel", "holoviz/holoviews", "holoviz/hvplot", "holoviz/datashader", "holoviz/param"]),343 src("threejs", "three.js", "threejs.org", ["three js", "threejs", "three.js", "mrdoob"], tier="B", products=["three.js", "drei", "Theatre.js"], repos=["mrdoob/three.js", "pmndrs/drei", "pmndrs/postprocessing"]),344 src("babylonjs", "Babylon.js", "babylonjs.com", ["babylon js", "babylonjs", "babylon.js"], country="US", repos=["BabylonJS/Babylon.js", "BabylonJS/Editor"]),345 src("pixijs", "PixiJS", "pixijs.com", ["pixi js", "pixijs", "pixi.js"], repos=["pixijs/pixijs", "pixijs/pixi-react", "pixijs/layout"]),346 src("phaser", "Phaser", "phaser.io", ["phaser game framework", "phaserjs", "phaser editor"], country="GB", repos=["phaserjs/phaser", "phaserjs/editor"]),347 src("playcanvas", "PlayCanvas", "playcanvas.com", ["playcanvas engine", "supersplat"], country="GB", repos=["playcanvas/engine", "playcanvas/supersplat", "playcanvas/editor"]),348 src("maplibre", "MapLibre", "maplibre.org", ["maplibre gl", "maplibre native", "martin tiles", "maputnik"], categories=["open-source", "developer", "technology"], products=["MapLibre GL JS", "MapLibre Native", "Martin", "Maputnik", "MapLibre Style Spec"],349 repos=["maplibre/maplibre-gl-js", "maplibre/maplibre-native", "maplibre/martin", "maplibre/maputnik", "maplibre/maplibre-style-spec"]),350 src("leaflet", "Leaflet", "leafletjs.com", ["leaflet js", "leafletjs", "leaflet.js"], repos=["Leaflet/Leaflet", "Leaflet/Leaflet.markercluster", "PaulLeCam/react-leaflet"]),351 src("openlayers", "OpenLayers", "openlayers.org", ["openlayers", "ol"], repos=["openlayers/openlayers", "openlayers/ol-ext"]),352 src("deckgl", "deck.gl / vis.gl", "deck.gl", ["deck.gl", "deckgl", "vis.gl", "visgl", "luma.gl", "loaders.gl", "react-map-gl", "kepler.gl"], categories=["open-source", "developer", "technology"], country="US",353 products=["deck.gl", "luma.gl", "loaders.gl", "react-map-gl", "kepler.gl"], repos=["visgl/deck.gl", "visgl/luma.gl", "visgl/loaders.gl", "visgl/react-map-gl", "keplergl/kepler.gl"]),354 src("cesium", "CesiumJS", "cesium.com", ["cesium", "cesiumjs", "3d tiles", "cesium ion"], categories=["open-source", "developer", "technology"], country="US", products=["CesiumJS", "3D Tiles", "Cesium for Unreal", "Cesium for Unity"],355 repos=["CesiumGS/cesium", ("CesiumGS/3d-tiles", T), "CesiumGS/cesium-unreal", "CesiumGS/cesium-unity", "CesiumGS/cesium-native"]),356]357