Unleash Your Potential - Namagunga Girls Coding Club
Introduction to Open Source, Apache and Apache Way
1. Introduction to
Open
Source, Apache
and Apache Way
Srinath Perera Ph.D.
Senior Software Architect, WSO2 Inc.
Member, Apache Software Foundation
Visiting Faculty, University of Moratuwa
Research Scientist, Lanka Software
Foundation
2. Outline
• Introduction to
Open Source
• What is Apache?
• Composition of a
Project
• How it work?
• Conclusion
photo by John Trainoron Flickr http://www.flickr.com/photos/trainor/2902023575/, Licensed under CC
3. Open Source Market Share
• Apache (60%)
• Linux (Servers 16%)
• Firefox (25%)
• Tomcat and most of
middleware
• Android (43%)
• Even Microsoft looking
favorably at Opensource
projects
• There are lot of open
source projects bundled
inside the proprietary
Copyright kafka4prez and licensed for reuse under CC License
products , http://www.flickr.com/photos/kafka4prez/198465913
4. What is Open Source?
• Most commercial software does
not distribute the source
code, and developed and
managed in a closed world.
• Idea of open source is to have
the code in the open, and to
improve it though volunteer “There is no delight in
contributions using “open
development” owning anything
• Idea is that the project becomes unshared.”
a eco-system Seneca (Roman
philosopher, mid-1st century AD)
– More ideas
– More developers
– More Testers
– More Bug fixers
5. How does a Open Source Work?
• Open code repository (SVN or
Git etc.)
• Two parts of the community
– Developer Community
– User Community
• Communication through
Mailing lists / IRC Channel
– Develop mailing list
– User mailing list
• Bug tracking database to track
errors (Jira, Bugzilla)
• People submit improvements
as patches through Jira etc.
Committers have write access to repository
Committers review and apply patches, and when you
submit lot of them, they will make you a committer.
6. History of Opensource
• 1970s – UNIX, Emacs
• 1982 - TeX
• 1984-85 - GNU project and
Free Software Foundation
• 1990 - GNU project almost
complete .. well not OS
• 1991 - Linus Torvalds announce
Linux, Phython
• 1993 - Net BSD and Free BSD
• 1994-95 - Linux 1.0 released
• 1995 - Apache, KDE, PHP, Ruby
• 1997 - Genome
http://www.geograph.org.uk/photo/916456
• 1999 Linux 2.2, OpenOffice http://www.fotopedia.com/items/flickr-3320704544
• 2003 - Firefox, Android
7. Why People Contribute?
• As a way to improve your profile
(looking for a Job)
• To gain experience
• To work with “like minded”
People
• To be part of something bigger
• To be a “Geek”
• As a Job – if you a well known
open source developer, chances
are that you will get payed for
contribution
• As a competitive strategy
Copyright U. S. Fish and Wildlife Service and licensed for reuse under CC License
, http://www.flickr.com/photos/usfwsnortheast/4754624921 and Copyright WxMom and
licensed for reuse under CC License , http://www.flickr.com/photos/wxmom/1359996991.
8. • "If a tree falls in a
forest and no one
is around to hear
it, does it make a
sound?”
• “If a open source
project was
developed, but no
one used it, did it
exists?”
http://www.geograph.org.uk/photo/1842872
9. Why People use Open Source
Software?
• It is cheaper
• It is better
• Because it is open source (Religiously)
• More visibility into the code, better
security, auditing
• If there is a problem, I can fix it
• More control over releases, roadmap
• Patches become available faster
• Easy to understand how it works
• Can fork the code if needed
• Not own by one person, less risk to
depend on it.
• Do not have to maintain the code
10. History of Apache
• Apache HTTP Server development started on
1994 based on NCSA HTTP Server
• IBM Stop developing their HTTP Server and
start using Apache
• Apache Officially established at 1999
• June 2010 – 291 Members, 2300
committers, 75 top level projects, 400+
mailing lists and about 2500 emails/day
11. What is Apache?
• It is named after “Native American Nation”
and “A Patchy Server”
• Apache is not a group sharing a server
• It is a community of developers and users
12. What is Apache?
• Framework
– Legal
– Social
– Infrastructure
• Projects
– 97 top level projects
– 50+ incubating Projects
– 2500 commiters .. About
400 members
Copyright Jeff Kubina and licensed for reuse under CC License
, http://www.flickr.com/photos/95118988@N00/416015918
13. What Apache Do?
• Let developers do what they do
best
• Open source vs. source open
• Everyone is equal, a volunteer
(no payment)
• All technical decisions are
public
• Harder you work, louder your
voice will be heard
• No money, donation of
people/time and H/W
http://suttonhoo.blogspot.com/2010/03/what-happens-when-father-of-analytical.html
14. Apache Project
• Code/SVN – this is the code repository
• JIRA – Record of known and fixed bugs
• Mailing list
– Developer List
– User List
• Automated Build
• Website / WIki
16. Apache License
• It is very “Open License”
• You can change and redistribute
• You can do anything pretty much, just keep
the license.
• Can be used commercially
• However, ownership of the code has to be
donated to Apache
17. Apache vs. GPL License
• Both allow
– Free use and Changes (privately)
• Apache can be
changed, combined and
redistributed
• If GPL is changed or
combined, results must be GPL
• Two Philosophies
– “I need as many to use it” vs. “You
cannot make money”
– Business Model :Sell support vs.
Duel License
– I am not going to argue either way
(at least try not to). It is your own
decision.
photo by hans s on
Flickr, http://www.flickr.com/photos/archeon/2359334908/
18. Community
• Community
– Developer
– User
• Community helps each
other
– Even new people can
help others on how to
install stuff etc.
• Every decision is taken in
the mailing list http://www.fotopedia.com/items/flickr-2548697541 ,
• More you work, louder
you will be heard • Diversity requirements
• Never break the build – – People from different
this will drive most nicest Organizations
developer crazy
– No ganging up to
beat someone
19. Open source vs. Source Open(Giving
up control)
• Open source is little bit
more than opening up
the source.
• Initial developers has to
be able to give up
control and welcome
other’s ideas and help
http://www.flickr.com/photos/7726011@N07/4079868523/
21. Communication and taking decisions
• Rule 1: “Giving up
control” is part of the
deal
• Rule 2: Public Mailing
lists. If it did not
happened in the list, it
did not happen. No
private decisions.
• Rule 3: Conflicts are
resolved through Voting
with a “Veto”
• Rule 4: Every one is a
photo by Todd Anderson on
volunteer Flickr, http://www.flickr.com/photos/toddography/12034661
– “Thanks for /, Licensed under CC
volunteering”
22. Voting Process
• Ask for a “Vote” in the list.
• Users vote as
– -1 : We must not do this.
– -0 : I do not like it, but if you really
know what you are doing
– 0 : Neutral
– 0+ : I think it is a good idea
– +1 : I support it
• Note that -1 means a veto
– That means it cannot be done http://misterbijou.blogspot.com/2007_03_01_archi
ve.html
– But veto needs explanation and
• When to ask for vote?
willingness to code an alternative
approach – Commit and review
– Code can be vetoed, but not releases – Review and commit
• Minimum of 3 votes + wait for 72 hours – Decided based on the impact
23. Veto forces Discussion
• Idea of Veto is to
force people to
discuss and
resolve
http://www.flickr.com/photos/novecentino/2596898279/, Licensed CC
24. Avoid Undue influence
• Lot of cooperate
users/ developers
• Avoid one group
controlling
• Achieved through
diversity
• Oversight by the
board and members http://www.artelista.com/ypobra.php?o=19550
25. Meritocracy
• Apache does not recognize
organizations, rather only
individuals
– Individuals holds Any apache
position even when they
change the Job etc.
• Each individual are treated
solely based on his merits to
the project alone
http://www.public-domain-image.com/sport-
public-domain-images-pictures/canoeing-and-
kayaking-pictures/lone-canoe-on-
water.jpg.html
26. How to Start?
• Try things out
• Join the user list
• Read, Read ..
• Start by helping
others
• Fix bugs and patches
• Talk, and explain http://molenda.us/photos/hockey-2006-12-
09/_DSC9580-r.html
27. How to Bring a Project in to Apache
• Submit a Proposal to Incubator
• If accepted, join the incubator. Will have a
champion (who has to be an apache member)
and mentors.
• Receive feedback and improve
• When project has matured and built a
community around itself, it graduates.
28. ApacheCon, Hackathon, Roadshow
• Apache Con (generally
every year at US and EU)
gathering of Apache
developers and users.
• Hackathon – developer
gets together (F2F or
remotely) and work on
specific parts of the
project. A concentrated
effort.
• Roadshow – something
like today’s event
29. This may sounds easy ..
• But it takes years and lot of
work to build a successful
open Source project
• It is not a dump and run for
your code
• Community is the key ..
http://www.flickr.com/photos/mariachily/5250487136,
Licensed CC