<p>Somethingthatreallyannoysmeaboutmostrepositoryhostsnowadaysisthatallofthemarehighlydependentonusingpull-requeststocontributecode,whenoriginallyallVCSshad(andstillhave)waystocontributeviapatches(thatandthe`patch' command) which can be sent via e-mail. Now, I understand that having these changes more accessible to the public would be useful, and mailing lists aren'talwaysbest.However,whynotsimplyusethesameinfrastructureofanissuetrackerandapplyittouploadingpatchfiles?Theywouldbeorganizedjustlikepull-requestsare,andwouldessentiallybethesamethingasapull-request...exceptdirectlywithapatchfileinsteadofhavingtogothroughsuchalongprocessjusttocontributetoarepository.</p>
<p>So,whyarepatchfilesbetterthanpull-requests?Firstofall,pull-requestsarestillusefulifsomeonemakesarealforkofaproject(notwhatthey're calling 'forks' nowadays which is someone making a copy just to modify something and then merge it back into upstream). However, if I am contributing to a project it is much easier and faster to make a patch file than to deal with web interfaces endlessly just to contribute two lines of code. When you make a patch file the process is as follows: clone the repository, make the change, create patch file, submit patch file. Easy, right? Now, let'slookatthissameprocessforpull-requests:'fork'arepository,cloneyour'fork',makechanges,pushchangestoyour'fork',andfinallycreatethepullrequest.Patchfileshave4steps,whilepull-requestshave5.Youmaysay"Well, but that's only one extra step, it's not that bad".Okay,butlet'smoveforward.</p>
<p>Now,someofyoumaybesaying"Well, we should use pull-requests because they're more user-friendly!".We're hackers, we should all be used to the command-line by now. That aside, why can'talltheseGUIclientsworkwithpatchfilesinstead?CommonGUIclientssuchastheGitHubclientcouldeasilybeconfiguredtocreatepatchfilesandautomaticallyuploadthemtoGitHub(orwhereeverelse).Howdifficultwoulditbetohaveasimplemenuitemthatsays"export patch"?SoIdon't see how 'user-friendliness' is an argument. Just because something in "in the web" doesn'tmakeituser-friendly,anditdoesn't make it more efficient either. What'smore,sometimestheoldertoolsaremoreusefulthanthenewones!Yetforsomereasonsomethingbeing'old'issomehowareasonableexcusetodismissitasanoption.</p>
<p>Thewebisusefulforsomething,namelybroadcastingandmakinginformationpublic(informationsuchastext,music,art,etc.).It's a great place for sharing. However, that doesn'tmakeitagreatworkplace.Whatisthewebgoodforintermsofcode?Thewebisagreatplacetopostthingslikescreenshots,samples,binaries,codesamples,patchfiles,etc.Butnooneintheirrightmindshouldthinkthatweshouldbeeditingcodeinourbrowsers.Pull-requestsaren't for 'publishing' something, especially because they require you to 'fork' it. Therefore, it'snotwhatweneedintheweb.Patchfilesareaboutpublishingsomething,publishingchangesinthecode.What's the difference? The difference is that in the pull-request scenario one has the repository do the merging and has to 'fork'anentireprojectwhileintheotherapatchfileispublishedtoanissuetracker(youknow,likeinforumposts).</p>
<p>Soplease,stoppromotingthiscancerousdiseaseknownas"the pull-request".Patchfileswereperfectlyfine.Ifyou're going to write your own new repository hosting web framework or whatever, be sure to incorporate patch files. As I said before, pull-requests are good only if we'retalkingabout<b>realforks</b>,nota'fork'thatsomeonemadeofaprojecttocontribute2linesofcodeandthennevertouchitagain.</p>