Shared at the first meetup of Elixir Shanghai.
Where to get help when developing your own project? How to contribute back to the Elixir community?
Ge#ng&Help&&|>&Ways&to&Contribute[email protected]$/$Ela$Workshop
View Slide
Topics1. Where'to'start'learning'about'Elixir2. Tools'to'use'during'project'development3. Where'to'get'help'when'wri>ng'code4. How'to'contribute'back[email protected]$/$Ela$Workshop
Elixir:'Ge*ng'Started[email protected]$/$Ela$Workshop
Elixir&Homepage&(elixir/lang.org)• Always(up+to+date• Install,(Ge4ng(Started,(Learning• Crash(course(for(Erlang(developers• Links(to(the(community• Code(Editor(support[email protected]$/$Ela$Workshop
Books• Programming)Elixir)1.2• Elixir)in)Ac2on• Metaprogramming)Elixir• Programming)Phoenix• The)Li:le)Elixir)&)OTP)Guidebook• redfour.io[email protected]$/$Ela$Workshop
Tutorials,+Screencasts,+Podcasts...• Elixir'School• Elixir'Sips,'LearnElixir.tv• Elixir'Fountain[email protected]$/$Ela$Workshop
Down%to%Erlang• Programming)Erlang"&"Erlang)Programming• Learn)You)Some)Erlang)for)Great)Good• Erlang)and)OTP)in)Ac9on• Designing)for)Scalability)with)Erlang/OTP[email protected]$/$Ela$Workshop
Developing*an*Elixir*Project[email protected]$/$Ela$Workshop
To#Elixir,#You#mix• From&Ruby?&mix&~=&gem&+&bundle&+&rake• Create,&compile,&run,&test&your&applica:on• Manage&dependencies• Generate&docs,&publish&both&app&and&docs• Credo,&Dialyzer,&etc..[email protected]$/$Ela$Workshop
mix new• Provides*sane*defaults*(project*structure)• Encourages*"best*prac:ces"• Umbrella*project[email protected]$/$Ela$Workshop
Documenta*on+and+Typespec• @moduledoc (false)• @doc• Use%Markdown• Include%some%examples%and%get%them%tested%as%well!• mix docs• @typedoc,%@type,%@typep• mix dialyzer[email protected]$/$Ela$Workshop
[email protected]$/$Ela$Workshop
Tes$ng• ExUnit.Case,#async• Filter#tests#based#on#tags• Seed#random#numbers[email protected]$/$Ela$Workshop
Ge#ng&Help[email protected]$/$Ela$Workshop
Finding&LibrariesFrom:• awesome(elixir• hex.pm,1mix hex.search• git,1or1GitHub• rebar?• Erlang1libsTo:• :only• :optional[email protected]$/$Ela$Workshop
Documenta*on• Elixir,(EEx,(IEx,(Mix,(ExUnit,(Logger• Plug,(Ecto,(ExDoc...(and(Phoenix• devdocs.io• hexdocs.pm• h()[email protected]$/$Ela$Workshop
h()[email protected]$/$Ela$Workshop
General'Help• Style'Guide:'niftyn8/elixir_style_guide• Stack'Overflow...• IRC,'Slack'(#china),'mailing'lists• Meetups• Elixir'Radar'(weekly'newsleGer)[email protected]$/$Ela$Workshop
Contribute[email protected]$/$Ela$Workshop
Publish(your(Library• hex.pm/docs/publish• Register5with5mix hex.user register• Add5package5metadata5in5mix.exs• mix hex.publish• mix hex.docs[email protected]$/$Ela$Workshop
Contribute*by*Coding• github.com/elixir1lang• Other5libs• Other5tools:5devdocs.io,5kiex,5Dockerfile...[email protected]$/$Ela$Workshop
Contribute*by*Wri-ng• Elixir'School• Fix/Improve'documenta8ons• Answer'ques8ons'on'Stack'Overflow,'etc..• Your'own'blogs,'etc..[email protected]$/$Ela$Workshop
Contribute*by*Talking• Join&Slack,&IRC,&mailing2list...• Ask&&&answer• Summarize&good&ones&into&gist,&blog&post..• Give&talks&at&Meetups![email protected]$/$Ela$Workshop
Thanks[email protected]$/$Ela$Workshop