Google предложил рейтинг критически важных Open-source проектов

от автора

О многих проектах говорят, что они крайне важны для какой-либо отрасли. Но как оценить их реальную значимость? Корпорация Google разработала специальный рейтинг для оценки открытых проектов — как раз по степени важности для отрасли.

Рейтинг создан не просто так — его предлагается использоваться для выделения важнейших проектов, от которых зависит развитие. Именно для этих проектов нужно выделять максимум ресурсов, для сопровождения, разработки и обеспечения безопасности. Рейтингом, по замыслу, будут пользоваться организации, которые могут выделить нужные проектам ресурсы.

Для составления этого проекта предложена специальная формула и показатель — уровень критичности (Criticality Score). Кстати, алгоритм оценки предложил известный разработчик Роб Пайк (Rob Pike), который стоял у истоков Unix, Plan 9, Inferno и UTF-8. Этот алгоритм учитывает 10 разных коэффициентов, которые и служат для подсчета финального уровня важности. Диапазон оценки — от 0 (самые некритичные проекты) до 1 (самые критичные и важные).

В формуле используются следующие весовые коэффициенты:

  • Число зависящих проектов (ключевой параметр, вес 2).
  • Количество задействованных разработчиков (ключевой параметр, вес 2).
  • Время существования проекта (1).
  • Время последнего обновления (-1).
  • Количество поддерживающих проект организаций (1).
  • Среднее число изменений в год (1).
  • Число комментариев при обсуждении проблем (1).
  • Количество релизов в год (0.5).
  • Число закрытых и обновленных сообщений об ошибках за последние 90 дней (0.5).

При необходимости можно добавить и собственные критерии, подходящие для различных направлений и отраслей. Кроме того, если весовые значения коэффициентов по какой-то причине не подходят, их можно изменить. Что касается самого рейтинга, то он вычисляется специальной утилитой, доступной на GitHub.

Команды критически важных проектов получат возможность попросить помощи у организации OpenSSF (Open Source Security Foundation). Она, при помощи входящих в ее состав членов, выделяет ресурсы, консультационную поддержку, финансы или даже элементы инфраструктуры.

Что касается текущего рейтинга, то вот таблица с указанием наиболее важных проектов, написанных на разных языках программирования.

Табличка огромная, не говорите, что не предупреждали

Проекты на языке Си. Проекты на языке C++. Проекты на языке Java. Проекты на языке JavaScript. Проекты на языке Python. Проекты на языке Rust.
 git ядро linux php-src openssl systemd curl u-boot qemu mbed-os zephyr astropy redis gnucash openwrt esp-idf RIOT libuv bcc util-linux ompi RetroArch lxc FreeRDP glusterfs spdk darktable obs-studio frr urbit FFmpeg ovs ImageMagick freebsd fio libwebsockets edk2 zfs gpdb kamailio haproxy netdata mbedtls fluent-bit ltp micropython wazuh rsyslog CMake mpv fwupd janus-gateway vlc wine lede tmux s2n criu OpenSC arduino-esp32 betaflight dpdk rt-thread radare2 firmware Tasmota zsh jemalloc mruby keepalived flatpak gpac libvips gcc oj blender gimp syslog-ng rhodes lightning yugabyte-db librdkafka i3 HandBrake freeradius-server panda neomutt zstd Espruino ctags libusb amazon-freertos strongswan h2o collectd defold coreboot lvgl libpcap paparazzi httpd varnish-cache memcached citus pygit2 phpredis cinnamon source scrcpy open62541 ponyc libevent wireshark xrdp postgres xxHash rspamd reactos inav stlink OpenBSD src fontforge goaccess libsodium weechat openssh-portable seL4 suricata libarchive raylib lua-nginx-module wlroots dynamorio Remmina oniguruma rtl_433 igraph arm-trusted-firmware nnn data.table lz4 bdwgc tcpdump sleuthkit klipper nodemcu-firmware scancode-toolkit nodemcu-firmware irssi uwsgi libffi openvpn coreutils borg go-sqlite3 nuster ultrajson cc65 nDPI yara stellar-core CMSIS_5 audacity TDengine aircrack-ng nanopb honggfuzz geany capstone timescaledb civetweb xmake libfuse dokany sysstat i3 json-c janet hiredis iperf openwrt libjpeg-turbo mosquitto cleanflight PF_RING simh unicorn mtr nginx hashcat RediSearch pygame zinit motion greenlet firejail skynet rt-n56u rubinius userland   

 tensorflow ceph pytorch bitcoin electron Marlin Cataclysm-DDA llvm-project rocksdb QGIS grpc opencv envoy ardupilot xbmc server emscripten arrow vcpkg godot tdesktop mongo solidity arangodb incubator-mxnet ClickHouse gdal hhvm nix xgboost zcash v8 root qgroundcontrol wxWidgets drake TrinityCore mixxx folly z3 librealsense scylla rpcs3 mlpack cgal swoole-src scummvm Arduino harfbuzz fmt mame Halide protobuf thrift pdns pcl assimp zeek hpx pybind11 cudf doxygen openmw minetest terminal ppsspp swig proxygen cocos2d-x wesnoth PrusaSlicer supercollider imgui Catch2 libzmq googletest PowerToys fbthrift gnuradio kakoune DeepSpeech cppcheck mumble LightGBM FreeCAD benchmark lmms botan foundationdb node-sass eos crawl Urho3D stellarium spdlog glslang opentx domoticz OpenRCT2 serving mysql-5.6 json flatbuffers openthread openscad watchman apollo passenger osquery Magisk libtorrent qBittorrent vnpy libigl ardour mysql-server AirSim mapbox-gl-native bgfx keepassxc oneflow openFrameworks openpilot notepad-plus-plus rust-bindgen subsurface catboost icinga2 PX4-Autopilot stk-code QuantLib or-tools react-native-windows MuseScore shogun mesos Clementine srsLTE CopyQ openvino dlib falco rippled bullet3 ethminer duckdb esphome carla sqlitebrowser omim qt-creator bpftrace citra GDevelop tiled dolphin newsboat opencv_contrib jsoncpp rathena serenity cvxpy QOwnNotes uncrustify yoga i2pd proxysql filament RawTherapee taichi Cinder glow znc ncnn ogre tesseract onnxruntime fivem VTK KeyDB yosys shotcut xmrig monero skia ModSecurity tigervnc yuzu DALI wangle OpenShadingLanguage ninja codelite osrm-backend seastar dxvk node-canvas abseil-cpp     

 elasticsearch flink spring-boot hadoop netty jenkins beam bazel alluxio pmd jdk ballerina-lang cas spring-framework camel selenium closure-compiler quarkus nokogiri kafka hazelcast robolectric presto spring-security NewPipe mockito platform_frameworks_base jackson-databind hbase okhttp checkstyle pulsar jetty.project rstudio hibernate-orm tomcat Activiti openapi-generator neo4j zeppelin cassandra micronaut-core Anki-Android hive cucumber Mindustry orientdb dropwizard che junit5 testcontainers-java jOOQ lucene-solr openj9 buck ignite RxJava metrics libgdx dubbo javaparser shardingsphere flyway litho dbeaver k-9 groovy aws-sdk-java languagetool keycloak skywalking graylog2-server redisson guava debezium android drools graal grpc-java java-design-patterns lombok pentaho-kettle zookeeper nacos crate storm AntennaPod reactor-core zaproxy runelite ExoPlayer fastjson realm-java h2database druid conductor apollo-android wildfly FrameworkBenchmarks cordova-android armeria flowable-engine capacitor material-components-android Terasology OpenRefine Arduino gocd async-http-client druid micrometer DependencyCheck Signal-Android vespa thingsboard eureka MinecraftForge junit4 zipkin antlr4 Java java-tron spring-cloud-netflix XChange bisq processing kylin resilience4j mybatis-plus hutool guice aeron shiro byte-buddy jmeter vert.x mybatis-3 smile spring-cloud-gateway graphhopper picocli arthas wiremock swagger-core jmonkeyengine incubator-dolphinscheduler apollo jna web3j fresco atmosphere android-maps-utils react-native-push-notification aws-doc-sdk-examples lottie-android FirebaseUI-Android CoreNLP xxl-job halo springfox spring-boot-admin spock HikariCP auto opengrok Sentinel traccar lettuce-core gson cryptomator error-prone feign CS-Notes retrofit incubator-pinot mapstruct jib frontend-maven-plugin react-native-camera janusgraph rest-assured rocketmq spark immutables Java-WebSocket sonarqube glide undertow mockserver karate jedis spring-cloud-alibaba YCSB ksql seata JavaGuide JSON-java canal zuul graphql-java   

 node.js react-native react gatsby three.js bootstrap material-ui odoo next.js Rocket.Chat cypress amphtml create-react-app meteor vue-cli jupyterlab sequelize phaser browser-compat-data material quasar iD highlight.js reaction taro Chart.js knex etherpad-lite eslint-plugin-react reveal.js zigbee2mqtt angular.js shields svelte p5.js openlayers web3.js wekan aframe ember-cli karma react-router video.js react-testing-library marked js-ipfs preact brave-browser request vuepress vue-router acorn discord.js sweetalert2 js.org html-webpack-plugin terser graphql-js vue core-js ava styled-components javascript caniuse sharp dayjs draft-js outline date-fns validator.js standard underscore commander.js react-table UglifyJS swiper standard grommet browserslist handsontable vuex webtorrent engine jquery-ui webpack-bundle-analyzer dash.js vue-i18n sandstorm ag-grid bootstrap-table lerna gridsome uppy RSSHub Modernizr mini-css-extract-plugin TiddlyWiki5 nodemailer Semantic-UI-React uni-app laravel-mix hapi realm-js deck.gl npm-check-updates yup react-dropzone cytoscape.js select2 koa bpmn-js release-it alpine summernote d3 fetch hiring-without-whiteboards pouchdb nightwatch jss agenda agenda OpenAPI-Specification plyr node-http-proxy appwrite gulp Fuse quill workbox less.js joi Inquirer.js conventional-changelog async portainer mjml riot egg codesandbox-client mustache.js swagger-editor zotero laravel-cors KaTeX marko reactivesearch reactivesearch inferno thelounge beef cz-cli react-native-gesture-handler jsdoc sheetjs browser-sync tsdx noVNC popper-core trilium faker.js brackets loopback bootswatch vue-select exceljs browserify postgraphile react-jsonschema-form   

 salt core pandas scikit-learn numpy cpython airflow erpnext matplotlib pytest pip sympy compose rasa sentry celery models sphinx Paddle django synapse electrum zulip numba rq cython dask django-rest-framework ipython requests moto moto bokeh ray ckan youtube-dl mypy wagtail incubator-superset saleor aws-cli xonsh pylint certbot werkzeug cupy hypothesis pyramid scikit-image cryptography cryptography isort aiohttp dvc Python flask qutebrowser spyder boto3 espnet pyinstaller fairseq netbox twisted jupyterhub cookiecutter-django locust tribler pytorch-lightning pipenv mmdetection django-extensions mitmproxy jumpserver psutil statsmodels docker-py fastapi scrapy prefect beets pre-commit django-allauth nltk poetry kitty black Nuitka detectron2 optuna node-gyp jax ambassador Telethon supervisor streamlink redis-py incubator-tvm ParlAI jinja qiskit-terra PySyft allennlp tqdm faker chainer marshmallow django-debug-toolbar pytorch_geometric CppCoreGuidelines google-api-python-client st2 pelican plotly.py fail2ban lutris luigi gensim mycroft-core mongoengine tornado sqlmap networkx calibre sqlalchemy thumbor ignite scapy elastalert localstack great_expectations freqtrade gym sigma graphene-django dash you-get pytext python-for-android OctoPrint documentation gunicorn httpx discord.py attrs OCRmyPDF d2l-en click pytube sanic paramiko XX-Net Python kinto hosts serverless-application-model trio arrow bottle django-crispy-forms uvicorn horovod patroni pycodestyle datasette healthchecks public-apis graphene toml python docker-stacks zipline starlette brython pwntools yapf spotipy Flask-AppBuilder mongo-python-driver spiderfoot glances sshuttle pgcli manim angr folium python-prompt-toolkit chalice recommenders webpy auto-sklearn kafka-python rich Zappa pyro moviepy ranger flair Flask-SocketIO   

 servo cargo rust-clippy tokio rust-analyzer tock tikv alacritty libc substrate rustfmt solana webrender crates.io actix-web hyper eden wasmtime habitat libra clap pyo3 amethyst serde wasmer rustup json rust-openssl winit ripgrep stacks-blockchain vector starship diesel wasm-bindgen chrono coreutils rand reqwest image cc-rs futures-rs nix Rocket core-foundation-rs gleam nushell firecracker rayon polkadot tree-sitter rust-url crossbeam tracing i3status-rust miri gfx wrangler git2-rs trust-dns indy-sdk cbindgen rustlings MeiliSearch bat syn regex grin rhai actix tarpaulin tokei wgpu rust-postgres wezterm cargo-make sentry-cli lighthouse bevy swc materialize ckb shadowsocks-rust yew actix-net sqlx rust tide mio nom zola sled cortex-m LanguageClient-neovim juniper parking_lot rust-bitcoin nalgebra redis-rs rls async-std kube-rs geo broot fd rust-smallvec exa warp veloren log structopt rust-libp2p hashbrown uuid orbtk delta rust imageflow lemmy RustPython itertools linkerd2-proxy racer mailchecker cloud-hypervisor num crossterm tauri probe-rs libhermit-rs tantivy chalk sccache async-graphql rusoto tokenizers handlebars-rust toml-rs spotifyd holochain-rust tonic rustyline rust-bio awesome-rust optic pulldown-cmark serenity h2 boa quiche abstreet spotify-tui bottlerocket neon graph-node quick-xml ggez glium lapin differential-datalog just combine rustls rust-protobuf rust-rocksdb tarpc ncspot conrod ruffle hashes PyOxidizer cursive maturin cargo-audit topgrade glutin imgui-rs nannou ZoKrates 996.ICU fnm embedded-hal ffsend nearcore lsd tower piston curl-rust bitflags rust-sdl2 tui-rs electrs skim reference rust-csv ureq rusty_v8 gitui rust-mysql-simple incubator-teaclave-sgx-sdk   

ссылка на оригинал статьи https://habr.com/ru/company/selectel/blog/532680/