Здравейте,
Идеята ми за проект е следната - платформа, чрез която да се стимулира по-бързото и ефективно code review на Pull Request-и в GitHub.
Ще изредя някои от ключовите неща, които стремя да постигна:
- Daily reporter for Pull Requests (configurable, може и да не е всеки ден)
- Identify stale Pull Requests (among a set of repositories)
- Enforce Pull Request Label Convention - ще ми трябва, за да мога да анализирам Pull Request-ите коректно (improves Open Source quality)
- Notification System (regarding stale pull requests, when a pull request is reviewed and ready to be merged)
- User Reputation System (Peer pressure driven system :D); Achievements?
- Dashboard UI for each Reviewer installation - Wall of Shame, Merge button, Reference issue, Categorial views (Stale, Frozen, WIP, All)
Като цяло си го представям като един Go Application, който ще играе ролята на сървър + допълнителен dashboard application. (не съм сигурен дали ще успея с dashboard-а).
Сървърът периодично (примерно веднъж на час) ще вика GitHub api-тата, за да дърпа информацията и да я запазва в своя база. От своя страна сървъра ще предоставя API-та, които Dashboard application-а да вика. Нуждата от база и това, което може на пръв поглед да изглежда като double mainatanance на данните (въднъж в GitHub server-ите, и после в моя), се поражда поради следните причини:
- GitHub има rate limit на броя заявки за определен период; това ще се окаже пречка, ако Dashboard-а винаги вика моя сървър, който пък всеки път трябва да прави заявки към GitHub
- GitHub API-то предоставя много повече информация от нужната за мен
Идеята за проекта ми се породи от личен опит, когато един екип работи върху множество GitHub repository-та и се случва периодично някои pull request-и, които са готови за review, да не биват разгледани, поради различни причини - натовареност на екип, нужда за пояснение преди да почне review на нещо или някакви други причини. Абе, хората просто забравят от време на време :D. Затова бих искал да направя нещо подобно, което да е постояннен reminder за екипа, че има нещо, което чака за review.
Основните ползи от реализацията на такава платформа намирам в:
- По-бързо придвижване на pull request-и;
- Спазване на добри практики откъм Open Source гледна точка, като се label-ват Pull Request-и по единен и смислен начин;
- Целия екип постоянно бива информиран за статуса на продукта, чрез ежедневни reminder-и до къде е работата - може всяка сутрин екипите да си отварят този Dashboard, примерно на Daily Standup Meeting-а, и да обсъждат какво трябва да се придвжижи, вместо да се ходи по всяко repository едно по едно.
Основните пречки и предизвикателства, които виждам в реализацията на платформата е:
- Messaging механизми - бих искал да се пращат мейли, slack известия или някакви подобни неща. Не съм имал много опит с програмирането на подобно нещо.
- ORM или plain-vanilla
database/sql
с евентуалноsqlx
надграждане - още не съм сигурен кое би било по-подходящо - Dashboard-а - не съм много, много на ти с front-end-а
- 100% ще има и други неща, които просто в момента не съм се сетил
Някои ресурси и билиотеки, които мисля да използвам:
- GitHub API V3: https://developer.github.com/v3/pulls/
- Go-GitHub: https://github.com/google/go-github
- Slack API: https://github.com/nlopes/slack
- Viper: https://github.com/spf13/viper
Ще се радвам да получва обратна връзка и особено, ако имате съвети за някои от основните проблеми, които виждам. :)