Данный материал подготовлен в связи с тем, что существует решение о переходе федеральных органов исполнительной власти и федеральных бюджетных учреждений на использование СПО в 2011-2015 гг. и многим начинающим ИТ-компаниям нашего региона потребуется использовать в своей деятельности свободное программное обеспечение. Эта часть материала посвещена СПО, предназначенное для компанийразработчиков программного обеспечения Терминология Когда мы говорим про доступное ПО, важно понимать разницу между открытостью и свободным распространением. Поэтому введем терминологию: Свободно-распространяемое ПО (freeware) - это программы, которые можно легально получить и пользоваться ими. Обычно они распространяются по открытым каналам: их можно скачать в Интернете, через пиринговые сети, через сети распространения контента (магазины приложений и т.д.). Многие разработчики совмещают эту схему с различными сторонними необязательными способами монетизации: donation-based (пожертвования), pay-as-you-want (заплати, сколько хочет) и т.д. Открытое ПО (open-source) - это ПО, свободные коды которого доступны и предполагают определенную свободу при работе с этими кодами (степень свободы определяется лицензией). Некоторые лицензии являются довольно строгими, например, лицензия GNU (используется в Linux), которая разрешает использование кода в ПО, также распространяемым по лицензии GNU. Другие же лицензии являются менее требовательными: наиболее популярной и простой сейчас является MIT. Хороший сервис, который помогает быстро выбрать нужную лицензию: http://choosealicense.com Приводимое далее ПО считаем свободным, если это специально не оговорено. Операционная система и окружение Это объемная тема и требует отдельного обсуждения. Однако, здесь необходимо сделать следующее замечание: ниже специально будут описываться ПО, которое является кросс-платформенным, а значит оно может запускаться на свободно распространяемых дистрибутивах. Когда же речь идет об облачных веб-сервисах, мы помним, что для доступа к ним необходим лишь браузер, а в данный момент на рынке достаточно решений, которые являются частично открытыми и свободными. Среда разработки 1. Eclipse Веб-сайт: http://www.eclipse.org/ Лицензия: Eclipse Public License Многоязыковая среда разработки, изначальным языком которой был Java. В данный момент момент есть расширения для многих популярных языков(C, C++, COBOL, Fortran, Haskell, JavaScript, Lasso, Perl, PHP, Python, R, Ruby и других). Особенности: Поддержка отладки для многих языков Встроенная система управления версиями Встроены средства статического анализа кода Инструменты документации, структуризации проектов, средства рефакторинга, тестирования Гибкая система расширений (можно создавать свои собственные среды, в том числе для DSL сред). Пример: компания Ambric, которая выпускает энергоэффективные встраиваемые ускорители (аналог CUDA, но для встраеваемых систем) в качестве среды разработки для их DSL-языков выпускает специальную версию Eclipse. 2.Code::Blocks Веб-сайт: http://www.codeblocks.org/ Лицензия: GNU GPL Среда разработки для языков C/C++ с поддержкой библиотеки wxWidgets (аналог Qt). Возможности почти такие же, как и в Eclipse. 3. Qt Creator Веб-сайт: http://qt.digia.com/ Лицензия: GNU GPL Среда разработки для языков C/C++, в которой присутствует очень гибкая поддержка фреймворка Qt. Особенности: Средства визуального программирования (создание форм и т.д.) Автоматическая интеграция с мобильными устройствами Средства интернационализации, документации, тестирования 4. Cloud9 IDE Веб-сайт: http://c9.io/ Тип: бесплатный веб-сервис с наличием платных подписок Первая облачная среда разработки. Ориентирована в основном на динамические языки для веб-разработки, но есть возможность работы с компилируемыми языками (С++, Java, Scala, Haskell). Особенности: Работает полностью в браузере. При этом клиенту выделяется виртуальная машина с терминалом и текстовым редактором. Есть средства взаимодействия: можно вместе писать код и общаться в чате. Есть поддержка запуска в production. Т.е. проект можно в любой момент отправить на исполнение в облачный хостинг. Для некоторых языков есть поддержка отладки ( JavaScript ) Автоматическая интеграция с сервисами хостинга кода (например, github, bitbucket) 5. Netbeans IDE https://netbeans.org/ 6. SharpDevelop http://www.icsharpcode.net/opensource/sd/#Develop 7. KDevelop http://www.kdevelop.org/ 8. IntelliJIDEA IDE Community Edition http://www.jetbrains.com/ 9. Microsoft Visual Studio Express http://www.microsoft.com/visualstudio/rus/products/visual-studio-express-products Системы управления версиями Наиболее распространенными системами хранения кода сейчас являются git и mercurial. Оба эти средства являются свободными и открытыми. Здесь лучше выделить именно сервисы для хостинга кода. 1. Github Веб-сайт: http:/github.com Тип: бесплатный веб-сервис с наличием платных подписок Это наиболее популярный облачный сервис для хранения кода, в котором присутствуют возможности социальной сети. Большая часть open-source проектов сейчас расположены именно на этом хостинге. Возможности: Встроено средство управления рабочим процессом (возможность создавать задачи, назначать людей на выполнение, делать релизы). Встроена вики-система для документации Удобный просмотр файлов проекта прямо в браузере без необходимости использования git-клиента Гибкая аналитика 2. Bitbucket Веб-сайт: http://bitbucket.org Тип: бесплатный веб-сервис с наличием платных подписок Конкурент github, разработанный компанией Atlassian. Функционал полностью повторяет github, с тем лишь исключением, что поддерживается система управления версиями Mercurial. 3. Gitlab Веб-сайт: http://gitlab.org ПО для развертывания системы хостинга кода наподобие github, но для внутреннего пользования (например, для организации). Платным аналогом является продукт Fisheye от Atlassian. 4. SVN http://www.collab.net/ 5. GIT http://git-scm.com/ 6. Mercurial http://mercurial.selenic.com/ Непрерывная интеграция 1. Travis CI Веб-сайт: https://travis-ci.org/ Тип: бесплатный веб-сервис для open-source продуктов Облачный сервис непрерывной интеграции, основной игрок на рынке open-source проектов. Особенности: Прохождение тестов для разных платформ, языков, фреймворков. Консоль с отчетом о прохождении тестов в реальном времени. Интеграция с сервисами облачного хостинга. Например: если проект проходит все тесты, он сразу идет в production. Аналитика 2. Jenkins Веб-сайт: http://jenkins-ci.org/ Лицензия: MIT Сервер непрерывной интеграции, изначально специализировавшийся на Java проектах. Особенности: Поддержка огромного количества языков и систем сборки. Возможность локального развертывания (внутри организации для частных проектов). Относительно сложен в настройке Экспериментальный раздел В текущем разделе помещены сервисы, которые сложно отнести к остальным категориям, которые представляют собой совершенно новый взгляд на разработку ПО. 1. Системы автоматического анализа качества кода и проектов Сервис https://codeclimate.com/ - это сервис контроля качества (можно рассматривать как один из этапов непрерывной интеграции) для языков Ruby и JavaScript. К сожалению он платный, но он позволяет: Оценивать качество кода на основе стандартов кодирования Оценивать, как изменялось качество в процессе работы над проектом (пример: работник Боб вчера сделал коммит, который ухудшил качество кода на 0.1% -> Боба лишить премии). 2. Сервисы оценки покрытия кода тестами В то время, как средства непрерывной интеграции определяют лишь сам факт прохождения/непрохождения кодом тестов, анализ того, насколько хорошо код покрыти ими, сейчас практически никто не делает. Сервис https://coveralls.io/ предоставляет возможность оценки покрытия для проектов на языках Ruby и JavaScript. Опять же можно рассматривать эту ступень как часть непрерывной интеграции. Системы bugtracking: Bugzilla http://www.bugzilla.org/ Atlassian Jira Starter Kit https://www.atlassian.com/ Mantis http://www.mantisbt.org/ Средства для совместной работы Сервисы GOOGLE http://www.gogle.com www.realtimeboard.com Системы поддержания коммуникаций Skype http://www.skype.com/ru/ бесплатное проприетарное программное обеспечение с закрытым кодом, обеспечивающее текстовую, голосовую связь и видеосвязь через Интернет между компьютерами (IP-телефония), опционально используя технологиипиринговых сетей, а также платные услуги для звонков на мобильные и стационарные телефоны. WebRTC — http://www.webrtc.org/ проект с открытым исходным предназначенный для организации передачи потоковых данных кодом, между браузерами или другими поддерживающими его приложениями по технологии точка-точка. Система подготовки презентаций http://prezi.com/ Офисный пакет: - LibreOffice ru.libreoffice.org/ - OpenOffice www.openoffice.org/ru/ Свободное ПО для работы с графикой Gimp http://www.gimp.org/ (редактор для работы с растровой графикой) InkScape http://inkscape.org/?lang=ru (редактор для работы с векторной графикой) FreeCad http://www.freecadweb.org/ (система 3D моделирвоания) Blender http://www.blender.org/ (работа с 3D графикой и анимацией) Web-серверы Apache http://httpd.apache.org/ LiteWebServer http://www.gefionsoftware.com/LiteWebServer MyServer http://www.myserverproject.net/ CMS-системы Drupal http://drupal.org/ Joomla! http://joomla.ru/ WordPress http://ru.wordpress.org/