Brickimedia / brickimedia

Brickimedia Source Code
http://www.brickimedia.org
13 stars 4 forks source link

Issues and source code hosting: Wikimedia vs GitHub #454

Closed neoncitylights closed 8 years ago

neoncitylights commented 8 years ago

This discussion originally started from my comment at #449, which then transitioned into Brickipedia's wiki chat, but now has it's own ticket here! Below, I'll be covering the advantages and disadvantages in the next comment (from my point of view because the point of this discussion is to get an opinion from every developer and eventually reach a consensus of whether we should move or stay, based on if it's better for us in the long run) They'll probably mostly be UX points but definitely feel free to point the technical points to all of us as those are also just as important.

In the mean time while I try to write out my opinion feel free to comment on this :+1:

Note: Github merges both tickets and source code together, while wikimedia's hosting is seperated into two sites:

I provided some abbreviations also for discussion so it's shorter to reference

mary-kate commented 8 years ago

Okay, I'll start.

WMF architecture (Phab & gerrit, gerrit to be replaced by Phab's Diffusion eventually) + Wider community of MediaWiki developers. GitHub, despite itself being a proprietary solution (ah the irony...) might be the number one choice for many FOSS developers and their projects these days, but that isn't so for most MediaWiki-related things. + It's FOSS. The Wikimedia Foundation strongly favors free and open source software (FOSS) solutions. In the past some WMF teams (a clear minority) used Trello and somesuch proprietary solutions, but AFAIK these have now been phased out in favor of the FOSS tools used by all other teams & community developers. + Uptime, predictability. I don't think I need to tell you just how big the Wikimedia Foundation is. But what I probably do need to tell you is this: I can't recall the last time WMF's developer sites (like Phabricator, etc.) got DDoS'd. GitHub on the other hand...well, it's not their fault, but GitHub seems to be a more lucrative target for those pesky DDoSers. + Privacy. WMF takes users' privacy very seriously. GitHub probably does, too, but the WMF is a non-profit and GitHub is a for-profit. - Repository creation. Back when I started working on MediaWiki, MW used SVN as the version control system. Once you had an SVN account, you had write access to all of /trunk, which contained MW core code (/trunk/phase3), MW extensions (/trunk/extensions) as well as lots of other, more or less legacy things. As later on pointed out, this did mean that someone with SVN commit access could have deleted the core (and/or extensions) directory and caused lots of problems that way. Well, fear not, that non-issue has been "solved". One does not simply enter Mordor, I mean create a new repository on WMF's git. Instead one has to request it, and since only one person (QChris) handles repository requests, it might take a couple days for the repo to be created. This is annoying and AFAIK this issue isn't getting fixed anytime soon. - gerrit. "Kill it with fire", said @zaori and a bunch of other MW developers, myself included. There's no sugar-coating this, gerrit is ugly and annoying and it's amazing that it "works". The only good thing about gerrit is that it will be going away in favor of Phabricator's Diffusion eventually, but I don't know of the precise timetable for that, if there even is such a thing. -/+ Automated (unit) tests. On GitHub as well as on many other places, you, as a developer, are expected to take full responsibility of whatever you commit to the repo, to ensure that your code runs and there aren't any missing semicolons etc. On gerrit, many repositories have automated tests set up (see this patchset for an example). Jenkins will automatically give the patchset the verified flag if the code runs (sic; I kinda want to say "compiles" but PHP isn't a compiled language, thankfully) or if the code doesn't run, jenkins gives the patchset -2 which prevents humans from accidentally merging the code. Tests can be useful, but it's annoying that the configuration is stored (mostly) in dotfiles in the respective repository/-ies.

GitHub + We're used to it. Let's face it, having to change your toolkit from the things you've used to to something you might have never even tried out is annoying, to say the least. Trust me, I've been there. + SVN support. I might be the only one out of Brickimedia dev team who uses this, but damn, it is pretty cool. GitHub supports committing via TortoiseSVN or the command-line SVN binary as if you'd be committing to a SVN repository even though the underlying repo is a git one. How cool is that? - Not FOSS. Wanna run a local instance of GitHub? Sorry, not possible. GitHub's core product is not free and open source software, even though GitHub has open-sourced plenty of plugins and whatnot.

georgebarnick commented 8 years ago

My only opinion on this is that I hate committing to gerrit. I don't even do it now that Windows is my personal OS but even when I was on Linux I'd do anything in my ability to not have to do anything that entailed gerrit committing. I think I've made maybe a total of two commits to MediaWikiChat since it was migrated to Wikimedia git and there's been plenty of things I've seen to change with MWC but never did because I didn't want to go through gerrit's BS

neoncitylights commented 8 years ago

In general, if we were to move: could we do what the wikimedia organisation does right now, where we'd still have clones/mirrors on GitHub, and have the original hosted code at Gerrit/Phab? Or would that require some awful maintenance?

Wikimedia

Githubs

mary-kate commented 8 years ago

@georgebarnick I don't know about your particular setup, but I'm willing to help you out with git/WMF's gerrit if you'd want to learn how to survive with it. (I use command-line git binaries on Windows 7 -- "portable-git" to be exact -- which is pretty ugly but gets the job done. TortoiseGit might likely be a more human-friendly solution, though.)

@codynguyen1116 Things are automagically mirrored to GitHub. The master version of the SocialProfile extension, for example, resides on git.wm.o but is mirrored here as wikimedia/mediawiki-extensions-SocialProfile. And I haven't had to do anything for that -- it just works!

Totally agree re:Phab tools. Shame that gerrit is still the "master" tool for code review and whatnot. Hopefully it'll go away later this year.

No other disadvantages to repo creation that I'm aware of. You can pick almost any name, though sticking to conventions (mediawiki/extensions/ for MW extensions, mediawiki/skins/ for MW skins, etc.) is obviously strongly encouraged.

Yes, it's somewhat ironical that GitHub isn't FOSS. (Same is true for StackOverflow, for example, and IIRC SO people once wrote a lengthy blog post on why SO isn't and isn't going to be FOSS.) More than anything else, I think it's a matter of principle here. When you're a FOSS dev trying to build FOSS things...there isn't a point in using non-free tools when sufficient, usable, free alternatives exist. Just my $0.02.

neoncitylights commented 8 years ago

About to respond to you @mary-kate, but @MtMNC, @UltrasonicNXT, @lewiscawte do you guys have any opinion on this subject?

MtMNC commented 8 years ago

+1 for sticking to GitHub. We're used to it, it does the job well, and it sounds like gerrit is hard to use. Also I imagine migrating hundreds of issues would be a huge pain. If Phabricator and gerrit are going to be replaced fairly soon, if we do make the move I recommend we do it after the change so we don't have to deal with two major changes.

mary-kate commented 8 years ago

@MtMNC Just to clarify a bit, gerrit is eventually going away in favor of Diffusion & Differential, which are a part of Phabricator. Phabricator itself isn't going away at least anytime soon -- maybe in 10-20 years a better tool will emerge, or (as I believe) Phabricator will grow in popularity and will become the definitive all-in-one tool for FOSS projects and other projects requiring issue tracking, code review & repository hosting and more. Anyway, you might want to take a look at the documentation on MediaWiki.org and play around with the test instance on Labs (linked on the aforementioned page). Getting used to new tools takes time and isn't usually easy by any standards, but I'd dare to claim that Phabricator is pretty handy. Give it a try, will you? ;-)

MtMNC commented 8 years ago

@mary-kate Ah, thanks for clearing that up--didn't realize gerrit was being replaced with a part of Phabricator (but looking back that's what your earlier reply said... whoops :P), in which case another transition wouldn't be as big an issue. I'll look into that documentation. :)

neoncitylights commented 8 years ago

@georgebarnick @MtMNC @mary-kate

neoncitylights commented 8 years ago

I think if the goals are met defined by the phab task (March 31, 2016), any time near or after that I'd actually be willing to move :)

mary-kate commented 8 years ago

:+1:

neoncitylights commented 8 years ago

For anyone interested: https://www.mediawiki.org/wiki/Phabricator/Migration_Timeline

neoncitylights commented 8 years ago

we've migrated :D