Fixing the Swift Tooling Problem

Fixing the Swift Tooling Problem

A common refrain about Swift is that the language is great!... but the the tooling hinders it from living up to its potential.

In this talk, I stress that as Swift developers, we don't have to wait for Apple to improve the tooling (though that would be nice). We can, and should, do it ourselves.

Source: https://github.com/jpsim/talks/tree/master/fixing_the_swift_tooling_problem

3a0ae72b2f6bdc4476f1fcb63396e717?s=128

JP Simard

May 18, 2015
Tweet

Transcript

  1. Fixing&the Swi$%Tooling Problem JP#Simard,#@simjp,#realm.io 1

  2. 2

  3. 3

  4. 4

  5. 5

  6. 6

  7. 7

  8. What's'the'Problem? 8

  9. Tangible)Problems • Missing'Tools • Incomplete'Tools • Buggy'Tools 9

  10. Apple%is%very%private. 10

  11. Apple%is%too%private. 11

  12. Apple%releases%new%tools%yearly. 12

  13. Apple%is%focused%on%different%things. 13

  14. "Only&Apple&can&do&this" –"The"Lazy"Developer 14

  15. 15

  16. What%do%other%communi/es%do? 16

  17. A:#Mix#of#vendor.provided# tools#and#community# projects 17

  18. What's'Missing'in'Swi.? 18

  19. Lots! 19

  20. What%Tools%are%Missing%in%Swi2? • Package(Manager • Refactoring(Tools • Automa7c(Code(Style(Detec7on(&(Enforcement • Documenta7on(Generator •

    Version(Manager • Fuzzy(Tes7ng 20
  21. Thanks'{$COMMUNITY}! • Package(Manager((CocoaPods(&(Carthage) • Refactoring(Tools((AppCode) • Automa:c(Code(Style(Detec:on(&(Enforcement( (Swi2Lint) • Documenta:on(Generator((jazzy)

    • Version(Manager((chswi2) • Fuzzy(Tes:ng((Swi2Check) 21
  22. Opportuni)es • Code&Genera+on&(???) • Test&Coverage&Genera+on&(???) • Sta+c&Code&Analysis&(???) • Instrumenta+on&(???) •

    LLVM&IR&Manipula+on&(???) 22
  23. How$can$we$add$it$back$in? 23

  24. Lots of#Reverse#Engineering 24

  25. Hopper.app 25

  26. class%dump 26

  27. Xcode&Plugins 27

  28. Clang 28

  29. SourceKit 29

  30. AppCode Supported)Plugin)Architecture 30

  31. Apple's'No Different Than%Us! 31

  32. well... 32

  33. Risk 33

  34. 34

  35. 35

  36. We#can#help#Apple 36

  37. 37

  38. 38

  39. What%The Community Has$Done 39

  40. 40

  41. 41

  42. 42

  43. Carthage 43

  44. SourceKi)en 44

  45. 45

  46. 46

  47. Swi$Lint 47

  48. 48

  49. Leverage'the'community 49

  50. Resources((1/2) • Swi%&Compiler&Crashes:&github.com/prac9calswi%/ swi%:compiler:crashes • Carthage:&github.com/Carthage/Carthage • CocoaPods:&cocoapods.org • Swi%Check:&github.com/typeli%/Swi%Check

    50
  51. Resources((2/2) • AppCode:)jetbrains.com/objc • chswi8:)github.com/neonichu/chswi8 • Swi8Doc:)swi8doc.org • jazzy:)github.com/realm/jazzy •

    Swi8Lint:)github.com/realm/Swi8Lint 51
  52. Go#Forth and Build! 52

  53. UIKonf().questions.ask()! JP#Simard,#@simjp,#realm.io 53