Code Mining
916 subscribers
82 photos
4 videos
8 files
162 links
ML4Code во всей красе, анализ кода и артефактов: лицензии, уязвимости, процессы. Комментарии к актуальным и не очень новостям, аналитика, эпизодический авторский контент, мемасики.

При поддержке: ods.ai, @codescoring
По вопросам — @alsmirn
Download Telegram
Criticality Score

Одна из фундаментальных проблем проектов с открытым исходным кодом — трагедия общих ресурсов (tragedy of the commons). Пользуются OSS решениями всё больше и больше, но поддержкой многих проектов по-прежнему занимается довольно узкая группа людей, чей ресурс рискует однажды кончиться, что по цепочке может привести к проблемам в зависимом комерческом коде.

К счастью, многие пытаются эту проблему решить. И один из интересных ходов в эту сторону сделал в прошлом году Гугл, выпустив проект Criticality Score — алгоритм оценки open source проектов по их критичности для всей экосистемы. Логика в том, что такой рейтинг на основе такого параметра поможет выявить важные проекты, которым не хватает внимания спонсоров и контрибьюторов.

Алгоритм разработал небезызвестный Роб Пайк, один из создателей таких штук как UTF-8, Unix и языка программирования Go, над которым он и продолжает работать в Google.

На вход алгоритм принимает репозиторий с кодом, ранжирует его по набору параметров, комбинирует всё, подставляя в формулу (и это не просто взвешенная сумма) и выдаёт значение от 0 (наименее важный проект) до 1 (самый критически важный проект). Среди параметров в оценке:
- даты создания и последнего обновления
- число контрибьюторов и разных организаций, к которым они относятся
- частоты коммитов и релизов
- число зависимых проектов

Дополнительно реализованы скрипты, которые анализируют github и выдают топы по каждому языку и общий.

Так первую десятку открывают такие проекты как Node.js, Kubernetes (K8s) и язык программирования Rust, а замыкает её Git, обогнав Linux на 10 позиций.

Реализация алгоритма на python: https://github.com/ossf/criticality_score
Статья Роба Пайка про алгоритм: https://github.com/ossf/criticality_score/blob/main/Quantifying_criticality_algorithm.pdf
Списки критически важных проектов по языкам: https://commondatastorage.googleapis.com/ossf-criticality-score/index.html
Лицензирование Питон-приложений

В ближайший вторник (28 сентября в 11:25), @alsmirn выступит на очередном Moscow Python Conf++ и расскажет про сабж.

Тизер выступления можно поглядеть в записях Moscow Python Podcast, где проблематика также обсуждаласьс в уютной атмосфере кухни Григория Петрова ;).

Тезисы.
- Рассмотрим общую картину применения Open Source-лицензий в PyPI: общие практики, нисходящие и восходящие тренды выбора новой лицензии, а также случаи её смены.

- Ответим на частные вопросы о том, какие лицензии наиболее часто применяются для проектов в разных областях и почему: от веб-приложений и фреймворков до библиотек и утилит в областях машинного обучения (ML) и обработки естественного языка (NLP).

- C применением CodeScoring изучим, какие сюрпризы несовместимости лицензий можно поймать, если относиться к задаче лицензирования собственного кода халатно. И в конце концов, поймем, как всего этого избежать и корректно настроить CI/CD в части отслеживания лицензионной чистоты.

ЗЫ: говорят, что будет трансляция.
Благодарности псто

TL;DR: Всем спасибо!

Немного осмыслились после Moscow Python Conf++ и хочется выразить благодарность его организаторам и вдохновителям из сообщества Moscow Python.

Спасибо Вале Домбровскому и Коле Маркову за приглашение! Конференция душевная, много полезного общения и замечательных ребят, а с ними идей и планов на будущие движухи.

Спасибо Пете Ермакову и Наташе Хапаевой, коллегам по ods.ai за интересный круглый стол, на котором мы обсудили взаимодействие Data Science/Python сообществ.

Спасибо Михаилу Корнееву, Михаилу Кольцову и Сергею Буткину за ревью кода участников конференции. Получилось живо и хорошо. Наша команда подогнала анализатор, ребята сделали суперский разбор. В очередной раз показана наглядная польза измерения цикломатической сложности в проектах во избежание преждевременных рефакторингов.

Спасибо участникам конференции афтепати первого дня конференции за ценнейшие вопросы про лицензирование open source, что заставило нас в ночи дополнить доклад и найти лицензионные нарушения в библиотеке requests ;).

Ура!
А тем временем, нас стало овер 100 подписчиков и мы открываем комментарии, как и обещали. Тем не менее, рассказать про наш уютный канальчик коллегам всё-равно стоит ;).
Text2Bash

Продолжая традицию #видоснавыходные, предлагаем видео с прошедшего в этом году трека CodeMining, про автогенерацию кода на bash по запросам на естественном языке. В докладе Глеб Моргачев из JetBrains делится сокровенным опытом и рассказывает, на что же способны роботы сегодня ;).

Тезисы:
В рамках конференции NeurIPS 2020 проходило соревнование по генерации bash команд по запросам на естественном языке. Я расскажу об опыте участия нашей команды в этом соревновании, используемых метриках и способах получения обучающей выборки. Также дам краткий обзор подходов, показавших лучшие результаты.

Видео:
https://www.youtube.com/watch?v=NPfYDDbprtw

Лайки, репосты, все дела.
Hacktoberfest 2021

В пятницу, 1 октября, стартовал уже восьмой Hacktoberfest. Это ежегодное событие, которое длится в течение всего октября, призвано привлечь больше внимания и, конечно, больше контрибьюторов в open source проекты.

За 4 валидных принятых пулл реквеста в течение октября организаторы раздадут 50 000 футболок с символикой или на выбор участника могут посадить дерево.

В мероприятии участвуют проекты, которые хостятся на GitHub или GitLab и имеют топик “hacktoberfest”. Со спамом и мусорными пулл реквестами будут бороться, жуликов исключать.

Вся движуха организована компанией DigitalOcean и поддерживается многими другими крутыми ребятами.

Если вы не очень с кодом, то можете поддержать выбранные проекты донатом через GitHub Sponsors.

Подробная информация и правила на сайте проекта: https://hacktoberfest.digitalocean.com/
Труъ. Боль для тех, кто анализирует JS сорцы 😭
ODS Licensing Course - перенос на 21 октября!

По следам Moscow Python Conf мы получили много-много обратной связи по лицензионной боли разработчиков и юристов. Считаем, что всё это должно быть раскрыто в курсе, в связи с этим, берем дополнительное время на подготовку.

Если у вас есть вопросы про лицензирование Open Source, пишите в комментариях, будем рады их также включить в наш свободный курс 😊.

А пока, следите за новостями, мы их тут много приготовили.
Code Mining pinned a photo
Что такое Software Bill of Materials (SBOM)

Продолжаем рубрику #словарькодмайнера.

Мы, конечно, живём в своём пузыре, но внутри него немного нелепая аббревиатура SBOM за последний год стала всплывать в разы чаще, чем раньше. Даже Байден про неё говорил, и теперь все IT проекты для госорганов США должны содержать этот самый SBOM, это уже не шутки.

Software Bill of Materials — это список всех open source и других сторонних компонент, использующихся в кодовой базе программного продукта. По каждой компоненте SBOM минимально содержит информацию о названии, версии и лицензии. Некоторые форматы обязательным указывают ещё и тип компонента (например, «фреймворк» или «библиотека»).

Дополнительно SBOM может содержать информацию по уязвимостям, подлинности, дочерним зависимостям и кучу других контекстных данных.

Составлять и поддерживать SBOM в теории полезно всем проектам. На практике за полным списком зависимостей с учётом транзитивных мало кто следит, не говоря уже об их качестве, перспективах и жизнеспособности. Ещё меньше компаний и программистов обращают внимание на лицензии и их совместимость. К уязвимостям внимания чуть больше, как и инструментов для их обнаружения, например, в том же GitHub или пакетных менеджерах.

Самые известных форматы SBOM это:
- CycloneDX https://cyclonedx.org/
- SPDX https://spdx.dev/
- SWID https://csrc.nist.gov/projects/Software-Identification-SWID
- табличка в Excel 🤭

Иногда SBOM пишут BOM, BoM, SBoM, и вообще как только не угорают. Вообще BOM пришёл из производства, где представляет собой опись всех деталей, из которых состоит продукт.

Для генерации SBOM используется два основных источника информации:
1. манифесты и lock-файлы пакетных менеджеров
2. непосредственный поиск скопированных файлов или частей кода в кодовой базе

Про то, какими инструментами генерировать SBOM и как потом использовать, мы расскажем отдельно.

Подробнее про SBOM советуем читать на сайте National Telecommunications and Information Administration:
https://www.ntia.gov/SBOM
Аналитика полного цикла разработки в почти реальном времени

Видео:
https://www.youtube.com/watch?v=BiLew55dxho

Продолжая традицию #видоснавыходные, в этот раз поговорим об анализе так называемых код-артефактов в применении к анализу жизненного цикла разработки (SDLC, Software Development Lifecycle).

Докладчик Вадим Марковцев, очень так некисло причастный к целой грядке крутейших инструментов выпущенных в open source компаниями source{d} и Athenian. Про них мы ещё обязательно напишем.

Тезисы от автора:
Я работаю в международном стартапе Athenian в качесте Head of Analytics и управляю командой бэкенда SaaS продукта. Мы продаем зарубежным компаниям облачное веб-приложение которое указывает на узкие места процессов разработки, непрерывной интеграции, деплоев, и JIRA. При этом стараемся придерживаться принципов blameless и non-personal, иначе говоря, делаем все возможное чтобы лиды-пользователи не стали сравнивать пиписьки рядовых разработчиков.

Одна из ключевых фишек Athenian - мы непрерывно анализируем поток событий GitHub и JIRA и обновляем все метрики и предсказания на лету. Это оказалось сложно, и я расскажу почему именно, какие ошибки мы допустили, как их исправляли и добились результата, и чего нам это стоило в $$$.


Лайки, репосты, все дела 😏.
Semgrep. Легковесный статический анализатор

Если вам нужно что-нибудь находить в исходниках, для исследований или в рамках CI/CD-процессов, то может приглянуться Semgrep.

Удобное написание правил, гибкие интеграции, хорошая документация и конечно же свободное программное обеспечение (репа, LGPL-2.1).

Есть публичный реестр правил, где можно посмотреть-поучиться и погонять в интерактиве. Внутри примеры на проверки инъекций, xss, xxe, плохого журналирования и т. п. согласно OWASP-классификации.

Поддерживает почти 20 языков.

Хороших грепов мало не бывает.
Code2Code @AI Journey Contest 2021

В рамках AIJ с 7 по 31 октября проводится Fusion Brain Challenge.

Участникам предлагается решить 4 задачи в борьбе за призовые в ₽6.5 млн (первое место - до ₽3 млн).

Чем это интересно нам? А тем, что первой задачей стоит Code2code Translation, где предлагается попереводить Java<->Python.

Участникам предлагается датасет для обучения, в котором содержится 6к решенных задач на каждом из языков, на каждом языке от 1 до 5 вариантов решения.

Подробные описания данных, где брать и что курить на странице челленджа.

Описание и сорцы также доступны на на Github. Лицензия проекту не выставлена 😱, но по части C2C сорцы под Apache 2.0 & MIT.

За наводку на соревы спасибо: @lovedeathtransformers.
Code Mining Overview

О чем же ML4Code? Какие задачи, какие особенности?

Продолжая рубрику #видоснавыходные, сегодня у нас Глеб Моргачев, Researcher из уважаемой компании JetBrains рассказывает про основные направления применения машинного обучения к исходному коду и процессу разработки.

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

Видео (CodeMining Track'20):
https://www.youtube.com/watch?v=IH3_xSq3ic4

Лайки, репосты, все дела 😏.
Реанонс Курса по лицензированию Open Source

Всем привет! Курс про лицензии свободного программного обеспечения уже совсем-совсем рядом.

Дата: 21.10.21 (четверг).
Время: 19:00, вечером.

Напомним, что курс планируется из трех еженедельных встреч, по 1,5-2 часа.

В ближайшую встречу, 21 октября, Алексей Смирнов, расскажет про особенности лицензирования СПО:
- почему умение разбираться в лицензиях относится к безопасной разработке;
- какие бывают виды лицензий и что же они ограничивают;
- как воспринимать (читать) отдельные пункты лицензионных соглашений;
- про транзитивные зависимости и вероятные проблемы;
- патентные особенности лицензий;
- какую лицензию выбрать для своего DS/ML проекта?
- как обеспечить лицензионную совместимость зависимостей: если вы выбрали лицензию X, почему нельзя выбирать компоненты с лицензией Y?

Максимально с примерами и живым обсуждением.

Встреча пройдет в SpacialChat ODS: live.ods.ai. Креды - ближе к событию.

Если есть вопросы, их можно задать в комментариях ;).
Страничка курса про лицензирование, реакшены приветствуются ;). Ну и до встречи в четверг.
Code Mining
Реанонс Курса по лицензированию Open Source Всем привет! Курс про лицензии свободного программного обеспечения уже совсем-совсем рядом. Дата: 21.10.21 (четверг). Время: 19:00, вечером. Напомним, что курс планируется из трех еженедельных встреч, по 1,5…
Курс про лицензирование ПО уже совсем близко!

Напоминаем, что сегодня (21.10.21) в 19:00 состоится первая часть курса про лицензирование свободного программного обеспечения.

Встречаемся в Spatial Chat, пароль: odscoursefest1
Code Mining pinned «Курс про лицензирование ПО уже совсем близко! Напоминаем, что сегодня (21.10.21) в 19:00 состоится первая часть курса про лицензирование свободного программного обеспечения. Встречаемся в Spatial Chat, пароль: odscoursefest1»
И мы планируем начинать через 10 минут.

Ещё раз креды: Spatial Chat, пароль: odscoursefest1
Code Mining
И мы планируем начинать через 10 минут. Ещё раз креды: Spatial Chat, пароль: odscoursefest1
Всем спасибо за участие! Для начала вышло неплохо, будем продолжать!

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