Swift is Open Source

Het was nog niet zo lang geleden dat Apple iOS-ontwikkelaars met Swift verraste. In de korte tijd daarna heeft het een snel tempo van adoptie genoten in de ontwikkelingsgemeenschap. In feite werd Swift in een onderzoek van Stack Overflow de meest geliefde programmeertaal genoemd.

Op 3 december bleef Apple trouw aan zijn woord en maakte Swift officieel volledig open source. Gezien de populariteit van Swift is het zeker opwindend om na te denken over de implicaties van de verhuizing. Wat houdt de toekomst in voor Swift en wat kunnen we als ontwikkelaars doen om de evolutie ervan vorm te geven??

Niet helemaal zeker wat open source betekent? Lees hier het artikel van Sam Berson over open source.

Apple en Open Source

Als iemand die graag iOS-ontwikkeling doet als een leven, ben ik altijd enigszins jaloers geweest op de open-sourcecommunity. Hoewel het waar is dat GitHub bloeit met open source iOS-projecten, zowel in Swift als Objective-C, heeft Apple de iOS-gemeenschap historisch niet veel laten bijdragen aan zijn tools, frameworks, IDE's of talen in enige officiële hoedanigheid behalve ResearchKit.

Met Swift hebben we nu een uitnodiging gekregen om de toekomst van de taal te helpen bevorderen. Dit is een nieuwe grens voor de iOS-gemeenschap en ik geloof dat het ook een beetje goodwill van Apple zal uitbreiden naar de ontwikkelaars die dagelijks op hun platforms werken. Bovendien kan Swift's toekomst nu veel verder reiken dan iOS, iets wat we later zullen bespreken.

Een direct voordeel van deze stap, voor mij althans, is dat we nu kunnen genieten van een intieme blik op Apple's ontwikkelingspraktijken en -processen. In feite heeft Swift's repository op GitHub alle commits voor iedereen om te bekijken, daterend helemaal terug tot de initiële commit op 17 juli 2010.

Impact van Open Source

Als je niet nagedacht hebt over de impact van Apple's overstap naar open source Swift, dan denk ik dat het belangrijk is om een ​​stapje terug te doen en ernaar te kijken. De geschiedenis leert dat open sourcing van een softwareproject veel voordelen heeft.

Over het algemeen rijpt een open-sourceproject dat in de gemeenschap grip krijgt snel op en wordt het in de loop van de tijd stabieler. Als de community actief betrokken is, kunnen nieuwe functies snel worden geïmplementeerd.

Afgezien van snellere iteraties, helpt de community de software te laten rijpen op een manier die gunstig is voor diegenen die hem het meest gebruiken. Open sourcing van een project resulteert ook vaak in meer samenwerking binnen de gemeenschap, die voor alle betrokkenen wint.

De lijst gaat maar door. In een wereld die afhankelijk is van technologie en de tools erachter, zou ik u willen voorstellen dat het nog nooit zo belangrijk en relevant is geweest om open source software te gebruiken. De kracht van een community die aan software werkt, kan een dankbaar en vooral productief initiatief zijn.

We hebben zelfs gezien dat Apple samenwerkt met andere vooraanstaande technologiebedrijven om Swift naar het volgende niveau te brengen. IBM lijkt veel interesse te hebben in het implementeren van Swift als een server-side taal, en je kunt nu al genieten van een ongelooflijk project van hun inspanningen in hun online snelle sandbox.

Swift zal snel evolueren

Uiteindelijk betekent open sourcing Swift dat het in een snel tempo zal veranderen. Typisch, snelle verandering kan hoofdpijn voor ingenieurs betekenen. We hebben dit zelfs tot op zekere hoogte in Swift gezien. Swift 2 introduceerde veel veranderingen die Swift 1 code overbodig en niet compenseerbaar maakten.

Het belangrijkste verschil is nu dat Apple en en de gemeenschap is degene die de verandering aanstuurt. Met een open deur kijk naar wat er met Swift gebeurt, kunnen ontwikkelaars beter worden voorbereid op aankomende wijzigingen. Iteraties in software mogen geen oefening in frustratie zijn, maar het zou een nuttige en welkome praktijk moeten zijn. Open source software blinkt in dat opzicht uit.

Om dit aan te tonen, overweeg deze statistieken die de Swift-repository heeft ervaren in de korte tijd dat deze live is geweest:

  • 10.000 commits vonden plaats in de eerste 24 uur
  • meer dan 24.000 commits tot nu toe
  • ongeveer ~ 400 pull-aanvragen zijn samengevoegd met Swift's repositories

Op het moment van schrijven is Swift ook gestaag trending op de # 1-plek op GitHub. Dat is een hele prestatie in korte tijd en het laat duidelijk zien dat de ontwikkelingsgemeenschap in het algemeen klaar is en bereid is om een ​​bijdrage te leveren.

Als ontwikkelaar is het energiek om de taal al bij een 'open source'-tempo aan te passen. De populaire iOS-ontwikkelaar en auteur Erica Sadun heeft bijvoorbeeld al een overtuigend argument gemaakt om C-Style-looping in Swift te verwijderen. Daarnaast, -- en ++ operators zijn waarschijnlijk ook onderweg.

Gezien deze feiten, zien we nu al dat Swift baat heeft bij open source. Het rijpt niet alleen, omdat het naast iOS ook compatibel is met andere platforms, maar ontwikkelaars kunnen ook zien dat de wijzigingen openbaar worden doorgevoerd. Het aanpassen van codebases voor Swift 3 zou echt geen probleem moeten zijn, omdat we niet langer hoeven te wachten tot de volgende WWDC op de hoogte wordt gehouden van de vooruitgang in de taal.

Waar te beginnen

Gezien de open source-impact, vraagt ​​u zich misschien af ​​hoe u zelf kunt meedoen. Open source software kan aanvankelijk een beetje intimiderend zijn als je er nog niet eerder bij betrokken bent geweest. Hier wil ik u wijzen op enkele manieren waarop u een beter gevoel kunt krijgen voor open source software en Swift in het bijzonder.

Sociale verkooppunten

Een goede plek om met open source Swift betrokken te raken, zijn de discussies zelf. Het is niet verwonderlijk dat veel van deze discussies afkomstig zijn van Twitter. Enkele prominente bugfixes die op Twitter worden genoemd, zijn zelfs verholpen voordat Swift open source was.

Ontwikkelaars kunnen hun ideeën voor Swift gemakkelijk uitspreken via de lage toegangsdrempel van Twitter. Bovendien hoef je het proces van het inbrengen van code nog niet helemaal te doorlopen. Het is een manier met weinig stress om een ​​bijdrage te leveren aan Swift.

Het is ook een leuke en educatieve interactie met de ontwikkelaars van Swift. Ze waren behoorlijk actief op Twitter in de aanloop naar de open source-beweging, en nog meer na. Dat gezegd hebbende, hier zijn enkele Apple-technici die direct betrokken zijn bij Swift.

Chris Lattner @ clattner_llvm

Chris is verantwoordelijk voor het brengen van ons Swift en hij was ook de oorspronkelijke auteur van de LLVM-compilerinfrastructuur. Uiteraard is hij altijd betrokken bij de Swift-gemeenschap. Sterker nog, hij heeft zelfs om 22.00 uur op een zaterdag pull-aanvragen geaccepteerd. Zeggen dat hij actief betrokken is bij het project zou een understatement zijn.

Jordan Rose @UINT_MIN

Jordan is een andere toptechnicus van Apple die zich vooral richt op Swift. Net als Chris is Jordanië ook een geweldige bron om Swift-vragen of zorgen te melden.

Joe Groff @jckarter

Joe is ook een getalenteerde ingenieur die werkt aan Swift. Hij heeft verschillende vragen over Swift beantwoord en is altijd blij om deel te nemen aan de community.

Contributing Code

Het open source-initiatief van Swift wordt uitgevoerd via het populaire GitHub-platform. Als u niet bekend bent met GitHub, of Git in het algemeen, kan bijdragen aan Swift een behoorlijk intimiderend vooruitzicht zijn. Als dat het geval is, raad ik u aan om eerst vertrouwd te raken met deze hulpmiddelen, en dit is een goed begin.

Als u aan de slag wilt gaan, moet u een lokale omgeving instellen. Swift's GitHub README is een uitstekende gids om te volgen, dus ik zal deze stappen hier niet herhalen. Kort gezegd, na slechts een paar commando's van de commandoregel en interacties met de repository, ben je in de lucht.

Begin klein

Wanneer u bijdraagt ​​aan open source software of software in het algemeen, is het goed om te beginnen met een klein, beheersbaar doel. Chris Lattner moedigt het zelfs aan.

Probeer enkele stukjes van de codebase te vinden en vertrouwd te raken met deze. Van daaruit ben je beter in staat om te zien wat er kan worden verbeterd. Persoonlijk zou de eerste stap die ik zou nemen, de Swift Contributing Guide zijn.

Swift Open Source-projecten

Een aantal opwindende (en verrassende) nieuwtjes uit de open source-aankondiging van Swift waren enkele projecten die in ontwikkeling zijn met de taal. Een paar van hen werden verwacht, zoals de compiler en de standaardbibliotheek, en sommige waren gloednieuwe initiatieven.

Elk van de vier grote projecten wordt openlijk ontwikkeld, dus bijdragen zijn welkom. Laten we ze nu eens kort bekijken.

Compiler en standaardbibliotheek

Afkomstig van swift.org is Swift's compiler "in de eerste plaats verantwoordelijk voor het vertalen van Swift-broncode in efficiënte, uitvoerbare machine-code." Zelfs als je geen grondige kennis hebt van compilers of hoe ze werken, is het fascinerend om door de code te bladeren als alleen voor educatieve doeleinden.

Het tweede onderdeel van dit project, de standaardbibliotheek, is waarschijnlijk iets dat de meeste ontwikkelaars bekend zullen zijn. Het bevat alles van de meest fundamentele gegevenstypen, zoals Int en Dubbele typen, tot geavanceerde verzamelingstypen, zoals reeks en Woordenboek.

Als je een fervent Swift-ontwikkelaar bent, kun je nu bepalen hoe deze typen werken. Of, als u een gespecialiseerde functiespecialist wilt die specifiek op uw behoeften is afgestemd, kunt u zelfs de repository indrijven en de Swift-typen naar eigen inzicht aanpassen.

Swift Package Manager

De iOS-gemeenschap heeft verschillende manieren gezien om code te verspreiden. Sommige populaire keuzes zijn Cocoapods en Carthago. Nu kunnen we de Swift Package Manager aan die lijst toevoegen.

Hoewel het zich in de allereerste ontwikkelingsfasen bevindt, is dit het project dat ik het meest interessant vind. In feite ondersteunt het momenteel iOS, tVOS of watchOS niet. Hoewel de ondersteuning voor die platforms zeker zal komen, omdat het rijpt, kan het potentieel worden gebruikt om Swift-code te verspreiden die verder gaat dan alleen iOS of OS X.

Kernbibliotheken

Het Swift Core Library-project is nauw verwant aan de standaardbibliotheek, behalve dat het een hogere-orde-functionaliteit biedt. Instrumenten die deel uitmaken van dit project zijn typisch platform-agnostische concepten.

Het kernbibliotheekproject bevat bijvoorbeeld functionaliteit voor JSON-parsing, unit testing en interactie met het bestandssysteem. Dit zijn hulpmiddelen die afhankelijk zijn van het platform of project dat voorhanden is.

Om dit project in meer relatable termen te plaatsen voor iOS- en OS X-ontwikkelaars, is libdispatch hier gehuisvest. U kent dit waarschijnlijk wel, want het is waar Grand Central Dispatch vandaan komt. Dat gezegd hebbende, is het logisch dat het is opgenomen in de Core Libraries omdat het uitvoeren van concurrentcode niet een taak is die specifiek is voor alleen iOS of OS X.

REPL en Debugger

Ten slotte is het REPL- en Debugger-project waarschijnlijk een beetje voor zichzelf. Dit project is verantwoordelijk voor de implementatie van de volledige suite voor foutopsporing van Swift. De LLDB-debugger is iets dat ontwikkelaars al geruime tijd gebruiken, omdat het is opgenomen in Xcode.

De REPL en Debugger zijn echter sterk gekoppeld, wat logisch is omdat ze op veel verschillende manieren een vergelijkbare waarde bieden. REPL staat voor "Read Eval Print Loop" en het is geweldig om te gebruiken voor lichtgewicht Swift-code. Als je de terminal opent en "Swift" typt, begin je Swift REPL lokaal te gebruiken.

Zoals je kunt zien, is er zeker geen tekort aan projecten of componenten van Swift om bij te dragen. Hoewel, cliché als het klinkt, dit is slechts het begin en verschillende nieuwe projecten zullen in de loop van de tijd verschijnen.

Middelen

Om af te ronden wil ik je graag wat middelen achterlaten die je kunt gebruiken om je kennis van Swift's open source landschap te vergroten.

Swift.org

Dit is de officiële bestemming voor de ontwikkeling van Swift. Het bevat handleidingen om aan de slag te gaan, samenvattingen van alle lopende projecten en meer. Dit zou je eerste stop moeten zijn als je mee wilt doen.

Apple's Swift Blog

Hoewel deze al een tijdje in de buurt is, als je hem nog niet eerder hebt bezocht. Het bevat veel nuttige informatie over Swift en zijn architectuur geschreven door Chris Lattner. Hoewel het nog afwachten is of deze in de plaats van swift.org wordt gehouden, is het nog steeds een waardevolle bron.

GitHub-pagina van Swift

Ik heb dit een paar keer genoemd, maar dit is waar alle ontwikkeling van Swift plaatsvindt. Als u wilt bladeren door code, vorkrepository's of pull-aanvragen indient, gebeurt dit hier.

Swift's Evolution Mailinglijst

Dit is een uitstekende mailinglijst om je te abonneren als je in de eerste plaats geïnteresseerd bent om te zien hoe snel Swift zal evolueren en welke richting de taal op gaat. Daarnaast zijn er verschillende andere mailinglijsten om over na te denken, die allemaal verschillende aspecten van de ontwikkeling van Swift bespreken. Je kunt ze hier allemaal zien.

Swift's Bugboard

Net als elke andere software heeft Swift bugs. Dit is de centrale locatie die het Swift-team gebruikt om bugs bij te houden en te volgen totdat ze zijn opgelost. Afgezien van bugs, kunnen hier ook verbeteringen worden gesuggereerd.

Conclusie

Swift zal in de toekomst een grote rol gaan spelen in de ontwikkeling van iOS. Ik denk dat ontwikkelaars dat hebben geweten sinds het werd aangekondigd op WWDC 14. Wat spannend is, is dat het zich nu buiten de Apple-platforms manifesteert. Stel je voor dat je Swift als een taal voor de server gebruikt bij het ontwikkelen van een API?

Misschien belangrijker dan de groei van Swift is het feit dat de gemeenschap de verandering zal aansturen. Open sourcing Swift opent veel deuren voor zowel jou als de taal. Dit is het moment om deel te nemen, dus begin met het lezen van de bijdragende richtlijnen en ik kijk uit naar je volgende commit in de Swift-repository.