company_banner

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
     
    



    Selectel
    IT-инфраструктура для бизнеса

    Комментарии 27

      +6
      Забавно, что в проектах на Java нет ни одной билд системы: Maven/Gradle,
      Нет Jersey, на котором бегут миллионы сервисов, но есть Quarkus, которому без году неделя.
        +5
        Главное — нет самого рейтинга. При этом в наборе как монстры вроде Hadoop, так и всякая, скажем прямо, фигня вроде frontend-maven-plugin. Ну т.е. проекты очевидно очень разные по важности и сложности их замены чем-либо другим. Ну и вообще… jenkins есть, а nexus значит нет? И что бы это значило?
          0
          нексус можно заменить вебсервером, по крайней мере частично — раздавать артефакты сможет, а дженкинс…
            0
            Заменить как раз можно все. Впрочем, я понял — nexus делает Sonatype, и он только частично OSS. Видимо потому его и нет.
          0

          И нет ANTLR.

            0
            Есть bazel.
            Видимо Google составлял список не из всех существующих проектов, а только те, что используются у них.
            +12

            Хе-хе, нравится мне, что количество разработчиков в рейтинг входит с положительным весом.
            Я так понял, меньше всего поддержка нужна проектам, для которых число грузовика равно 1 – пусть уже загнутся и освободят место для новых?

              0

              Это вопрос из разряда: что важнее, английский язык с сотнями миллионами говорящих, или 577 языков на грани забвения.

                0

                Вовсе нет.
                Сравните проект с миллионом пользователей и одним разработчиком и проект с тысячей пользователей и десятью разработчиками.
                Какой важнее? (Сдаётся мне, тут число разработчиков вообще неважно)
                Какой под угрозой? (Тот, у кого их меньше)

                  0

                  Мне кажется, мы говорим о разных вещах. Важность — это значимость. Об угрозах речи не идёт.


                  Вернёмся к формуле.
                  При прочих равных остальных параметрах, возьмём два:
                  C — контрибьютеры (разрабы)
                  D — зависимости от проекта (юзеры)


                  f(C, D/2) = f(C/2, D)


                  Почему вы не согласны с этим утверждением?

                    0

                    Потому что важность проекта – это юзеры. Больше юзеров – больше важность. Итого, f(..., D/2) < f(..., D).


                    Это – важность проекта. Но есть вторая характеристика: угроза для проекта. Очевидно, что чем меньше разработчиков – тем больше угроза (гуглите число грузовика, оно же Truck Factor или Bus Factor). Imho при равной важности поддерживать надо проект, который находится в опасности.


                    Короче, поддерживать надо проекты, у которых больше юзеров и у которых меньше разработчиков. Число юзеров и число разработчиков влияет в разные стороны.

                      0

                      Давайте в терминах формулы, контрибьютеры не просто так пишут код — они тоже пользователи. Самые заинтересованные пользователи.


                      Угроза — это когда все хотят пользоваться, но никто не хочет вкладываться? Код лежит в открытом доступе, но никто не хочет развивать?


                      О bus-факторе я знаю, но он про другое.

              0

              Почему Sphinx в колонке Python? Он же на C++ написан

              +4
              Хорошо что C# это все не грозит.
                +3
                В столбце Си есть rt-n56u, но это домашний роутер некоторое время как снятый с производства. Кто-нибудь знает каким образом он попал в значимые проекты?
                  0
                  Это же Гугл, что вы ожидаете? Это вам не квадратные люки, тут думать надо.
                    +1
                    Имеется в виду bitbucket.org/padavan/rt-n56u/src, но сам автор сказал что сильно удивлен, ибо с 2016 там не было изменений.
                      0
                      Имеется ввиду это скорее всего
                      github.com/hanwckf/rt-n56u

                      Коммитов там много, только вот ценность…
                        0
                        Это форк первого проекта
                    +3
                    При том, что в рейтинге есть rt-n56u и (внезапно!) reactos, там нет pppd, dnsmasq и скажем accel-ppp. Вот уж действительно, столпы цифровой цивилизации не обойдены стороной. :)
                      +2
                      Ну что, теперь индусы точно знают, на какие педали нажимать, чтобы продвинуть свои проекты?
                        +1

                        Некоторые проекты в списке дважды.

                          +3
                          В таблицу попали драйвер go-sqlite3 и sqlitebrowser, но сам sqlite оказался не важным )
                            0
                            Аналогичная проблема с FreeCAD, который полностью зависит от ядра OpenCASCADE.
                            «OpenCASCADE is the heart of the geometrical capabilities of FreeCAD», но OpenCASCADE в рейтинг решили не добавлять.
                            +2

                            Gnucash оказался одним из самых критичных продуктов? о_О

                              0
                              Джонни Кэш — это все (с)

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое