$30 off During Our Annual Pro Sale. View Details »

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

JP Simard

May 18, 2015
Tweet

More Decks by JP Simard

Other Decks in Programming

Transcript

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

    View Slide

  2. 2

    View Slide

  3. 3

    View Slide

  4. 4

    View Slide

  5. 5

    View Slide

  6. 6

    View Slide

  7. 7

    View Slide

  8. What's'the'Problem?
    8

    View Slide

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

    View Slide

  10. Apple%is%very%private.
    10

    View Slide

  11. Apple%is%too%private.
    11

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. 15

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. Lots!
    19

    View Slide

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

    View Slide

  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

    View Slide

  22. Opportuni)es
    • Code&Genera+on&(???)
    • Test&Coverage&Genera+on&(???)
    • Sta+c&Code&Analysis&(???)
    • Instrumenta+on&(???)
    • LLVM&IR&Manipula+on&(???)
    22

    View Slide

  23. How$can$we$add$it$back$in?
    23

    View Slide

  24. Lots
    of#Reverse#Engineering
    24

    View Slide

  25. Hopper.app
    25

    View Slide

  26. class%dump
    26

    View Slide

  27. Xcode&Plugins
    27

    View Slide

  28. Clang
    28

    View Slide

  29. SourceKit
    29

    View Slide

  30. AppCode
    Supported)Plugin)Architecture
    30

    View Slide

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

    View Slide

  32. well...
    32

    View Slide

  33. Risk
    33

    View Slide

  34. 34

    View Slide

  35. 35

    View Slide

  36. We#can#help#Apple
    36

    View Slide

  37. 37

    View Slide

  38. 38

    View Slide

  39. What%The
    Community
    Has$Done
    39

    View Slide

  40. 40

    View Slide

  41. 41

    View Slide

  42. 42

    View Slide

  43. Carthage
    43

    View Slide

  44. SourceKi)en
    44

    View Slide

  45. 45

    View Slide

  46. 46

    View Slide

  47. Swi$Lint
    47

    View Slide

  48. 48

    View Slide

  49. Leverage'the'community
    49

    View Slide

  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

    View Slide

  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

    View Slide

  52. Go#Forth
    and
    Build!
    52

    View Slide

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

    View Slide