50

Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host
Page 2: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

1. Introduction2. Scope&Goals3. Science&Software

i. Reproducibilityii. SoftwareQualityiii. SoftwareDevelopmentiv. SoftwareDocumentationv. Guide

4. OpenSourceBasicsi. Mindsetii. Argumentsagainstopensource...andhowtodisprovethemiii. SuccessStoriesiv. LegalStuffv. Peoplevi. Guide

5. GitHubi. Basics:Accounts&Repositoriesii. Fork&PullWorkflowiii. SocialCodingiv. GitHubforEducation

6. SoftwareCommunitiesi. CommunityBuildingandOpennessii. MarketingandPublicRelationsiii. TypesofContributorsandTasksiv. OpenSourceinYourDomain

7. ScientificPublishingofDataandSoftware8. Contribute9. Glossary

TableofContents

PublishingResearchSoftwareasOpenSourceonGitHub

2

Page 3: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Howcanyoupublishresearchsoftwareasopensource?Anddosowithouttoomuchoverheadandactuallygainimpactbyleveragingtheopensourceapproach?

Thesequestionsareansweredinthisbestpractice"PublishingResearchSoftwareasOpenSourceonGitHub".ItispublishedbytheGLUESproject'sSDIteam.

ThisworkislicensedunderaCreativeCommonsAttribution4.0InternationalLicense.

The"sourcecode"ofthisdocumentishostedonGitHubandthebookwaswrittenandpublishedusingGitBook.

Thetextisdesignedtobereadinthewebview,butPDFandotherformats,e.g.fore-readers,areaavailableaswell.

Version:0.1

Thankstothesepeopleforprovidingcontents,givingvaluablefeedback,reportingerrors,...

DanielNüstSimonJirkaAnnHitchcock

Wanttobecomeacontributor?Checkourcontributionguidelines.

AuthorsDanielNüst,@nuestonGitHub,[email protected]

Introduction

LICENSE

Aboutthisbestpractice

Contributors

Contactinformation

PublishingResearchSoftwareasOpenSourceonGitHub

3Introduction

Page 4: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

SimonJirka,[email protected],[email protected]

Twitter:@FiveTwoNhttps://twitter.com/fivetwon

PublishingResearchSoftwareasOpenSourceonGitHub

4Introduction

Page 5: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Researchtodayisdrivenbydata.Itcomesfromvarioussourcesandisofmanifoldaspects.Oftenthisdataispublishedandanalyzedas"open"dataoutofresearchprojectsrangingfromsinglethesistointernationalconsortium.Suchprojectshavealifespanof2to4years.Oftenthesoftwaredevelopedforanalysisisdeemedunfitforpublication,althoughtheideaofopensourcesoftwareiswidelyknown.Toooftenthereasonfornotpublishingthesoftwareislackoftimeorknowledge.Thisbestpracticewillprovideargumentsandworkflowsthatencourageeffectiveandcost-efficientpublication,aswellasensurelong-termmaintenanceandmanagementofresearchsoftwareasopensourcesoftware.

Thetargetaudienceisprojectmanagers,workgroupleadersandscientistsfromalldomainsthatusecodefortheirresearchbuthavenotyetpublishedit.Thedocumentprovidesanoverviewofrelevanttopicsandprovidesreferencestomoredetailedwork.Theauthorsaimtouseplainlanguagetoexplaintechnicaltopics,butalsointroducethe"lingo"ofopensourcesoftwaredevelopment.WhereusefulweaddOpenGuidestoapproachatopicfromanopinionatedstandpointtoanswerthemostrelevantquestionsforpracticalapplications.

Thegoalofthispublicationistogiveresearchprojectleaders,principalinvestigators,andresearchersasetofworkflowsthatincreasetheamountofreusableopensourcesoftwaretooptimizeresearchanditsimpact.Italsoprovidesargumentsforpublicationwhennegotiatingwithsupervisorsorfundingagencies.Pleasenotethatitisbasedonanopensourceinitiative/smallenterprise'sexperienceinfundedresearchprojects.OpenSourcesoftwareisusedwhiledoingappliedresearchinthegeoinformaticsdomain.

Wecannotcoverspecifcprogramminglanguagesorrecommendspecificlibrariesofapplicationdomains,suchashydrology,physics,orgeomorphology.Butwethinksuchrecommendationswouldbeuseful,sopleasefeelfreetocontributesuchinformationaschapterstothisdocument.

Weuseiconsinthetexttoshowwhencontentisimportant,upfordiscussion,anopinion,coverslegalaspects,especiallyrelevantforPhDstudents,basedonexternalresourcesorquotes,relatedtoscientificpublications,coversnewor"hot"topics,openfordiscussionoryourcontributionsareneeded,orwesimplyreallylikeit.

ScopeandGoals

Guide:ShouldIpublishmycode,when,andwhatpartofit?

PublishingResearchSoftwareasOpenSourceonGitHub

5Scope&Goals

Page 6: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Yes,publishreusableabstractcorefunctionsfromthestart.Don'tpublishyourcodeaspartofa"dissemination"for"otherstouse"attheendofyourwork.Ifyoudon'tplantocontinueworkingonsomething,don'tuseopen-sourcingtosilenceyourconscience.

Bypublishingyourcodeyoucaneffectively

demonstratescientificrigor,improvethequalityofthecodeandsubsequentlyyourresearch,startcollaborationswithotherresearchers.

Whatpartofthecodeshouldbepublished?Publishreusablepartitions/corelibraries/abstractfunctionality,insteadofthe"solution"toyourownproblem.Thisallowsotherstore-useyourcodeandcontributetoimproveit,andyoutotakeadvantageoftheirimprovements.Yourrequirementsarestillmetbythepublishedcode,eventhoughyoumightactuallyworkinaderivedspecializedproject.

Ifpossible,donotstartanewproject,butidentifyanexistingproject,frameworkorcommunityandcontributeyournewworktoit.Ifyouhaveavalidcontributionandcanmaintainitforsometime,anycommunitywillwelcomeyouwithopenarms.

Theguidesinthisbookapplybothtoverysmallprojects,suchasanewalgorithmforaspecificprobleminbiochemistry,andtolargeones,suchasanewcloud-basedcommunicationframeworkforthenextgenerationoftheinternetofthing'ssensornodes.

Thisisanopinionatedview.Whatisyourexperience?Getintouchandcontribute!</p>

Furtherresources

https://wiki.52north.org/bin/view/Documentation/BestPracticeOpenSourceForUniversityResearchers

PublishingResearchSoftwareasOpenSourceonGitHub

6Scope&Goals

Page 7: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Inthischapterwetrytoconnecttheworldsofscientificresearchwithopensourcesoftwaredevelopment.

HowcanIdevelopsoftwareaspartofresearch?Whatisthedifferencebetweensoftwareandscientificpapers?Whatisgoodsoftware?Whatisresearch?Howissoftwaredevelopedanddocumented?

Science&Software

PublishingResearchSoftwareasOpenSourceonGitHub

7Science&Software

Page 8: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Reproducibilityliesatthecoreofscience.Youshouldworryaboutit,especiallyifyouuseordevelopsoftwarewithinyourresearch.But(sadly)thisguideisnotaboutgoodscience,soWekindlyaskyoutocontributegoodresourcestothissectiontoanswerquestionssuchas

Whatisit,whydoesitmatter?Howdoesitrelatetosoftware?

Furtherresources:

MakingYourCodeCitableonGitHubhttp://researchcompendia.org/http://reproducibleresearch.net/Reproducibility,ReproducibleresearchandOpenresearchcomputingonWikipediaCRANTaskView:ReproducibleResearchSandveGK,NekrutenkoA,TaylorJ,HovigE(2013)TenSimpleRulesforReproducibleComputationalResearch.PLoSComputBiol9(10):e1003285.doi:10.1371/journal.pcbi.1003285Greatblogpost"10non-trivialthingsGitHub&friendscandoforscience"

Reproducibility

PublishingResearchSoftwareasOpenSourceonGitHub

8Reproducibility

Page 9: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Whatisgoodsoftware?

Youtellus.Forthesakeofthisguide,softwareisgoodsimplyifitdoesthejob.

Yes,weactuallyaddedafullchapteronSoftwarequality,justtomakeitlooklikewewouldhaveashortanswerforyou!

Ifyouworryaboutsoftwarequality,werecommendthefollowing:

Publishyoursoftwareasopensourcefromthestart-itwillmakeyoumoreawareofdocumentationandcode"beauty"(simpletipsformorebeautifulandbettercodingby52°Northdevelopers)andthusincreasethequality.UseanestablisheddocumentationframeworkFollowanestablishedsoftwaredevelopmentlifecycle.

Alongeranswercanbefoundinanyoftheseresources:

SoftwareQualityonWikipediaDavidChappell:TheThreeAspectsofSoftwareQuality:Functional,Structural,andProcess(industrywhitepaper)

Softwarequality

PublishingResearchSoftwareasOpenSourceonGitHub

9SoftwareQuality

Page 10: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Whetheryouworkaloneorinateam,itisworthunderstandingthesoftwaredevelopmentprocessyouapply.Knowledgeaboutsoftwaredevelopmentlifecyclescanhelporganizeyourresearchbetter!

Pleasereadaboutthesoftwaredevelopmentprocesses(about30mins.ofreading):

SoftwareDevelopmentProcessSelectingDevelopmentApproachAgileSoftwareDevelopment

Ifyouskippedthelist,thensimplyuseScrum(andreadthisorgetithere,andthis).

Ourrecommendation:Everythingbutanagileanditerativeapproachwilleventuallyfail,costalotofmoney,takealotoftimeandthereforedoesnotworkinresearch.Statewhichagileapproachyouapply,thenyouhaveacommonlanguage.

Softwaredevelopmentisanendlesslineof"collect,compare,decide".Tosuccessfullyemploythisprocess,youneedafewfeatures,allofwhichareprovidedbytheGitHubplatform:

SourcecodeversioningDocumentationplatform(wiki)IssueortasktrackingWebsite(mailinglistonlyifyoustilluseemails...)

Thereareothersourcecodeversioningsystems(e.g.Mercurial,Bazaar,SVN),butGitistherealdeal.Gowiththeflow-itmakesiteasierfornewdeveloperstojoinyourproject.

Therearemanytaskmanagementsystems.Trello,forexample,isgreatandintegratesverywellwithGitHub.DoesyourinstitutionhostJira,Trac,Redmine,orBasecamp?Goforit.

Youcanhostwebsitesanywhere.Ifyouneedablog,hostingwithGitHubispossiblebutmightnotbeyourfirstchoice.(seemarketing...)

SoftwareDevelopment

Process

CollaborativeSoftwareDevelopment

PublishingResearchSoftwareasOpenSourceonGitHub

10SoftwareDevelopment

Page 11: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

TherearealsoalternativestoGitHub(seehttp://alternativeto.net/software/github/</a>andhttp://toppersworld.com/top-10-free-github-alternatives-for-private-repositories/),forexampleBitBucket,orR-Forge.Gowiththeflowofyourlanguage/domain.Itlowersthebarrierforcollaboration.Youcangetcommercialsupportandprivaterepositores,ordeployanOpenSourcecopyusingGitLab

Whatplatformworksbestforyou?Wouldyouliketolearnaboutdependencymanagement,buildmanagement,releasemanagement,orbugtrial?

PublishingResearchSoftwareasOpenSourceonGitHub

11SoftwareDevelopment

Page 12: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Documentationisextremelyimportant.Hereisourshortlistofrecommendations:

Documentfromthestartanduse"futureyou"asareference:imaginetheinformationneededtounderstandapieceofcode.Write"speaking"code,uselongvariableandfunctionnames,andfollowsoftwaredesignpatterns-itsaves80%ofdocumentation.Useadocumentationframeworkthatsuitsyourprogramminglanguage,(a)withaversionsupportand(b)thatallowsexternalcontributions.

PlaintextfileswithinthecodeR:MarkdownvignettesPython:reStructuredTextToptenreasonsGitHubisagreattoolforcreativewritersReadtheDocsGitHubpagesWikihostingservicesonWikipedia

Youshouldnotuseasoftware/codelicensefortextandimages.Thesearelicensessuitablefordocumentation:

AnyoftheCreativeCommonslicenses.Dependingonyourgoals,choseone!GNUFreeDocumentationLicense(discussedonWikipedia)

SeealsothelistsoffreeandnonfreedocumentationlicensesatGNU.

Thisisanopinionatedview.Whatisyourexperience?Getintouchandcontribute!

Documentation

Guide:WhatlicenseshouldIuseforDocumentation

PublishingResearchSoftwareasOpenSourceonGitHub

12SoftwareDocumentation

Page 13: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Youcangreatlyimprovethequalityofcodeandofyourresearchbyfollowingestablishedpracticesofthelanguageofyourchoicefromthestart.Spendalittlebitofeffortin(a)settingupareproducibledependencyandbuildsysteminthebeginningand(b)documentingthesoftwareallthetime.Thisisaloteasierthantryingtoadddocumentationor"overhaul"whenthecodeis"finished".Codeisneverfinished.Seeminglysimpleinformation,suchashowtosetuptheenvironment,orversionsofusedlibraries,issimplylostaftercodeisunusedforafewmonths.

Readaminimumofsoftwaredevelopmentprinciplessothatyouknowwhereyoucanfindhelp.Noneedtolearnsomethingyoucanlookup!Don'treinventthewheel,useestablishedlibraries.Useestablishedbuildanddependencymanagementsolutionsforyourlanguageofchoice.Evenifyoudon'tplantopublishyourcodeinpublicrepositories,dopackageitforthembecauseitwillenforcegoodpractices.

useMaven</a>orGradleforJavawriteanextensionpackage</a>forRandloadrequiredpackagesfromCRANwriteaPyPimodulewhenusingPythonuseGrunt</a>andBowerforJavaScript,andpackageyourcodeinanNPMmodule

Documentconstantlyuse"futureyou"withoutanypreviousknowledgeastherecipienttojudgelevelofdetailofdocumentationuseacommondocumentationsolution-seeDocumentation

Doyouknowtypicalframeworksforotherlanguagesusedinopensourcedevelopment?

Guide:Dosoftware"right"fromthestart

PublishingResearchSoftwareasOpenSourceonGitHub

13Guide

Page 14: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Inthischapterwetackletheverybasicsofopensourcesoftware.

Whatisopensource?Whatarelicensesforopensourcesoftware?Howdo"opensourcepeople"think?Isopensourcereallyworking?

ReadoninthesectionsaboutOpenSourceMindset,ArgumentsforOpenSource,SuccessStories,andLegalStuff.

OpenSourceBasics

PublishingResearchSoftwareasOpenSourceonGitHub

14OpenSourceBasics

Page 15: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Tounderstandopensourcedevelopmentonemustunderstandhowopensourcedevelopersthinkandwork.Thissectionmostlypointstoworthwhilereadingmaterialforarainyweekend(unlessotherwisenoted).

Opensourcehasastrongrelationtoscienceandresearch.Manyinstitutionsuseandcreate,butalsoresearchopensourcesoftware.ExplorethisworldusingGoogleScholarorMicrosoftAcademicSearch.See,e.g.Amazonforprintedpublications.

TheOSIdefinesopensourceassoftwarefollowingasetofcriteriathatensurefreedistribution,extendibility,andnon-discrimination.Thefullcriteriaareonlineandtheannotatedversionisahighlyrecommendedread.TheminimalexcerptofthedefinitionbytheFreeSoftwareFoundation(FSF)isasfollows.

“Freesoftware”meanssoftwarethatrespectsusers'freedomandcommunity.Roughly,itmeansthattheusershavethefreedomtorun,copy,distribute,study,changeandimprovethesoftware.Thus,“freesoftware”isamatterofliberty,notprice.(source)

ReadthefulldefinitionandmakeupyourownmindabouttheFSF"campaign".Isnonfreesoftwarereally"unethical"?HowdoFSFandOSIrelatetoeachother?Youcanfindanoptionalreadaboutthecontroversydefiningwhatopensourcesoftwareishereandhere.

Thereareplentyofonlinedescriptionsofthehistoryofopensource.Werecommendthefollowingpages(roughly1hourofreading):

"Historyoffreesoftware"onWikipedia"Open-sourcemovement"onWikipedia"HistoryoftheOSI""The9mostimportanteventsinOpenSourcehistory",includingacommentthreadshowingthatboilingdownopensourceto"Xevents"isimpossible.

Mindset

WhatisOpenSource?

Definition

History

Terms"free","libre"and"opensource"

PublishingResearchSoftwareasOpenSourceonGitHub

15Mindset

Page 16: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Freesoftwareisamatterofliberty,notprice.Tounderstandtheconcept,youshouldthinkoffreeasinfreespeech,notasinfreebeer.RichardStallmann

"Freesoftware","libresoftware"and"opensourcesoftware"haveslightlydifferentmeanings.Thesedistinctionsareimportantforthehistoryandunderstandingof"somehowpubliclyavailablesoftware".

Wikipediahasasummaryofthenaming,funquotesabouttheunfortunateacronymFLOSS,aswellasawholepagediscussingtheambiguityof"free".

Whenwesayopensourcesoftware,wemean"freeandlibreopensourcesoftware".WemightusetheacronymFOSS,buttrustyoutounderstandtheambiguityoftheEnglishword"free".

Extendedreading:

FreeasinFreedom(2.0):RichardStallmannandtheFreeSoftwareRevolutionbySamWilliams(book'sWikipediapage,208pagesplusappendix!)

Theterm"hacking"or"hackers",i.e.peoplewhohack,ispartofmainstreamculturetoday.Inopensourcecommunities,theterm"hacking"hasdiversemeanings,someofthemverypositive.Thesameskillsetisrequiredfor"cracking"illegalyintosecuresystemsandforsolvingaveryhardinformaticsproblemcreatively.Sodon'tworryifsomeonetalksabouta"goodhack"!

Forafullhistoryofthetermandrelatedconceptssuchas"white/blackhat","cracking",or"hackerethic",seeAppendixAofFreeasinFreedom(2.0):RichardStallmannandtheFreeSoftwareRevolutionand,asalways,Wikipediaon"Hacker"oron"Hackerspace"(a.k.ahacklab,hackspaceormakerspace).

Toalargeextent,opensourcedevelopersarenodifferentfromanyothersoftwaredevelopers.Amustreadforunderstandingthe"softwareworld"(notonlyopensource)andthepeoplelivingandworkinginit,is"WhatisCode?"byPaulFordforBloombergBusinessweek.JoshTyrangiel'sintroductionstates:

Softwarehasbeenaroundsincethe1940s.Whichmeansthatpeoplehavebeenfakingtheirwaythroughmeetingsaboutsoftware,andthecodethatbuildsit,forgenerations.

Hacking

WhatisCode?

PublishingResearchSoftwareasOpenSourceonGitHub

16Mindset

Page 17: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

[...]asinglestorydevotedtodemystifyingcodeandthecultureofthepeoplewhomakeit.

Whilethisbookisconcernedwithsoftware,(a)"Opensource"alsoexistswithoutsoftware,and(b)ifyourresearchinvolvescreationofhardwareaswell,there'sawholeotherworldoutthere!

Extendedreading:

"Opensource"onWikipedia(withoutsoftware)HistoryofOpenSourceHardwareattheOpenSourceHardwareAssociation

Getintothecultureofsoftwaredevelopersandopensourceenthusiastsandtryanycombinationofthefollowing.

RegularlyreadXKCD,Whatif?,DilbertandGeek&Pokewebcomicssoyoucanmakeconversationatlunch.FollowtechnologynewsonSlashdotorArsTechnica.WatchThisWeekinTech.Ifyou'reinGermany,heiseonlineisalsogoodtofollowfortechnologynews.

OpenSouce(Hardware)

Theextramile

PublishingResearchSoftwareasOpenSourceonGitHub

17Mindset

Page 18: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Inmostcases,theoppositeistrue.Severalfactorsmayevenensureabettersupportforopensourcecomponentsthanforclosedsourcesoftware.Formanyopensourcesoftwareprojects,thereisalargedevelopercommunityavailable.CommunicationtakesplaceviatheWeb,mailinglists,etc.Hereyoucangetdirect,first-handsupportfromthedevelopersofthecode.Sincemostcommunicationisextremelytransparent,youcanevaluateinadvancehowthesedifferentsupportchannelsworkwhendecidingwhichopensourcesoftwarepackagetouse.

Manyopensourceprojectsarebackedbycommercialcompanies.Thesecompaniesofferprofessionalsupportservicesforspecificopensourcepackages.Furthermore,youarenotboundtoonesinglevendor(seevendorlock-in)forthesesupportservices.Sincethesourcecodeisopen,anyonecandevelopfixesorenhancements.However,ifyourelyonproprietarysoftwareandthevendordiscontinuestheproduct,goesoutofbusiness,orifthesupportcontractsofferedbythevendorbecomeunattractive,youmayrunintoaproblem.

Anopensourcelicenserequiresthesourcecodetobepublished,however,therearemanywaystosellitsuccessfully.Inmanycases,customersneednotonlythesoftware,butalsoapackageofrelatedmaterialsandservices.Thus,anattractiveofferincludingspecificsupportagreements,enhanceddocumentation,helpforinstalling/integratingthesoftware,training,etc.wouldmakesense.OpenSourceSoftwaredoesnotmean“non-commerical”!

’Freesoftware’doesnotmean‘noncommercial’.Afreeprogrammustbeavailableforcommercialuse,commercialdevelopment,andcommercialdistribution.Commercialdevelopmentoffreesoftwareisnolongerunusual;suchfreecommercialsoftwareisveryimportant.Youmayhavepaidmoneytogetcopiesoffreesoftware,oryoumayhaveobtainedcopiesatnocharge.Butregardlessofhowyougotyourcopies,youalwayshavethefreedomtocopyandchangethesoftware,eventosellcopies(source).

ArgumentsagainstOpenSource...andHowtodisprovethem

NoProfessionalcanhelpMeifIhaveProblems

OpenSourceSoftwaremeansIcannotsellit

PublishingResearchSoftwareasOpenSourceonGitHub

18Argumentsagainstopensource...andhowtodisprovethem

Page 19: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

WhileitmightbetruethatLinuxrequiresmoretimetocustomizeitaccordingtoyourneeds,itisnottruethatthistimeiswasted.Infact,Linux,asdomanyotheropensourcesoftwarepackages,providesalotmoreflexibilityinsettingupsystemstofityourneedsexactly.Itmighttakemoretimeinitially,butyouwillhaveasystemwhichallowsyoutoworkextremelyefficientlyintheend.

Wefocusonpublishingresearchoutputsasopensourcesoftware.Whenwetalkaboutresearch,thefocusisnotonmoney,butonmakingtheresearchcommunityawareofyourwork,showcasingyourresults,andprovidingabasisthatcanbere-usedandadvancedbyfutureresearch.Thereare,however,manywaystomakemoneywithopensourcesoftware.Thefollowingparagraphsintroducetwopossibleopensourcebusinessmodels.

TheOpenSourceGeospatialFoundationprovidesacompactsummaryaboutcommercialservicesforopensourcesoftware.Theinformationonthispageisprettysimilartotherevenueopportunitiesfollowedbyvendorsofproprietarysoftware,exceptthattherearenolicensefeesforthesoftware.Typicalelementsofsuchanopensourcebusinessmodelmaycompriseconsulting,customdevelopments(e.g.newormodifiedfeatures)basedonanopensourcesoftwarepackage,maintenance,supportwithspecificservicelevels,training,etc.Opensourcesoftwaremayhelpresearcherssuccessfullysubmitnewresearchanddevelopmentprojectproposalstofurtheradvanceandimprovetheirsoftware.

Wikipediaalsohasacomprehensivearticleondifferentapproachesforopensourcebusinessmodels.

Forexample:

Dual-licensing:Publishyoursoftwareunderanopensourcelicense,butforthoseuserswhocan'tcomplywiththislicense,sellcommerciallicenses.Softwareasaservice:Sellyoursoftwareasaservice(e.g.byprovidingaccesstoyoursoftwareasacloudservice).Proprietary/OpenSourcecombination:Combineyouropensourcesoftwarewithproprietarysoftwarethatyoumightsell(e.g.proprietaryextensions).Othersourcesofrevenuemaycomprisethesaleofbrandedmerchandise,voluntarydonations,partnershipswithfundingorganizations,open-sourcebounties,advertising-supportedsoftware,orcrowdfunding.

"LinuxisonlyforfreeifyourTimehasnoValue"(source)

YoucannotearnMoneywithOpenSource

PublishingResearchSoftwareasOpenSourceonGitHub

19Argumentsagainstopensource...andhowtodisprovethem

Page 20: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Therearemanyotheropportunitiestomakemoneyfromopensourcesoftware.Shareyourexperience.

Softwarepatentingisahighlycontroversialtopic.Dependingonthecountryinwhichyoulive/work,itmightnotevenbepossibletopatentyoursoftware.

Animportantfactorintoday'ssciencecommunityistomaximizetheimpactofyourresearch.Thisiswhymanyfundingagenciesstartrequiringpublicationstobeopenaccessandsoftwaretobeopensource.Theideaofpatentingcodeiscompletelycontrarytotheserequirementsandtheprinciplesofopenandreproduciblescience.

RecommededreadingonsoftwarepatentsshouldstartwithWikipediaarticle.

IcannotpatentmyCode

PublishingResearchSoftwareasOpenSourceonGitHub

20Argumentsagainstopensource...andhowtodisprovethem

Page 21: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Opensourcesoftwareisnotanicheproduct.Infact,thisverybookisaproductcreatedwithopensourcesoftware,suchasGitforcollaborationandversionmanagement,FirefoxforeditingandmostlikelyApacheornginxonaLinuxwebserverforcontentdelivery.

Therearemanysuccessstoriesintheopensourceworld.Hereareafewexamples:

ApacheSoftwareFoundation:TheApacheSoftwareFoundationisresponsiblefortheApachesoftwareprojects.Oneofthemost-wellknownApacheprojectsistheApacheHTTPServer,theworld'smostwidelyusedwebserversoftware.TherelevanceoftheApacheprojectsbecomesapparentifyoulookatthecompaniessupportingtheApacheSoftwareFoundation(e.g.Google,Microsoft,IBM,Yahoo).LibreOffice:ThisisanopensourceofficesuitepublishedandmaintainedbyTheDocumentFoundation.ItisbasedonOpenOffice.org,fromwhichitwasforkedin2010,whichwasoriginallyanopen-sourcedversionofStarOffice.LibreOfficeenjoysquitealargeusercommunityandisacommonalternativetoproprietaryproducts.Linux:Linuxisoneofthemostprominentexamplesofopensourceprojects.Fromitsfirstreleasein1991,ithasbecomeawidelyusedoperatingsystem.PopularplatformssuchasAndroidrelyontheLinuxkernel.Webbrowsers:Twoofthemostpopularprojectsrelyonopensourcelicenses.MozillaFirefoxisavailableundertheMozillaPublicLicense.TheChromebrowserpublishedbyGoogleisdistributedasfreeware,however,significantpartsofitssourcecodeareavailableasaprojectcalledChromiumundertheBSDlicense.

Inthegeospatialcommunity,twoprojectsforofferingmapservicescontributeto/publishopensourcesoftwareandarethebasisforasoftwareasaservicebusinessmodelaswell.

CartoDBoffersservicestocreateandhostmapsontheWebasafreemiumservice.However,interestedusersmayaccesstheplatformimplementationasanopensourcepackagetoinstalltheirowninstanceortomodifyit.MapBoxofferssimilarservicestoCartoDB's.Significantmodulesofthisplatformhavebeenpublishedasopensourcesoftware.Furthermore,MapBoxhascontributedtomanyotheropensourceprojects.

Differentorganizationsneedingacertainfunctionalitycanteam-uptofundthenecessarydevelopments.Anexamplehereofisthe52°NorthSensorObservationService(SOS)implementation.ThisWebserviceallowsuserstopublishmeasurementdata/sensordataontheWebthroughastandardizedinterface.Severalpartnersand(research)projectscontributedeitherfundingfor52°Northdevelopersorcodetodevelopthiscomponent.Due

SuccessStories

PublishingResearchSoftwareasOpenSourceonGitHub

21SuccessStories

Page 22: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

torecentlegalobligations,variousEuropeancountriesneedatooltoreporttheirairqualitymeasurementsinastandardizedformattotheEuropeanEnvironmentAgency(EEA).Togetthenecessary52°NorthSOSenhancements,severalcountries(i.e.Belgium,TheNetherlands,SwedenandtheUnitedKingdom)haveteameduptofundthedevelopment(seealsoStreamliningEuropeanairqualitydatareportingandexchangeviaSOS4.3).Thisisanexcellentexampleofhowdifferentstakeholderscanjoinforcestoadvanceopensourcesoftware.

OpenHuboffersavarietyofmetricstoassessopensourceprojects:theirpopularity,activities,etc.

Overviewsofsuccessfulopensourceprojectsareavailable:

http://www.itworld.com/article/2827587/enterprise-software/10-most-successful-open-source-projects-of-2012.htmlhttp://www.techdrivein.com/2010/08/11-biggest-open-source-success-stories.htmlhttp://royal.pingdom.com/2009/05/29/the-8-most-successful-open-source-products-ever/

PublishingResearchSoftwareasOpenSourceonGitHub

22SuccessStories

Page 23: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

"IANAL"-Iamnotalawyer.Wehavesomeexperiencewithopensourceslicensing,butwecannotgiveyoutheprofessionaladvicethatyourrequire.Therearemanydifferentlegalsystemsintheworld.Ifyouareindoubtaboutlegalmattersregardingyouropensourcesoftwareorsoftwarethatyouuse,thengetalawyerorgetintouchwithcolleaguesandyourlegaldepartment.

Thereis,however,aplethoraofguidesandopinionsavailableonlineandinbooks.Inthissection,weintroducesomebasicinformationandtrytosummarizethematterforthemosttypicalscenarios.

©

Copyrightisalegalconceptthatgivesthecreatorofaworkcertainrightsto(exclusively)usethatwork,grantpermissionstootherpersons,etc.Itisintendedtoprotectthecreator(s)fromeconomicalandideologicalabuseoftheirworks.You,asacreator,havethecopyrightbydefaultandusuallyyoucandetermineunderwhichconditionsyourworkmaybeusedbyothers.However,theexactscopedependsonthespecificapplicablelaw(e.g.thecopyrightlawsofspecificcountries).

Pleasenotethattherearealsolimitationsregardingthecopyright,whichgrantsomeexceptionsforspecificcases.Thisisreferredtoas“fairuse”.WerecommendreadingthisWikipediaarticle.Otherlimitationsconcernthecopyright'sexpirationaftercertainperiods(dependingonthespecificlaws).

Copyrightrequiresthattheworkyoucreatedhasacertainthresholdoforiginality.Thisthresholdisgenerallyratherlow.Aninterestingdiscussionaboutthistopiccanbefoundhere.

History:IntheoldRomanEmpireandthemedievalages,therewasnocopyright.Atthattime,itwasextremelylaborioustocopyatext,sothiswasnotreallyanissue.However,thischangedwiththeinventionoftheletterpressandledtothe“Printer’sPrivilige”Actof1709,alsoknownastheStatuteofAnne(Britishlaw).OtherexamplesincludetheDroitd’auteur(France,1793:authorswantedacknowledgmentnotmoney)ortheGerman

LegalStuff

Basics

Copyright

PublishingResearchSoftwareasOpenSourceonGitHub

23LegalStuff

Page 24: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Urheberrechtsgesetz(UrhG)from1965.

Ifyourworkisfree,youmightalsowantthatanymodificationorextensionsofthisworkbefree.Thisconceptiscalled“copyleft”.Copyleftensuresthatyoursoftwareisfreeandthatallmodificationsandextensionsofyourcodehavetobefreetoo.GNUexplainsthisasfollows:

"Proprietarysoftwaredevelopersusecopyrighttotakeawaytheusers'freedom;weusecopyrighttoguaranteetheirfreedom.That'swhywereversethename,changing'copyright'into'copyleft.'”

Wedistinguishbetweendifferenttypesofcopyleft.Generally,therearethreemaincategories:

StrongcopyleftrequiresallderivedworktoinherittheoriginalcopyleftlicenseWeakcopyleftreferstolicenses,whichdonotrequirethatallderivedworkinheritthecopyleftlicense.Forexample,youmaylinkyoursoftwaretoaweakcopyleftlicensedlibrarywithoutusingthesamelicense.However,ifyouchangetheoriginalsoftware,thecopyleftlicenseneedstobekept.Thisisuseful,forexample,ifyouwanttopublishlibrariesthatshouldbere-usablebyabroadrangeofotherprojects.Non-copyleftdoesnothaverequirementsonthelicenseofderivedsoftware.

Asyouwillseelateron,thedifferenttypesofcopyleftareanimportantfactorwhenchoosinganopensourcelicenseforyoursoftware.

Recommendedreading:

http://www.gnu.org/copyleft/http://en.wikipedia.org/wiki/Copylefthttp://www.visionmobile.com/blog/2011/03/theopen-source-trials-hanging-in-the-legal-balance-of-copyright-and-copyleft/

Internationalconventionsregulatehowtohandlecopyrightbetweendifferentcountries.AnimportantelementistheBerneconvention.

Copyleft

GlobalTradeAgreements

SoftwareCopyrightandCopyrightInfringement

PublishingResearchSoftwareasOpenSourceonGitHub

24LegalStuff

Page 25: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Allsoftware,proprietaryandfreeandopensource,reliesoncopyright.Althoughcopyrightinandofitselfhasalonghistory,itsapplicationtothespecificsofsoftwareisstillinthemaking.IntheEUandUSA,thereismainlyCaseLawonthistopic.Theconceptofcopyrightlaysthefoundationfortheconditionsofopensourcelicenses.

RecommendedReading:

SoftwareCopyright

CopyrightInfringement

Ifyouareusingcopyrightedworkswithoutpermissionfromthecopyrightholder,orifyoudonotfollowtheirtermsandconditions,thisiscalledcopyrightinfringement.Thiscouldhaveseriouslegalconsequences.Inordertoavoidcopyrightinfringements,youshouldconsiderseveralaspects:

Whenyouuseopensourcecode,lookfortwotypesoflegalinformation1)thelicense(s)ofthecodeand2)thecopyrightnoticesofcontributingauthors(seealsoManagingCopyrightInformation).

Makesureyouunderstandthecompatibilityofthelicense(s)ofthiscodewiththelicenseyouareusingforyourowncode(andwiththelicensesofothercomponentsyouareusing).

Whenyoupublishyourcodeunderanopensourcelicense,youarerequirednotonlytoprovideinformationaboutthelicenseyouareusingyourself,butalsoaboutthelicensesofalllibraries/softwarethatyouareusinginyoursourcecode.Thereareefficienttoolsandmechanismsthathelpyoutracecontributionsandlicensesofanythirdpartycodeinmanydistributedversioncontrolsystems.

Inadditiontothecopyleftlicenses"strongcopyleft","weakcopyleft"and"non-copyleft"mentionedabove,thereisaspecificcategoryknownas"publicdomain”.Thiscoversworksforwhichtheintellectualpropertyrightshaveexpiredorhavebeenforfeited.Othertypesoflicenses,suchasCreativeCommons,arenotreallyintendedforsoftware.Theydonotcontainanyprovisionsforthedistributionofsourcecode.ItisNOTrecommendedtouseCreativeCommonslicensesforsoftware.

LicenseTypes

PopularLicenses

PublishingResearchSoftwareasOpenSourceonGitHub

25LegalStuff

Page 26: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Opensourceprojectstendtofavorcertainlicensesoverothers.Thefollowingoverviewshowssomeofthemostcommonlyusedopensourcesoftwarelicenses:

MITLicense(MIT)andBSDNon-copyleftlicensesVerypermissivehttp://en.wikipedia.org/wiki/MIT_Licenseandhttp://en.wikipedia.org/wiki/BSD_licenses

ApacheSoftwareLicense(ASL)Non-copyleftPermissivehttp://www.apache.org/

GNUGeneralPublicLicense(GPL)Strongcopylefthttp://www.gnu.org/licenses/

GNULesserGeneralPublicLicense(LGPL)Weakcopylefthttp://en.wikipedia.org/wiki/LGPLhttp://www.gnu.org/licenses/

AfferoGeneralPublicLicense(AGPL)StrongcopyleftClosesaloopholethatmainlyappliestosoftwaredeployedonWebservers(seehttp://www.gnu.org/licenses/why-affero-gpl.en.html)http://www.gnu.org/licenses/

Seeexplanationsofthedifferentlicensesforsoftwarecode.

Othertypesoflicenses,wouldbebettersuitedforworksotherthansoftwarecode.

Creativeworkorart:LicensessuchasCreativeCommonsOpendata:LicensessuchasOpenDataCommons(ODC)Openhardware:Manyprojectsuselicensesinspiredbyopensourcesoftwarelicensesbutwithimportantdifferences(seealsoOpenSourceHardware).

Ifyouwanttocontributetoanopensourceproject,youareoftenrequiredtosignaso-calledcontributorlicenseagreement(CLA).ThesignedCLAenablesthelegalbodybehindanopensourceproject

toworkwithyourcodecontribution(e.g.toreproduce,tomodify,tocreatederivative

ContributorLicenseAgreements

PublishingResearchSoftwareasOpenSourceonGitHub

26LegalStuff

Page 27: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

worksandtocombinethecontributionwithothersoftwarecode)togranttheOpenSourceLicensetopotentialuserstochangethetermsoftheOpenSourceLicenseforaparticularsoftwareprojectifnecessary(e.g.changingfromastrongcopyleftlicensetoaweakcopyleftlicense)tohandlelegaldisputes.

TheCLAdoesNOTrequireyoutotransferthefullintellectualpropertyrights(IRP)associatedwithyourcopyright(insomecountriesthisislegallyimpossibleand,fromacompanyviewpoint,itisoftenundesirable).Instead,youtransferonlythoserightsnecessarytoallowthelong-termlicensemanagementoftheprojecttowhichyouarecontributing.ThefollowingexampleofCLAsgiveyouanimpressionofhowtheywork:

Apache:http://www.apache.org/licenses/#clas52°North:http://52north.org/about/licensing/contributors-licenseagreement-faq

Recommendedreadings:

http://www.oss-watch.ac.uk/resources/clahttp://en.wikipedia.org/wiki/Contributor_License_Agreementhttp://development.contributoragreements.org/https://wiki.eclipse.org/CLA

Copyrightnoticesandlicenseheadersarenotrequiredtosecurecopyright.Basedonmostnationallaws,thecreatorofaworkautomaticallyholdsthecopyrightthemomenttheworkiscreated(e.g.ifyouhavewrittenalineofcode).However,thisdoesNOTmeanthatyoushouldnotprovidecopyrightnoticesandlicenseheadersastheyhavecertainlegalimplications.

Ifsomeoneinfringesyourcopyrightandtherearenocopyrightnotices/licenseheaders,hemightusethisasanargumenttoreduceyourclaims.Thelicenseheadermakesiteasytoimmediatelydeterminetheauthorandlicenseofacertainpieceofsourcecode.Youimproveyourvisibilityastheauthorofacertainpieceofsourcecode.

Youcanfindmoreinformationonthistopichere.

Manyopensourceprojects(e.g.Eclipse,Apache)relyontrademarkingtomaintaincontrol

NoticesandLicenseHeaders

Trademarking

PublishingResearchSoftwareasOpenSourceonGitHub

27LegalStuff

Page 28: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

ofaproject'sidentity.Youcancontrolbetterwhoisusingyourlogoornameandinwhatcontextifyouhaveregisteredcorrespondingtrademarks.Asyoucanimagine,thiscanbecomeaseriousissue.

RecommendedReading:

http://communityovercode.com/2011/01/trademarks-in-open-source/http://www.ifosslr.org/ifosslr/article/view/11

TheUK-basedorganizationOSSwatchisagreatresourceaddressingmanyaspectsofthischapter:http://oss-watch.ac.uk/resources/ipr

FurtherResources

PublishingResearchSoftwareasOpenSourceonGitHub

28LegalStuff

Page 29: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Inthissectionwebrieflylistsomepeopleyoushouldhaveheardaboutfromtheworldofopensourceandfreesoftware.

FSFFounderFreesoftwareactivistIn1983hewrotethe"GNUisnotLinux"a.k.a.theGNUManifestoCoinedtheterm"Freeasinspeechvs.freeasinbeer"More:https://de.wikipedia.org/wiki/Richard_Stallman

FounderofOSIWrotethesenotableessays-worthreading!

"TheCathedralandtheBazaar""HomesteadingtheNoosphere"

More:http://en.wikipedia.org/wiki/Eric_S._Raymond

"Inventor"ofLinuxandgitMore:https://en.wikipedia.org/wiki/Linus_Torvalds

ProfessoratHarvardLawSchoolandpoliticalactivistCofounderofCreativeCommonsMore:https://en.wikipedia.org/wiki/Lawrence_Lessig

People

RichardStallman

EricS.Raymond

LinusTorvalds

LawrenceLessig

PublishingResearchSoftwareasOpenSourceonGitHub

29People

Page 30: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Yourealizehavingnolicensedoesnotmakeyourprojectusablebyothers.Ifnot,pleasereadtheentryabout"Nolicense"intheFSFlicenselistandthisstudyaboutlicensesonGitHub.

Therearesomanychoicesoutthereandtheopensourcelicenseworldiscomplex.Westronglyrecommendtogowithoneofthemostusedandestablishedlicenses.ThesearedividedintothreebroadcategoriesandbrieflyexplainedbyGitHubfolksatchoosealicense.com.Theydon'tsuggestanylicenseinparcticularandevenexplainthe"nolicense"option.Choosingalicenseisnowatwo-minute-task.

Basedonourexperience,werecommendtheApacheLicense.Itisclosertotherealworld,ascomparedtothe"short"licenses(MIT,BSD).Ittakesintoconsiderationthattherealworldisabadplacewithsoftwarepatents,butalsoallowsanycommercialapplicationtointegrateandextendasoftwareproject.Yourownideas,third-partylibraries,i.e.softwarethatyouuseorextend,haveanimportantimpactonchoosingalicense.

Theminimumnumberofstepsrequiredforchoosingalicenseforsoftwareresultingfromaresearchprojectareasfollows.

1. Createacomprehensivelistofyour"third-partylicenses"-softwarethatyoustrictlyrelyonordirectlyextendandtheirlicenses.

2. Gotochoosealicense.comandpickalicensethatfitsyourgoals.3. Checkallthird-partylicensesforcompatibilitywithyourchosenlicense.

Thisrequireswebsearchesandpotentialinvolvementofalawyerspecializinginopensourceifthedependencies'licensesarenottypicalones.Sadly,weareNOTlawyersandcanNOTmakeclearrecommendationshere.Checkthefollowingwebsites,butjudgeforyourselfiftherecommendationsapplytoyou.In90%ofthecases,theanswerisstraightforward,butduediligenceisrequired.

"Comparisonoffreeandopen-sourcesoftwarelicenses"onWikipediaOSSWATCHlicencedifferentiator

52°North'slistofthird-partycomponents

4. MakesureALLsoftwarecontributorsareokwiththechosenlicense.5. Checkwithguidelinesoragreementsaccompanyingthefundingforyourdevelopment,

e.g.researchgrants.6. Reviseyourdecisionifanyof3.to5.resultinissues.Ifchoosealicense.comisnot

detailedenough,answersevenquestionsintheOSSWATCHlicencedifferentiator.

Guide:WhatlicenseshouldIuseformysoftwareproject?

PublishingResearchSoftwareasOpenSourceonGitHub

30Guide

Page 31: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

7. Done.

Formoreextensivelistsofopensourcelicenses,pleaseseethelistofOSI-approvedlicensesandthelicenselistbytheFSF.ThelatteralsohasveryshortsummariesandrecommendationsforlaypeopleyetfocusesontheFSF'sperspective.

PublishingResearchSoftwareasOpenSourceonGitHub

31Guide

Page 32: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

GitHubistheplatformforopensourcesoftwaredevelopment.Millionsofprojectsuseit(cf.GitHut).Itssuccesscomesfromitsgreatcollaborationworkflow,whichallowsdevelopers,documentersanduserstobuildsomethingtogether.GitHubenablestheideaofsocialcoding,asoftwarethatisdevelopedeffectivelybyadistributedvirtualcommunity.

GitHubprovidesextensivehighqualityonlinedocumentation:https://help.github.com/.Thus,wegiveyouabriefoverviewanddescribeouropinionofwhyGitHubsimply"works".WealsolinktotherelevantcontentsoftheexcellentGitHubBootcamp.

PublishingResearchSoftwareasOpenSourceonGitHub

32GitHub

Page 33: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

GitHubisafreeplatformforcodeandtaskmanagement.Atthecore,itisbasedonanopensourceversioncontrolsystem(VCS)calledGit.

Therearemanytutorialstohelpyougetstarted(GettingStartedGitBasics).

Ifyoudonotliketoworkwiththecommandline,or-godforbid-youarenotworkingonLinux,installGit(availableforalloperatingsystems)andaGituserinterface.

WestronglyrecommendtostartwithGitatthecommandline.VeryexperiencedandintenseGitusersdonotuseanUI!ItwillhelpunderstandhowGitworksifyoutypecommandsinsteadofclickingfancybuttons.

Signup-https://github.com/join-togetanaccount.Createyourfirstrepository-somethinglikeaprojectbasefolder-withasingleclickandyouarereadytogo.Or,forkarepository,i.e.makeacopyofanexistingrepository,andmakethecopyyourown.Thiswayyourworkwon'taffecttheoriginalproject.

Bootcamparticles:

SetupGitForkaRepoGoodResourcesforLearningGitandGitHub

Basics:Git,Accounts&Repositories

PublishingResearchSoftwareasOpenSourceonGitHub

33Basics:Accounts&Repositories

Page 34: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Evenwhenyouworkwithonlytwopeople,wehighlyrecommendthe"Fork&Pull"developmentmodel.FromtheGitHubhelponpullrequests:

Thefork&pullmodelletsanyoneforkanexistingrepositoryandpushchangestotheirpersonalforkwithoutrequiringaccessbegrantedtothesourcerepository.Thechangesmustthenbepulledintothesourcerepositorybytheprojectmaintainer.Thismodelreducestheamountoffrictionfornewcontributorsandispopularwithopensourceprojectsbecauseitallowspeopletoworkindependentlywithoutupfrontcoordination.

Theadvantagesarealsotrueforprojectswithclosecollaboration,i.e.wherethereisalotofupfrontcoordination,maybeevenwithinthesameofficespace:

Everybodycandowhattheywantwithintheirfork.Changestothemainrepocanbediscussedandreviewedwithinthepullrequests.Accesscontroltothemainrepositoryarewiththeprojectmaintainer.Pullrequestsworkbetweenanyoftheforks.

Bootcamparticles:

ForkaRepo

Furtherreading:

GitHubGlossaryUsingpullrequests

Fork&PullWorkflow

PublishingResearchSoftwareasOpenSourceonGitHub

34Fork&PullWorkflow

Page 35: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

GitHubissosuccessfulbecause,itmakescollaborationwithotherseasy.Successfulcollaborationbetweenpeoplemakes(software)projectsthemselvesasuccess.

Codeisaboutthepeoplewritingit.Wefocusonloweringthebarriersofcollaborationbybuildingpowerfulfeaturesintoourproductsthatmakeiteasiertocontribute.Thetoolswecreatehelpindividualsandcompanies,publicandprivate,towritebettercode,faster.

TheGitHuboldmissionstatement

ChrisWanstrath,oneoftheGitHubfounders,gaveagreattalk(60min.)attheEsriUserConference2014aboutGitHubandopensourceingeneral.Recommendedwatch.

Afterviewingthevideo,"watch"acoupleofrepositoriesand"follow"somepeopletostayupdated.Exploreusersprofilestoseewhatpeopleareworkingonandconnectwiththosewhousesimilarsoftwareordoworkrelatedtoyourown.

Bootcamparticles:

Besocial

Furtherreadingonsocialcoding:

Socialcoding--thenextwaveindevelopment(TechRepublic)EclipsewikiandFAQ

SocialCoding

PublishingResearchSoftwareasOpenSourceonGitHub

35SocialCoding

Page 36: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Yes!Seeitasabackupsolution,butGitimprovesyourworkflow,itencouragesyoutowanderoffwithnewideas(branches),switchbetweenthem,andevenmergethem.AndGitHubissimplyagreatGituserinterface.FriendsandcolleaguescanfollowyourworkonGitHubandbecomecollaborators.

WithGit(oranyVCS),youworkinplaintextfilesandkeepcodeanddocumentationcloselytogether.Thisensuresthatanybodycanunderstandwhatisgoingoninoneweek,onemonth,oroneyear.

IfIworkonmyown,doIstillneedGitHub?

PublishingResearchSoftwareasOpenSourceonGitHub

36SocialCoding

Page 37: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

GitHubofferseducationalinstitutestheopportunitytorunclassesonGitHuborputaPhDinaprivaterepositorybeforepublishingtheaccompanyingpaper!

TwobasicaspectsareexplainedindetailontheGitHubEducationlandingpage:

Educators:Youcanteachmoreeffectivelybyhavingaplatformtocollectassignments,distributestartercodeanddiscussissueswithstudents"within"theircode.YoucantakeadvantageofthefreeOrganizationaccountsforyourclassesorgetintouchwithGitHubtorequestdiscounts.

Students:Youwillstaybetterorganizedandwon'tlooseyourwork.Youwillalsobuildaportfoliothatdisplaysyourskillsonceyoustartlookingforajob.Thereismore:theStudentDeveloperPackgivesyoufreeaccesstodevelopertoolsandinfrastructure,suchascloudhostingordomains,foralimitedtimeoraslongasyouareeligible.

GitHubforEducation

PublishingResearchSoftwareasOpenSourceonGitHub

37GitHubforEducation

Page 38: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Inthischapterwetacklethehumansideofopensourceprojects.

Howcanyoubuildacommunitythatlasts?Howcanyouorganizeaprojectthatservesdifferentneeds,schedulesandpeople?Howcanyoushowwhatyourprojectcando?Howcanyougethelptotakeyourprojecttothenextlevel?

Thissectionisworkinprogress.

Wehavesectionsinthemakingaboutcommunitybuilding,openness,aswellasmarketingandpublicrelations.

SoftwareCommunities

PublishingResearchSoftwareasOpenSourceonGitHub

38SoftwareCommunities

Page 39: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

PublishingResearchSoftwareasOpenSourceonGitHub

39CommunityBuildingandOpenness

Page 40: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

AsZachHolmanputsit,"OpenSourcedoesn'tjustmarketitself".Communicationandinteractionwiththepublicandotherdevelopersisimportanttohelpthecommunitygrowandmakeyourhardworkknowntotheworld!

Thefollowingquickreadsprovideanideaofwhatisimportantifyouwantyoursoftware/projecttobeused:

OpenSourceDoesn'tJustMarketItself(ZachHolman)Marketingopensourceismadeforgeeks(SandroGroganz)Open-SourceProjectsNeedMoreThanGoodCode—TheyNeedMarketing(MattAsay)

WeparticularlyliketheemphasisZachHolmanputsonthevalueofgreatdocumentationasmarketing!

Thefastestwaytodisseminateinformationistomakeuseofsocialmedia.Therearelotsofdifferentplatforms,butusuallythereisn'tasocialmediaexpertonhandtojugglethem.Twoimportantbut"managable"meansarebloggingandtwittering.

"Youhavesomethingtosay,andblogsprovideaplacetosayitandbeheard."(source)

Ablogismoreinformalthanapressrelease.Itis"...adiscussionorinformationalsitepublishedontheWorldWideWebandconsistingofdiscreteentries("posts")typicallydisplayedinreversechronologicalorder(themostrecentpostappearsfirst)."(source)

Ifyouarenotawareoftheconceptofblogging,thesehelpfullinksprovidebackgroundinformation:

http://weblogs.about.com/od/startingablog/p/WhatIsABlog.htmhttp://codex.wordpress.org/Introduction_to_Blogginghttp://weblogs.about.com/od/startingablog/tp/Top-Ten-Reasons-to-Blog.htm

Howtostartblogging?

http://www.wikihow.com/Start-a-Bloghttp://startbloggingonline.com/

MarketingandPublicRelations

SocialMediaisthewaytogo

Theblog

PublishingResearchSoftwareasOpenSourceonGitHub

40MarketingandPublicRelations

Page 41: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

http://howtomakemyblog.com/10-elements-of-style-of-blog-post-writing/

Whichbloggingplatformisbestforme?

http://thenextweb.com/apps/2013/08/16/best-blogging-services/Wordpress(https://en.wordpress.com/)isthenumber1platform.Blogger(full-fledgedblog)andTumblr(aninterestingfusionbetweenafull-fledgedblogandaTwitterfeed)areamongthetop3platforms.

Postregularly,butdon'tpostifyouhavenothingworthpostingabout.Ifyouwanttoinvolveothersintheprojectdevelopment,getfeedbackaboutcertaindevelopments,buildthecommunity,don'tjustblogaboutprojectresults,shareyourideas,plans,etc.Commentonotherpeoples'blogs(theynormallyvisitback).

"Twitterisanonlinesocialnetworkingservicethatenablesuserstosendandreadshort140-charactermessagescalled"tweets"(source).There'salotmoretotwitterthanmicroblogging,butit'sastart.

http://webtrends.about.com/od/socialnetworking/a/what-is-twitter.htmhttp://www.wikihow.com/Use-Twitterhttp://mashable.com/guidebook/twitter/

1. Firstcreateusefulcontent:e.g.blog,newsticker,presentation,etc.2. Thentwitter:

140charactersinatweet:Itshouldcontainaspecificpointfromalongerpieceofcontent,orgiveanideaofwhattolearnfromcontent.UseshortenedURLStosavecharacters.Thereareanumberoffreelinkshortenertoolsavailable,e.g.http://ow.ly/url/shorten-urlorhttps://bitly.com/Usekeywords(#hashtags)tofindtopicsandhaveyourtopicsbefound.Use@usernamestoreachuserswithsimilarintereststothat@username’sfollowers.Usepictures.Particularlywhenatanevent.http://www.socialquant.net/images-for-twitter/

Guideforblogging

MicrobloggingwithTwitter

GuideforTwitterbasics:

PublishingResearchSoftwareasOpenSourceonGitHub

41MarketingandPublicRelations

Page 42: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

3. KeepingtabsontweetsKeepitundercontrolwithTweetdeck(https://tweetdeck.twitter.com/).Tweetdeckisanicetool,whichgivesyouanoverviewoftweetsfromthoseyoufollowaswellasyours,notifications,messagesandactivities.Twitteranalytics(http://analytics.twitter.com)providesbasicstatisticalinformationaboutyourtweets.

Althoughmostpeoplelookforinformationonlinethesedays,thereisstillaneedforprintedmaterial.Doyouhaveanewproject,software,solution,application?Howaboutacheatsheet/flyer?

Firstofall,beclearaboutwhoyouwanttoaddressandwhatyouwanttoachieve.IsyourtargetgroupUsers?Developers?...?

Tipsforflyers:

Producetheflyerwhenthetopicishot,don’twaitforanevent.Keeptheformatsimpleandeasytoupdate,e.gDINA4singleordoublepaged.Maketheflyeravailabletodownloadonline.IncludeQRcodes(linktohomepage/productpage,repository,i.e.GitHuborotherrepository).

Furthertopics

managingexpectations(openness)

Ifyouworryaboutaname,youmusthavefiguredoutalltheotherissues!

Thefirstthingtoconsideris:DoIreallyneedanameforanewopensourceproject,orwoulditnotbebettertocontributemynewcodeasanextensiontoanexistingandestablishedproject?

Ifitistobeanewproject,takealookatrelatedprojectsandcommunitieswithinthelanguageorframeworkyoubaseyourcodeon.Areabbreviationscommon?Dopeopleusehiporcoolnames?Checkforexistingnames.

Informationdisseminationviapaper–outdated?

Guide:HowshouldInamemyproject?

PublishingResearchSoftwareasOpenSourceonGitHub

42MarketingandPublicRelations

Page 43: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

https://www.google.de/search?q=good+software+project+names(trademarks,…)http://www.webdeveloper.com/forum/showthread.php?113873-Great-software-project-names&s=14592899cd3b32c3df12f39bf4616c5e&p=605183#post605183

Tipsfornaming:

FindagoodnameAvoidabbreviationsBevisionaryandchooseanamethatfitstheoverallgoalofwhatyourcodedoes,notaspecificsolutionPreferexisting"realworld"words-theyarealoteasiertoremember

Searchforotherprojectswiththesamename,alsoconsidertrademarks(potentiallyfromcompletelydifferentapplications)Ifaprojectexists,startfromthebeginning

Thisisanopinionatedview.Whatisyourexperience?Getintouchandcontribute!

Furtherresources

...

t.b.d.

Logos

PublishingResearchSoftwareasOpenSourceonGitHub

43MarketingandPublicRelations

Page 44: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Therearemanytasksinopensourceprojectsasidefromactuallywritingcode.Inthissection,wepointtosomearticlesworthreadingpresentingthedifferenttypesofcontributionsyoucanmakeyourselforthatyoucanencourageotherstogiveyourproject.

Thisextensivelistnicelyshowshowmanydifferentwaysthereare-sogetstartednowandparticipateyourselfandmotivateothers.

7WaysNon-programmersCanContributetoOpenSourceProjectsusetheproductbugtestwritedocumentationtranslationevangelisedonatebeprofessional

10waystocontributetoanopensourceprojectwithoutwritingcodeprovidereportscreatefeaturerequeststestthecodewritedocumentationtranslatetheUIanddocumentationanswerquestionsonforumsandmailinglistshelpdesignUI/logo/websitepromotetheprojectprovidehardwarethankthecommunity

14WaystoContributetoOpenSourcewithoutBeingaProgrammingGeniusoraRockStar

startlisteningjoinmailinglistfollowblogjoinIRCchannel

workwithticketsdiagnoseabugclosefixedbugs

workwithcodebetatest

TypesofContributorsandTasks

PublishingResearchSoftwareasOpenSourceonGitHub

44TypesofContributorsandTasks

Page 45: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

fixabugwriteatestsilenceacompilerwarningaddacomment

workwithdocumentationcreateanexample

workwithcommunityansweraquestionwriteablogpostimproveawebsite

HowtoContributetoOpenSourcein10steps

Butofcourse,thingsarenotthatsimple.Thefollowingpaperisanextendedreadingonwhatbarriersnewcomersmightface:AsystematicliteraturereviewonthebarriersfacedbynewcomerstoopensourcesoftwareprojectsbyI.Steinmacher,M.A.GraciottoSilva,M.A.Gerosa,D.F.Redmiles,A,InformationandSoftwareTechnology(2014),doi:http://dx.doi.org/10.1016/j.infsof.2014.11.001

PublishingResearchSoftwareasOpenSourceonGitHub

45TypesofContributorsandTasks

Page 46: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Weneedyourcontributionstofillthissectionofthebook.Herewewanttocollectlinksforspecificdomains,suchasbiology,biodiversity,physics,geology,computergraphics,...toprovideastartingpointforresearchers,especiallyPhDstudents,togettoknowexisitingprojectsaswellascommonpracticesintegratingresearchwithopensourcesoftware.

OpenSourceinYourDomain

PublishingResearchSoftwareasOpenSourceonGitHub

46OpenSourceinYourDomain

Page 47: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Thereisagrowinglistofpapersandplatformsthatsupportthepublishingofscientificdataandsoftware.Thisguideismostlyconcertwithcreatingsoftware,thusthissectionisalistof(partiallycommented)linkstoplatforms,journals,repositories,etc.

Pleasenote,dataisnotlikesoftware.WhileGitHubcanbeusedforpublishingandcollectingdataaswell,youshouldseeiftherearemoresuitableplatforms.Thefieldofpublishingsoftwareanddataisanareaofresearchitself:Whynotcollaborateandbeoneofthefirstinyourlab,institutionordomaintoexplorethisavenue?

Theideaof"weaving"code(oneofthetwoaspectsofliteralprogramming,"tangling"beingthesecond)anddataintoasingledocument,forexampleSweaveforRorPweaveforPython,isworthexploringforanyoneusingcodewithinresearch,evenifjustforcreatingplots.

Contributionstothefollowinglistareverywelcome!

ListofsoftwarejournalsbytheSoftwareSustainabilityInstituteEGU2015shortcourse"OpenSciencegoesGeo-PartII:ScientificSoftware",coversjournalsforpublishingsoftwareandplatformsforpublishing(withDOIsetc.)

RecordingsSlides

sciforgeDataCiteZenodoFigshareDryadPANGEARunMyCodeResearchCompendiaVictoriaStodden(Prof.atGraduateSchoolofLibraryandInformationScience,attheUniversityofIllinoisatUrbana-Champaign):Wiki:BestPracticesforResearchersPublishingComputationalResultsEclipseScienceWG...

ScientificPublishingofDataandSoftware

PublishingResearchSoftwareasOpenSourceonGitHub

47ScientificPublishingofDataandSoftware

Page 48: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Thisisthecontribute.mdof52°NorthbestpracticedocumentPublishingResearchSoftwasasOpenSourceonGitHub.Greattohaveyouhere!Hereareafewwaysyoucanhelp!

Youlikethebestpracticeandithelpedyou?Great!Pleasetalkaboutit:

OnTwitter,usingthehashtag#[email protected],linkingtohttps://github.com/52North/pubopenand/orhttp://52north.gitbooks.io/pubopenWritetous:[email protected],usethefollowingcitation:Nüst,Daniel,SimonJirka,andAnnHitchcock.PublishingResearchSoftwareasOpenSourceonGitHub.June2015.url:https://www.gitbook.com/book/52north/pubopenBibtexentry:

@Book{2015:52north:pubopen,

Title={PublishingResearchSoftwareasOpenSourceonGitHub},

Author={N\"ust,DanielandJirka,SimonandHitchcock,Ann},

HowPublished={online},

Month={jun},

Year={2015},

Url={https://www.gitbook.com/book/52north/pubopen}

}

Youfoundaspellingerror?Asentencecouldbemisunderstoodandyouwouldliketoclarifyit?

Great!ThisbestpracticeisanopensourcedocumenthostedonGitHub.

Beforeyoucontributeyourchanges,pleasereadtheusedlicense(seeREADME.md)-bycontributingtothisbookinanywayyousignalyourunderstandingofthelicenseanditsimplications.ForktherepositoryonGitHub.Makeyourchangestotherespectivefiles.Splitthemintothematicallysoundgitcommitswithinformativecommitmessages.

Contribute.md

Spreadingthework

Correctingandimprovingcontent

PublishingResearchSoftwareasOpenSourceonGitHub

48Contribute

Page 49: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

Createapullrequest.

Thissectionincludesadviceonhowtoaddnewsectionstothebestpractice.

Beforeyoucontributeyourchanges,pleasereadtheusedlicense(seeREADME.md)-bycontributingtothisbookinanywayyousignalyourunderstandingofthelicenseanditsimplications.OpenanewissueonGitHubandexplainwhatinformationismissinginthebestpracticeandwhy.Afterdiscussingwiththemaintainersofthework,forktherepositoryonGitHub.Makeyourchanges.Createapullrequest.

Currently,notranslationsofthebookareplanned.Doyouthinkthiswouldbeuseful?OpenanissueonGitHubtodiscussyourideaswiththemaintainers.

UsingGitHub:http://help.github.com/UsingGitBook:http://help.gitbook.com/Thisdocumentationisnotsufficient?Contributesomethatyouweremissingwhenyoustarted!

Ifyouhavefurtherquestions,contact:[email protected]

Addingnewsections

Translations

Documentation

PublishingResearchSoftwareasOpenSourceonGitHub

49Contribute

Page 50: Table of Contents 1. Introductiongeoportal-glues.ufz.de/documents/GitHub.pdf · well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it. You can host

TheFreeSoftwareFoundation(FSF)isanonprofitwithaworldwidemissiontopromotecomputeruserfreedomandtodefendtherightsofallfreesoftwareusers,http://www.fsf.org/

3.6.Guide 3.1.Mindset 3.5.People

TheOpenSourceInitiative(OSI)isaglobalnon-profitfocusedonpromotingandprotectingopensourcesoftware,developmentandcommunities,http://opensource.org/

3.1.Mindset 3.5.People

OpensourcelicensesarelicensesthatcomplywiththeOpenSourceDefinitionandcompletedOSIlicensereviewprocess,seehttp://opensource.org/licenses.

Glossary

FSF

OSI

OSI-approved

PublishingResearchSoftwareasOpenSourceonGitHub

50Glossary