Infrastructure Team/Migrating to GitHub
Sugar Activities Developers: Take 10 Minutes to move to Github Today!
Part of the vision of Sugar Labs is to introduce young people to the software freedom movement. A successful introduction means they are actively participating in Sugar's development, and the wider libre software world. The majority of libre software in 2016 is developed on Github, and it advances our cause to use the same collaboration platform as most other project use.
The Sugar codebase has begun transitioning to Github in www.github.com/sugarlabs. So we now invite all Activity developers to do 2 things to complete this transition.
This should take you no more than 10 minutes:
1. Migrate your project source code and issue tracking to Github (https://help.github.com/articles/create-a-repo)
2. Once your project is set up as a Github Repo, please transfer it to github.com/sugarlabs so it is more discoverable (https://help.github.com/articles/transferring-a-repository/)
After the transfer, we'll update the activity.info file of the activity itself with the new URL We'll also invite your Github username to join the github.com/sugarlabs organization, so you can transfer activities to yourself.
No longer involved? To pass your Activity on to the community to maintain, drop a line to <email@example.com>. If you read this well after May 2016, we may have already forked your repo into the org to maintain an 'official' copy of it, but transferring is better than forking so that Github shows the sugarlabs repo as the 'upstream' repo on network graph pages (example)
New to Github? Check their excellent documentation at guides.github.com, help.github.com, try.github.io
All our code, bugs and discussions should be in one place.
In 2013 Sugar's core components moved from http://git.sugarlabs.org/sugar-old to https://github.com/sugarlabs/sugar, but all issue tracking stayed at bugs.sugarlabs.org instead of moving to https://github.com/sugarlabs/sugar/issues and some code stayed in git.sugarlabs.org and some moved to personal Github username areas.
- deters new contributors;
- makes existing contributor's lives more painful;
- wastes time from our systems team volunteers (as we have a hard time keeping hackers out of trac, and need to spend time upgrading any service we run ourselves)
Two solutions have been proposed:
- 1. Consolidate on Github
- Set trac and gitorious read only, and then making it a static html archive, while moving all issue tracking and git hosting of each sugar repo to Github.
- 2. Abandon Github
- Consolidate on our own systems; I guess this means setting up gogs or gitlab to replace gitorious, and perhaps something else to replace trac, and then removing each sugar repo from Github that we control, and regularly encouraging all sugar activities on github to move to our infrastructure.
The developer community has discussed this (thread) and reached consensus in favour of (1) with the following comments:
Benefits of Github Consolidation
- This is handled due to the way that Github org membership works. Github-users in a 'developers' Github-team within the Github-organization will be emailed all posts to all repos that are added to that team (done here, http://imgur.com/gUTNFfV)
- Github provides org-wide search, and this is discoverable when you visit github.com/sugarlabs the search input widget at the top changes to show that the search is scoped to that organization. After entering a search query, a familiar search syntax is used in the query, and in the URL string. Eg, https://github.com/search?q=org%3Afontforge+x11&type=Issues
- It will be easier for new developers to find and contribute if Sugar is all on github.
- Github allows us to separate issue into separate Sugar and Sugar Activity trackers, trackers are found predictably at github.com/sugarlabs/activity-name/issues
- It serves as an issue aggregation tool, as all issue trackers in the github.com can be searched by visiting github.com/sugarlabs and using the search input at the very top of the page (example)
- https://github.com/sugarlabs/sugar/issues/ can be used as a default issue tracker, if there is any ambiguity on where to file an issue
- Issues on Github can be linked to pull requests that resolve them (and even close them automatically by including "closes #issue_id" in the commit/pr message)
- Github automatically places backlinks in issues that are referred to by other issuer or PRs, it is relatively convenient to manage the set of a github organization's per-repo issue trackers. Github makes this easy because it will add backlinks in the destination issue's timeline when that issue is mentioned in the original; and it will automatically create such links if you type user/repo#issueNumber :) As an example of this back-linking, see these 2 links, https://github.com/llaske/sugarizer/issues/49 (link at end of first post) and https://github.com/mattlag/Glyphr-Studio/issues/234 (currently link is at the bottom :)
- SugarLabs should focus on core-competencies. Managing version control servers shouldn't be one of them. Support for "how to use git" would be mostly on github rather than SugarLab's systems
- Developer Preference
- Getting existing Github users to move their activities out of Github doesn't seem realistic. Developers know that Github is stable and has security and longevity. People new to Github have a wider interest in signing up for it - because almost all other libre software projects that they will interact with are currently on the service.
- There are only 182 open issues on bugs.sugarlabs.org so moving them over can be done in a day
- Github enables easier automation of the release process, and easier tying of Sugar Activity version numbers to moments in git commit histories.
- Fully Featured
- Github doesn't exclude users from features based on their ability to pay; all features are available to non-paying users. Instead of charging for features, they require non-paying users to have all their repos be public; the only thing that they charge for is how many users can participate in private repos. https://github.com/pricing/plans explains this, and there are no gotchas.
- Github does not require real names. To maintain pseudonymity, you can sign up using http://mailinator.com or a github-specific disposable email account.
Further Actions For The Sugar Labs Team
- Set up a "full notifications" team in the github organization so that all github users that join this team get emailed every issue, pr, and comment for every github project within the organization.
- Configure all non-github issue trackers to prominently direct users to the new github url, and disallow new issues, or simply to have their theme templates hide the 'new issue' link, and eventually to be configured read only and then fully archived by conversion to a static HTML site.
- Review the wiki and website advising users where to post an issue, and update to point to Github
- Write a py/js script that uses the Github API to check issue tags are consistent across all SL repos; this can start with a manual checklist to run through when accepting a repo transfer to the sugarlabs org. Also, ensure each activity's /README.md file (that Github presents on github.com/sugarlabs/activity-name as processed markdown) has explicit information about standard things, like where its issue tracker is.
- Once all activities are migrated to Github, set the Gitorious and Trac instances to be read-only.
List of Existing Repos To Transfer
On 2016-05-16 https://github.com/search?l=&q=%22from+sugar3.activity+import+activity%22+language%3APython&ref=advsearch&type=Code&utf8=%E2%9C%93 shows 327 code results, which when scraped and deduplicated lists 202 repos that are python sugar activities:
AbrahmAB/sugar-toolkit-gtk3-proto Boquete/activity-labyrinth Boquete/activity-sliderpuzzle City-busz/city-repository Daksh/CeibalRadio Daksh/poll FOSSRIT/Sash FundacionZamoraTeran/Genios FundacionZamoraTeran/Megamente Grumbel/clockgr Richardopy/cuadradomagico ShivamNegi/Reflections_Activity activitycentral/ebookreader aguzubiaga/chart ceibal-tatu/ceibal-notifica ceibal-tatu/fototoon-activity ceibal-tatu/sugar-toolkit-gtk3 cristhofert/presentation cristian99garcia/ClockActivity cristian99garcia/PolariActivity cristian99garcia/agubrowser-activity cristian99garcia/blender-activity cristian99garcia/calculator cristian99garcia/cedit-activity cristian99garcia/collabedit cristian99garcia/dasher-activity cristian99garcia/devtutor-activity cristian99garcia/guido-van-robot-activity cristian99garcia/laybrinth-activity cristian99garcia/mapa-ceibal-activity cristian99garcia/maps-activity cristian99garcia/micropolis-activity cristian99garcia/pilas-activity cristian99garcia/pocket-lrad-activity cristian99garcia/poll-activity cristian99garcia/pydebug-activity cristian99garcia/riverhex-activity cristian99garcia/showntell-activity cristian99garcia/sugarcity-activity cristian99garcia/teachteacher-activity cristian99garcia/turtleart cristian99garcia/tuxmath-activity crusher95/webconfusion curiousguy13/sugar-python3-tests cygwinports-extras/sugar-HelloWorld erik/translate-activity erilyth/Hello-World-Python_Sugar erilyth/Simon_Says-Sugar erilyth/Sugarizer-Clone-Sugarlabs- ers-devs/contact-app ezequielpereira/Constellationsflashcards ezequielpereira/Edit ezequielpereira/Gmail ezequielpereira/HacketyHack ezequielpereira/JClic ezequielpereira/Java ezequielpereira/Kiwix ezequielpereira/Lemonade ezequielpereira/MathGraph32 ezequielpereira/ShowJPEG ezequielpereira/Snow ezequielpereira/Sugarizador ezequielpereira/Sugarizehelp ezequielpereira/Time-Line ezequielpereira/VncLauncher ezequielpereira/XOlympics ezequielpereira/XaoS ezequielpereira/cavestory fdanesse/DesafioMundial fdanesse/Historico fdanesse/JAMediaPyGiHack fdanesse/TamTamMini georgejhunt/HaitiDictionary.activity godiard/classroomexplore godiard/clock-activity godiard/comunicator-maker-activity godiard/develop-activity godiard/distance-activity godiard/domino-activity godiard/favorite-fonts-activity godiard/finance-activity godiard/fototoon-activity godiard/get-books-activity godiard/help-activity godiard/imageviewer-activity godiard/ingenium-activity godiard/irc-activity godiard/journalshare-activity godiard/jukebox-activity godiard/level-activity godiard/log-activity godiard/maze-activity godiard/memorize-activity godiard/music-keyboard-activity godiard/paint-activity godiard/poll-activity godiard/read-activity godiard/tamtam godiard/terminal-activity godiard/words-activity godiard/write-activity godiard/write-books-activity gusDuarte/sugar-toolkit-gtk3 i5o/followme i5o/getbooks i5o/install-extensions i5o/irc-activity i5o/letters i5o/log i5o/manage-homeviews i5o/numbers i5o/qr-reader i5o/record-gtk3 i5o/spirolaterals i5o/sugar-irc-client i5o/triples i5o/whatis i5o/xo-icon i5o/xo-retroscope iamutkarshtiwari/Browse-fiddleFeature inkyfingers/SoaS_Loader jdsimmons/getiabooks jdsimmons/myosa-examples jdsimmons/readetexts jdsimmons/sugar-commander jdsimmons/viewslides kperisetla/Oopsy lesivan/Genios llaske/Canope.activity llaske/KAView.activity llaske/VideoViewer.activity llaske/sugarizer manuq/get-books manuq/hello-world manuq/instalador-harvest-ceibal manuq/sugar-toolkit-gtk3 native93/Sugar-paint-activity ndefilippis/level-tool prasoon2211/sugar-social-help puneetgkaur/backup_sugar_sugartoolkit puneetgkaur/pygame_camera quozl/settime-activity richaseh/browse samdroid-apps/bibliography-activity samdroid-apps/browse samdroid-apps/sour-textbook samdroid-apps/web-maker-activity sdanielf/comunicate sehgalvibhor/WebConfusion sethwoodworth/tamtam shlesha/My-Activities shridharmishra4/mainline shridharmishra4/tamtam sugarlabs/browse-activity sugarlabs/sugar-toolkit-gtk3 svineet/Solari svineet/manage-homeviews tchx84/ClockActivity tchx84/comunicator-maker-activity tchx84/debian-pkg-sugar-toolkit-gtk3 tchx84/get-books-activity tchx84/memorize-activity tchx84/sugar-finance-activity tchx84/sugar-toolkit-gtk3-1 walterbender/AEIOU walterbender/Pippy walterbender/abacus walterbender/cardsort walterbender/chat walterbender/clipart walterbender/colordeducto walterbender/convert walterbender/cookiesearch walterbender/dimensions walterbender/flip walterbender/fractionbounce walterbender/iknowmyabcs walterbender/infoslicer walterbender/lettermatch walterbender/letters walterbender/locosugar walterbender/makeymakey walterbender/napier walterbender/nutrition walterbender/paths walterbender/physics walterbender/portfolio walterbender/primedimensions walterbender/recall walterbender/reflect walterbender/reflection walterbender/ruler walterbender/slideruler walterbender/story walterbender/storydos walterbender/sugarchess walterbender/training walterbender/turtlepond walterbender/wordcloud walterbender/worddimensions walterbender/xocolors walterbender/yupana