SlideShare a Scribd company logo
Levelling Up In
     Open Source
 Going from one coder in their bedroom to
working in a group.

                         Jon "The Nice Guy" Spriggs
            First given at OggCamp '12 - 2012-08-18
Levelling Up... Who am I
•   I am Jon "The Nice Guy" Spriggs.
•   I am a firewall engineer for a major IT
    company.
•   I write rubbish PHP in scratch-my-own-itch
    projects.
•   I created and run CCHits.net.
•   I created CampFireManager.
•   I have organised open source events.
•   When on a stage, I have been told that I
    channel Eddie Izzard. Sorry.
Levelling Up... At the start
Let's say...
• You have an idea.
• You code the solution to that idea.
• You decide that someone else might like
  that idea.
• You create a project on SourceForge Google
  Code Launchpad Github (whew!) and upload
  your code.
What happens next?
Levelling Up... What's next?
Honestly? 99% of projects.... Nothing will
happen.
• In 2010, I found over 400,000 projects
  between just Sourceforge and Google Code.
• GitHub has 1,795,906 non-forked public
  repositories.
• The chances of your software being found is
  slim.
• However.........
Levelling Up... What if?
•   What if you know someone with influence
    who mentions your project?
•   What if you serve a niche market?
•   What if you aren't in a niche market but you
    have the right license/design/architecture?

Then..... maybe you'll attract another person
to your project?
Levelling Up... Person 2 - The
Pitfalls
•   Until now, you can do things "your own way"
    o   Your own coding standard?
    o   Your own naming convention?
    o   Who needs documentation?
    o   What do you mean it doesn't run on your system?
    o   Why bother with ticket trackers and release notes?
    o   Version control? What's version control?
•   But now...
    o   Why are you using X when Y is better?
    o   What does this function do?
    o   How do I get this to work?
Levelling Up... Person 2 - The +ves
•   Getting used to using any VCS means you're
    already in a better place.
•   Documenting how to get the code to work
    means that the users who aren't coming
    forward to join the project stand a chance
    of getting it working.
•   You now each have someone to pass ideas
    with, and get feedback on important
    decisions.
Levelling Up... Person 2 - Comms
•   When there's two of you, it's easy to send e-
    mails, chat on XMPP/MSN/YIM/ICQ or
    (potentially) have a meet up somewhere
    sociable.
•   You will probably not be discussing direction
    in public, it probably won't be documented,
    but it's OK, there's only two of you.
Levelling Up... Person 3
•   Do you give this person direct VCS access as
    well?
•   Do you start to mail both person 1 and
    person 2?
•   What happens with IM?

At person 3, you start to need to think about
making your infrastructure more public, which
leads to more participation, and potentially
more people.
Levelling Up... Services - Mail
•   If you're using a code hosting platform
    which has a mailing list service - turn it on,
    and use it.
•   All discussions around code should occur on
    that list. If it's not on the list, and it's not a
    dispute, it shouldn't help form the direction
    of the project.
•   If you have the ability to set up a split list
    for tickets/check-ins and discussions, do so.
•   Consider ML policies (anti-spam, mods, etc)
Levelling Up... Services - IRC
•   IRC is a text-only chat service.
•   It lets you bring back the participant chat
    you had with IM, but in a public way.
•   You can arrange for channel logging to
    make your discussions public and
    archivable.
•   If you make any decisions about direction,
    create tickets in your issue tracker or send
    emails to the mailing list.
•   IM/IRC is timezone relevant. Consider using
Levelling Up... Services - Tickets
•   Use tickets for everything, whether you're
    just about to apply the code or had a
    brainwave.
•   This is a public way of documenting why
    each line of code went in.
•   It also means that you'll get used to
    handling tickets for non-internal issues and
    developments.
•   Make use of milestones if you've got a
    release or date you're working towards.
Levelling Up... Services - VCS
•   If you can use a distributed VCS, do it.
•   Make sure your code can easily self-build
    (one liner or short script).
•   Branch per-issue, merge when it's fixed or
    when you have working code part way to
    the solution.
•   Tag at key milestones.
•   Try not to have one developer "own" the
    main branch - instead develop on their own
    branch and merge into a core branch.
Levelling Up... Services - Docs
•   If someone is prepared to write about your
    project, set up a blog BUT only if they are
    committed. Nothing worse than seeing 2
    years of silence - especially on a busy VCS
    tree.
•   If not, document in-code or on a wiki. It
    must be clear why and where decisions are
    made.
•   If possible, add ticket references to code
    documentation or check-ins.
Levelling Up... Why do I know this?
•   CampFireManager was my first project with
    4 contributors.
•   I went from 1, to 2, to 5 (including a
    project manager).
•   UCubed was a collaboration between 7
    organisers with different strengths with
    rare opportunity to meet face to face.
•   Many of my projects have fallen into the
    mistakes listed early on!
•   Some of them are still doing them!
Levelling Up In
 Open Source
   Any Questions?
Thank you


SN: @JonTheNiceGuy@jon.sprig.gs
    Twitter: @JonTheNiceGuy
    G+: http://jon.sprig.gs/+
 EMail/XMPP/GTalk: jon@sprig.gs
              CC-0

More Related Content

PDF
PDF
How to write maintainable code - Peter Hilton - Codemotion Amsterdam 2017
PDF
Voxxed Days Thessaloniki 2016 - Documentation Avoidance
PDF
Documentation avoidance for developers
PDF
I Wrote an FFV1 Decoder in Go for Fun: What I Learned Going from Spec to Impl...
PDF
Meeting-avoidance for self-managing developers
PDF
KEY
What is open source?
How to write maintainable code - Peter Hilton - Codemotion Amsterdam 2017
Voxxed Days Thessaloniki 2016 - Documentation Avoidance
Documentation avoidance for developers
I Wrote an FFV1 Decoder in Go for Fun: What I Learned Going from Spec to Impl...
Meeting-avoidance for self-managing developers
What is open source?

Viewers also liked (7)

ODP
Why use version control software
ODP
Installing Gpg
ODP
Resources For Floss Projects
ODP
Routers Firewalls And Proxies - OH MY!
ODP
Using SMS in your personal project
ODP
An introduction to µBlogging
ODP
Identity On The Internet
Why use version control software
Installing Gpg
Resources For Floss Projects
Routers Firewalls And Proxies - OH MY!
Using SMS in your personal project
An introduction to µBlogging
Identity On The Internet
Ad

Similar to Levelling up in open source (20)

PPTX
Open Source Project Management
PDF
Equipment of Contribution
PDF
SummerCamp 2010
PDF
I Want 2 Do Project Tell Me Wat 2 Do
PDF
Créer une communauté open source: pourquoi ? comment ?
PDF
Take the advantage and connect upstream to downstream
PPTX
Opensource Development
PPTX
SAD08 - Working With Others
PDF
Community Over Code: How to Build a Successful Project
PDF
Open-Source Project Tools for Corporate Projects?
ODP
Building Better FLOSS Community Relationships @ FB
PDF
Agile & ALM tools
PDF
Google summer of code 2012
PDF
Beyond The Timesheet
PDF
Contributing to Open Source
PPTX
Open source and then some: An Introduction
PDF
Take the advantage and connect upstream to downstream
PDF
Google summer of code
PDF
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
Open Source Project Management
Equipment of Contribution
SummerCamp 2010
I Want 2 Do Project Tell Me Wat 2 Do
Créer une communauté open source: pourquoi ? comment ?
Take the advantage and connect upstream to downstream
Opensource Development
SAD08 - Working With Others
Community Over Code: How to Build a Successful Project
Open-Source Project Tools for Corporate Projects?
Building Better FLOSS Community Relationships @ FB
Agile & ALM tools
Google summer of code 2012
Beyond The Timesheet
Contributing to Open Source
Open source and then some: An Introduction
Take the advantage and connect upstream to downstream
Google summer of code
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
Ad

Recently uploaded (20)

PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Cloud computing and distributed systems.
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPT
Teaching material agriculture food technology
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Machine learning based COVID-19 study performance prediction
PDF
Modernizing your data center with Dell and AMD
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
A Presentation on Artificial Intelligence
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Review of recent advances in non-invasive hemoglobin estimation
Advanced methodologies resolving dimensionality complications for autism neur...
Cloud computing and distributed systems.
CIFDAQ's Market Insight: SEC Turns Pro Crypto
20250228 LYD VKU AI Blended-Learning.pptx
NewMind AI Weekly Chronicles - August'25 Week I
Teaching material agriculture food technology
Mobile App Security Testing_ A Comprehensive Guide.pdf
Big Data Technologies - Introduction.pptx
Network Security Unit 5.pdf for BCA BBA.
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
NewMind AI Monthly Chronicles - July 2025
Machine learning based COVID-19 study performance prediction
Modernizing your data center with Dell and AMD
Chapter 3 Spatial Domain Image Processing.pdf
A Presentation on Artificial Intelligence
The AUB Centre for AI in Media Proposal.docx
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Review of recent advances in non-invasive hemoglobin estimation

Levelling up in open source

  • 1. Levelling Up In Open Source Going from one coder in their bedroom to working in a group. Jon "The Nice Guy" Spriggs First given at OggCamp '12 - 2012-08-18
  • 2. Levelling Up... Who am I • I am Jon "The Nice Guy" Spriggs. • I am a firewall engineer for a major IT company. • I write rubbish PHP in scratch-my-own-itch projects. • I created and run CCHits.net. • I created CampFireManager. • I have organised open source events. • When on a stage, I have been told that I channel Eddie Izzard. Sorry.
  • 3. Levelling Up... At the start Let's say... • You have an idea. • You code the solution to that idea. • You decide that someone else might like that idea. • You create a project on SourceForge Google Code Launchpad Github (whew!) and upload your code. What happens next?
  • 4. Levelling Up... What's next? Honestly? 99% of projects.... Nothing will happen. • In 2010, I found over 400,000 projects between just Sourceforge and Google Code. • GitHub has 1,795,906 non-forked public repositories. • The chances of your software being found is slim. • However.........
  • 5. Levelling Up... What if? • What if you know someone with influence who mentions your project? • What if you serve a niche market? • What if you aren't in a niche market but you have the right license/design/architecture? Then..... maybe you'll attract another person to your project?
  • 6. Levelling Up... Person 2 - The Pitfalls • Until now, you can do things "your own way" o Your own coding standard? o Your own naming convention? o Who needs documentation? o What do you mean it doesn't run on your system? o Why bother with ticket trackers and release notes? o Version control? What's version control? • But now... o Why are you using X when Y is better? o What does this function do? o How do I get this to work?
  • 7. Levelling Up... Person 2 - The +ves • Getting used to using any VCS means you're already in a better place. • Documenting how to get the code to work means that the users who aren't coming forward to join the project stand a chance of getting it working. • You now each have someone to pass ideas with, and get feedback on important decisions.
  • 8. Levelling Up... Person 2 - Comms • When there's two of you, it's easy to send e- mails, chat on XMPP/MSN/YIM/ICQ or (potentially) have a meet up somewhere sociable. • You will probably not be discussing direction in public, it probably won't be documented, but it's OK, there's only two of you.
  • 9. Levelling Up... Person 3 • Do you give this person direct VCS access as well? • Do you start to mail both person 1 and person 2? • What happens with IM? At person 3, you start to need to think about making your infrastructure more public, which leads to more participation, and potentially more people.
  • 10. Levelling Up... Services - Mail • If you're using a code hosting platform which has a mailing list service - turn it on, and use it. • All discussions around code should occur on that list. If it's not on the list, and it's not a dispute, it shouldn't help form the direction of the project. • If you have the ability to set up a split list for tickets/check-ins and discussions, do so. • Consider ML policies (anti-spam, mods, etc)
  • 11. Levelling Up... Services - IRC • IRC is a text-only chat service. • It lets you bring back the participant chat you had with IM, but in a public way. • You can arrange for channel logging to make your discussions public and archivable. • If you make any decisions about direction, create tickets in your issue tracker or send emails to the mailing list. • IM/IRC is timezone relevant. Consider using
  • 12. Levelling Up... Services - Tickets • Use tickets for everything, whether you're just about to apply the code or had a brainwave. • This is a public way of documenting why each line of code went in. • It also means that you'll get used to handling tickets for non-internal issues and developments. • Make use of milestones if you've got a release or date you're working towards.
  • 13. Levelling Up... Services - VCS • If you can use a distributed VCS, do it. • Make sure your code can easily self-build (one liner or short script). • Branch per-issue, merge when it's fixed or when you have working code part way to the solution. • Tag at key milestones. • Try not to have one developer "own" the main branch - instead develop on their own branch and merge into a core branch.
  • 14. Levelling Up... Services - Docs • If someone is prepared to write about your project, set up a blog BUT only if they are committed. Nothing worse than seeing 2 years of silence - especially on a busy VCS tree. • If not, document in-code or on a wiki. It must be clear why and where decisions are made. • If possible, add ticket references to code documentation or check-ins.
  • 15. Levelling Up... Why do I know this? • CampFireManager was my first project with 4 contributors. • I went from 1, to 2, to 5 (including a project manager). • UCubed was a collaboration between 7 organisers with different strengths with rare opportunity to meet face to face. • Many of my projects have fallen into the mistakes listed early on! • Some of them are still doing them!
  • 16. Levelling Up In Open Source Any Questions?
  • 17. Thank you SN: @JonTheNiceGuy@jon.sprig.gs Twitter: @JonTheNiceGuy G+: http://jon.sprig.gs/+ EMail/XMPP/GTalk: jon@sprig.gs CC-0