Участие в разработке
EMD Cloud SDK — это open-source проекты под лицензией MIT. Мы приветствуем вклад сообщества в развитие наших инструментов!
Лицензия MIT
Все SDK EMD Cloud распространяются под лицензией MIT. Это означает, что вы можете:
✅ Использовать код в коммерческих и некоммерческих проектах
✅ Изменять и адаптировать под свои нужды
✅ Распространять и делиться с другими
✅ Вносить улучшения и создавать Pull Request
✅ Создавать производные работы
Единственное требование — сохранять уведомление об авторских правах и лицензии в копиях программного обеспечения.
Наши репозитории
JavaScript SDK
GitHub: EMD-Cloud/sdk
NPM: @emd-cloud/sdk
Основная библиотека для работы с EMD Cloud API.
React Components
GitHub: EMD-Cloud/react-components
NPM: @emd-cloud/react-components
Готовые React компоненты и хуки.
Create App
GitHub: EMD-Cloud/create-app
NPM: @emd-cloud/create-app
Инструмент для создания проектов с EMD Cloud.
Как внести вклад
1. Сообщить о проблеме
Нашли баг или у вас есть предложение? Создайте issue на GitHub:
- Перейдите в соответствующий репозиторий
- Нажмите "Issues" → "New Issue"
- Опишите проблему или предложение
- Добавьте примеры кода, если возможно
- Укажите версию SDK и окружение
Хороший issue содержит:
- Четкое описание проблемы
- Шаги для воспроизведения
- Ожидаемое и фактическое поведение
- Версию SDK и окружение (браузер/Node.js)
- Примеры кода
2. Предложить улучшение
Есть идея новой функции? Создайте Feature Request:
- Откройте issue с меткой "enhancement"
- Опишите, что вы хотите добавить
- Объясните, зачем это нужно
- Предложите возможную реализацию
3. Создать Pull Request
Хотите внести изменения в код? Следуйте этим шагам:
Шаг 1: Fork репозитория
# Клонируйте ваш fork
git clone https://github.com/YOUR_USERNAME/sdk.git
cd sdk
# Добавьте upstream remote
git remote add upstream https://github.com/EMD-Cloud/sdk.git
Шаг 2: Создайте ветку
# Обновите main ветку
git checkout main
git pull upstream main
# Создайте новую ветку для изменений
git checkout -b feature/my-new-feature
# или
git checkout -b fix/bug-description
Шаг 3: Внесите изменения
# Внесите изменения в код
# Добавьте тесты для новой функциональности
# Обновите документацию, если необходимо
# Проверьте код
npm run lint
npm run test
# Закоммитьте изменения
git add .
git commit -m "feat: добавлена новая функция"
# или
git commit -m "fix: исправлен баг с авторизацией"
Шаг 4: Отправьте изменения
# Отправьте ветку в ваш fork
git push origin feature/my-new-feature
Шаг 5: Создайте Pull Request
- Перейдите на GitHub в ваш fork
- Нажмите "Compare & pull request"
- Заполните описание PR:
- Что изменено
- Зачем это нужно
- Как протестировано
- Отправьте PR на review
Правила для Pull Request
✅ Делайте:
- Один PR = одна функция/исправление
- Пишите понятные commit сообщения
- Добавляйте тесты для нового кода
- Обновляйте документацию
- Следуйте code style проекта
- Проверяйте, что все тесты проходят
❌ Не делайте:
- Смешивайте несколько изменений в одном PR
- Изменяйте код style без необходимости
- Добавляйте ненужные зависимости
- Коммитьте закомментированный код
- Оставляйте console.log в production коде
Coding Standards
JavaScript/TypeScript
// ✅ Хорошо: используйте const/let
const userName = 'John';
let counter = 0;
// ❌ Плохо: не используйте var
var userName = 'John';
// ✅ Хорошо: async/await
async function fetchData() {
const result = await api.getData();
return result;
}
// ❌ Плохо: callback hell
function fetchData(callback) {
api.getData(function(result) {
callback(result);
});
}
// ✅ Хорошо: деструктуризация
const { name, email } = user;
// ✅ Хорошо: стрелочные функции
const double = (x) => x * 2;
// ✅ Хорошо: template literals
const message = `Hello, ${userName}!`;
Именование
// ✅ Хорошо: camelCase для переменных и функций
const userName = 'John';
function getUserData() {}
// ✅ Хорошо: PascalCase для классов и компонентов
class UserManager {}
function UserProfile() {}
// ✅ Хорошо: UPPER_CASE для констант
const MAX_RETRY_COUNT = 3;
const API_BASE_URL = 'https://api.emd.one';
// ✅ Хорошо: описательные имена
const isUserAuthenticated = true;
const hasPermission = false;
// ❌ Плохо: однобуквенные имена (кроме циклов)
const u = getUser();
const d = new Date();
Комментарии
// ✅ Хорошо: JSDoc для публичных API
/**
* Авторизует пользователя по логину и паролю
* @param {string} login - Email пользователя
* @param {string} password - Пароль
* @returns {Promise<User>} Данные пользователя
*/
async function login(login, password) {
// ...
}
// ✅ Хорошо: комментарии для сложной логики
// Проверяем, не истек ли токен (добавляем 5 минут запаса)
if (tokenExpiry < Date.now() + 5 * 60 * 1000) {
await refreshToken();
}
// ❌ Плохо: очевидные комментарии
// Увеличиваем счетчик на 1
counter++;
Процесс review
После создания PR:
- Автоматические проверки — CI/CD запустит тесты и линтеры
- Code review — мейнтейнеры проверят код
- Обсуждение — возможны вопросы и предложения по улучшению
- Изменения — внесите правки, если требуется
- Merge — после одобрения PR будет смержен
Разработка локально
Установка зависимостей
# Клонируйте репозиторий
git clone https://github.com/EMD-Cloud/sdk.git
cd sdk
# Установите зависимости
npm install
Запуск тестов
# Запустить все тесты
npm test
# Запустить тесты в watch режиме
npm run test:watch
# Проверить покрытие кода
npm run test:coverage
Линтинг
# Проверить код
npm run lint
# Автоматически исправить ошибки
npm run lint:fix
Сборка
# Собрать проект
npm run build
# Собрать в watch режиме
npm run build:watch
Сообщество
Telegram
Присоединяйтесь к нашему Telegram сообществу для:
- Обсуждения идей
- Помощи другим разработчикам
- Новостей о релизах
- Общения с командой
GitHub Discussions
Используйте GitHub Discussions для:
- Вопросов по использованию
- Обсуждения архитектуры
- Предложений улучшений
- Обмена опытом
Благодарности
Спасибо всем, кто вносит вклад в развитие EMD Cloud SDK! 🎉
Список контрибьюторов:
Вопросы?
Если у вас есть вопросы о процессе участия:
- Прочитайте документацию
- Посмотрите существующие issues
- Спросите в Telegram
- Создайте discussion
Следующие шаги
- 📚 Вернитесь к обзору SDK
- 💡 Изучите примеры
- 🚀 Создайте проект с Create App
Спасибо за интерес к EMD Cloud! Мы ценим каждый вклад в развитие проекта. ❤️