Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Asf icfoss-mentoring
1. 1
The Apache Software Foundation
Community Development
Mentoring Programme
India ICFOSS
Luciano Resende (lresende@apache.org)
Community Development, at Apache Software Foundation
2. Open Source Workshop 2
Welcome!
Get to know each other
What would like to gain out of this workshop ?
3. About me
Professionally
Joined IBM Brazil in 2000 as Senior Consultant on Lotus Products
Relocated to IBM US in 2001 to work on Lotus Organization
In 2006, joined the IBM AIM Organization, and started working on new
technologies for WebSphere Application Server in open source
Left IBM in 2010 and joined the Platform & Architecture team at Shutterfly as
Architect/Manager.
In 2012 rejoined IBM as Senior Software Engineer at IBM Big Data & Analytics
group
Open Source
Started working on open source as part of my day job at IBM in 2006 working on
Apache Tuscany.
Currently chair for the Community Development PMC and Wink PMC.
Have created and mentored various projects throughout Incubation
4. Open Source Workshop 4
Day 1 Agenda
Day 1: June 21st
2013
Learn about
Open Source
Open Source Licenses
Open Source Communities
Apache Software Foundation
How to get involved with an Apache project
Apache Incubator
Creating new projects
5. Open Source Workshop 5
Day 2 Agenda
Day 2: June 22nd
2013
Development hands-on
Setup development environment
Subversion
Git
Maven
Development tools overview
Hands-on exercises
6. Open Source Workshop 6
Day 3 Agenda
Day 3: June 23rd
2013
About Mentoring
Expectations from students
Working on project proposals
7. Open Source Workshop 7
Post sessions Follow Up & Questions
Interaction will be through mailing list and open source
Students Mailing List :
students-subscribe@community.apache.org
students@community.apache.org
This presentation is available for download at :
http://people.apache.org/~lresende/presentations/asf-icfoss-mentoring.pdf
9. Open Source Workshop 9
Topics
General knowledge about open source
Importance of Open Source
How it got started
What is Open Source
License
Infrastructure
Community
11. Open Source Workshop 11
Why open source?
-Open source impossible to avoid, Gartner says”, Network World
-http://www.networkworld.com/news/2007/092007-open-source-unavoidable.html
It’s “impossible to avoid”
Gartner 2007 Study:
By 2011, 80% of all commercial software will contain open source code
Forrester 2008 Study:
Study of 2,252 North American and European Software decision makers
done by Forrester: 66% are interested in open-source software….
Open source seems to be a tactic for achieving the high priority
initiatives.
..
Web 2.0 technologies (such as blogs, wikis and RSS) and
Service Oriented Architecture among their major software initiatives.
-“Open source software: Just a Means to an End”, CIO magazine, March 2008
12. Open Source Workshop 12
Why is Open Source important ?
Can be a major source of innovation!
It unites perspectives from a host of disciplines and brings ideas together from all
around the world to
Rapidly solve business issues
Accelerate technological advancements
Stimulate economic growth
Enable new business models
OSS is a good approach for driving emerging open standards
Popular open source projects can become the common implementations
IT can benefit
Increased choice and flexibility
Lower costs
Quick response
world-wide view of an OS project
15. Some Statistics
$1.3 billion Red Hat 2012 revenue
3 million GitHub projects
80% commercial products with open source code
66% market share for Apache HTTP, Nginx and Lighttpd
> 50% market share for Firefox and Chrome
50% blue chip companies fully committed to open source
29% growth rate for Android
31. Open Source Workshop 31
What Is Open Source?
open source refers to software that is published under licenses that
defines how source code can be made available to everyone to
inspect, change, download, and explore as they wish.
Open source is not a software methodology
It is a way of developing ideas and software collaboratively in the open
Open source is about software license
Defines how the developers develop the software
Defines how the users consume the software and contribute back
Defines how the community interacts with one another
32. Open Source Workshop 32
What characterizes an open source?
The community of software users and developers interested to
develop some idea in the open create the open source project
The makeup of each open source project is identified by it’s philosophy, it’s
culture and it’s character defines an open source project.
Community Philosophy: The software license used for the open source
project captures defines its philosophy
Community Culture: Where the open source project is hosted can define its
community culture. For example Apache promotes a different culture than
Eclipse.
Community Character:
Each project can run differently even within a given open source embodiment.
The community decides on how to create, build and maintain the project.
The technology offered by a project can also form the character of the project.
For a project that develops applications will be different than one that develops an
infrastructure.
33. Open Source Workshop 33
Open Source License
License defines the community philosophy
open source refers to software that is published under licenses that defines how
source code can be made available to everyone to inspect, change, download,
and explore as they wish.
There are upward of 71 open source licenses which fall into 3
families:
Give me credit
Give me fixes
Give me everything
34. Open Source Workshop 34
Open Source License Type – Give Me Credit
Examples: AL, BSD, MIT
Typical Characteristic:
Derivatives can sub-license
May have some conditions
No warranty
Credit to original authors required
Limited control by any one entity
Allows for commercial product development
Allows for competing services
35. Open Source Workshop 35
Open Source License Type – Give Me Fixes
Examples: Mozilla (MPL), Eclipse (EPL/CPL), LGPL
Typical Characteristic:
Single entity control, still ‘business friendly’. If you modify the code, you need to
make the modification available
File or derivative based conditions
Original author may have special rights
Differentiate between source and binary
Larger works can be under a different license
Encourages incorporation of code into larger works
Ensures direct development benefits all
36. Open Source Workshop 36
Open Source License Type – Give Me Everything
Examples: GPL (GNU General Public License )
Typical Characteristic:
Also referred to COPY LEFT. If you use it, everything must be under this license
Derivative works remain under the license
Linked works may also remain under the license
Ensures all ‘down stream’ have the same rights
All direct development is contributed back
Contributors assured code remains open source
Encourages a full free software economy
Copyright holder retains much control
Limits commercial adoption: Forbids distribution for profit
Software with this type of license cannot be included in Apache
projects
37. Open Source License Type – Give Me Everything
• GNU AGPL v3.0
“AGPL fixes this “loophole” in GPL by saying that if you use the software over a
network, you are bound by the copyleft. Other than that, the license is virtually the
same as GPL v3.”
• What does it mean ?
it is never required that applications are published/released.
The copyleft applies to internal AGPL Software, meaning that changes to these
software needs to be published even though they have never been
published/released and are only used internally.
38. Open Source Workshop 38
Open Source: Most common Licenses
Apache License, 2.0
BSD licenses
GNU General Public License (GPL)
GNU Library or "Lesser" General Public License (LGPL)
MIT license
Mozilla Public License 1.1 (MPL)
Common Development and Distribution License
Eclipse Public License
Artistic Licenses
39. Open Source Workshop 39
License Compatibility
License compatibility refers to the problem with software licenses
which can contain contradictory requirements, rendering it
impossible to combine code from such packages in order to create
new software packages.
Let’s consider the following scenario:
Code distributed with license A says :"modified versions must mention the
developers in any advertising materials“
Code distributed with license B says : "modified versions cannot contain additional
attribution requirements"
These two licenses are considered license-incompatible. If
someone combine a software package which uses license A, with a
software package which uses license B, it would be impossible to
distribute the combination because the two requirements cannot be
simultaneously fulfilled.
License Compatibility (wikipedia): http://en.wikipedia.org/wiki/License_compatibility
40. Open Source Workshop 40
The Free-Libre / Open Source Software (FLOSS) License Slide (by David A. Wheeler) : http://www.dwheeler.com/essays/floss-license-slide.html
License Compatibility
41. Apache License and third-party licenses
Authorized Licenses
Apache License 2.0
Apache Software License 1.1
BSD (without advertising clause)
MIT/X11
ICU
University of Illinois/NCSA
W3C Software License
X.Net
zlib/libpng
FSF autoconf license
DejaVu Fonts
Academic Free License 3.0
Service+Component+Architecture+S
pecifications
OOXML XSD ECMA License
Microsoft Public License (MsPL)
Creative Commons Attribution (CC-
A)
Creative Commons Copyright-Only
Dedication
Python Software Foundation License
Adobe Postcript(R) AFM files
Boost Software License Version 1.0
Eclipse Distribution License 1.0
License for CERN packages in COLT
Open Source Workshop
Apache third-party licensing policy : http://www.apache.org/legal/resolved.html
42. Apache License and third-party licenses
Excluded Licenses
Binary Code License - BCL*
Special exceptions to the GNU
GPL (e.g. GNU Classpath)*
GNU GPL 1, 2, 3
GNU LGPL 2, 2.1, 3
Affero GPL 3
NPL 1.0/NPL 1.1
QPL
Sleepycat License
Microsoft Limited Public License
Code Project Open License
(CPOL)
Open Source Workshop
Apache third-party licensing policy : http://www.apache.org/legal/resolved.html
43. Open Source Workshop 43
Open Source Project Hosts
Project umbrellas host the open source projects and can influence
the overall culture of a community
Hosts provide infrastructure for open source project referred to as
PRIM:
P (portal), R (repository), I (Issue tracking), M (mailing list)
Can provide legal governance
There are three main types of public open source hosts:
Pure infrastructure
Vendor collaboration
Community focused
44. Open Source Workshop 44
Project Host Type 1: Pure Infrastructure
Examples: SourceForge, CollabNet, Codehaus, googlecode, github
Provide the infrastructure
Sets overall rules (e.g. type of license permitted)
Each project governs itself
Often many small projects
One or two developers, although may have lots of users
Fairly small codebase
Provide an incubator role
Projects start under incubation and move to a more formal community when they
grow
45. Open Source Workshop 45
Project Host Type 2: Vendor Collaboration
Examples: Eclipse, ObjectWeb, Mozilla
Allows companies to collaborate
Specifically acknowledge the role companies have
Consider corporate needs
Closer to commercial software development roadmap
More planning and oversight
(e.g.) have a architectural steering committee
(e.g.) have an official project management committee
Can be more conservative
Eclipse recently created “Eclipse Project Incubator” as a place for
innovation and investigation of new and alternative ideas.
46. Open Source Workshop 46
Project Host Type 3: Community Focused
Example: Apache Software Foundation
Non-profit corporation
No staff, all volunteer
Elected membership
Primary goal is to foster open source communities
Provide technical infrastructure
Provide legal oversight
Projects start under incubation and once they demonstrate they can run as a
healthy Apache type project they graduate into an Apache top level project.
Technocratic Meritocracy
People earn status by what they do
Project communities are very independent
Project Management Committee (PMC) is a legal construct
Binding decisions e.g. to release software
Community decides direction and priorities
47. Open Source Workshop 47
Examples of Open Source projects
Apache
Web Server
Community initiated (apache.org)
Linux
Operating System kernel
Individual initiated (Linus Torvalds)
Eclipse
Universal Integration platform
Extensible application framework
supporting solution based plug-ins
IT Vendor initiated (IBM and
others)
Mozilla
Browser and client technology
Hybrid (Netscape + community)
49. Open Source Workshop 49
Traditional Commercial Software
Separate User and Developer Community
Feedback provided through Beta and early adaptor programs
Agile development model can help to provide more frequent
feedback
USERS
“use the software”
DEVELOPER
S
“produce
the
software”
50. Open Source Workshop 50
Mixed Commercial – Share Code
Code Is developed in the open and can be used readily
Users provide feedback, but can’t modify the main repository
Software is typically not free or a more advanced form of it is
licensed
USERS
“use the software”
DEVELOPER
S
“produce
the
software”
51. Open Source Workshop 51
Open Source – Collaborative Environment
Code Is developed in the open and can be used readily
Users can become involved in the development of the software
USERS
“use the software”
DEVELOPERS
“produce
the
software”
52. Open Source Workshop 52
Start of an Open Source Project
Open Source projects typically start with
A smaller developer community who have an idea to develop
One or more users who can use the software
USERS
DEVELOPER
S
“produce
the
software”
53. Open Source Workshop 53
Who are the developers?
A group of people interested to develop some idea in the open
collaboratively.
Because ..
They want to create software that solves their business problems
Want to test new ideas in the market
Want To participate in new technology development
Want To test validity of standards through collaboration with users
Maybe they get paid by an employer, it’s their job.
Maybe it is just interesting to get involved in new technology!
Participation in a successful project can open the door to fame and recognition
…….
There is no magic answer. This makes it good challenge to analyze how to attract developers for each
project
IMPORTANT: Anyone interested can join in to help with the
development
No invitation is required! Just get involved in what is interesting to you and share your
thoughts with the community.
People from different backgrounds participate in open source. The key is to not be shy
about not having a high command of a given language. Source Code and technology
ideas become the common language.
54. Open Source Workshop 54
Open Source Project
Open Source Brings Users and Developers together to
Invent, develop, share experience, improve
Overtime, users join the developers community to influence what they use (care
about).
USERS
“use and
produce
software”
DEVELOPERS
“produce the
software”
55. Open Source Workshop 55
Open Source Project
A successful Open Source Community is an integrated user and
developer community who together they
Invent, develop, share experience, improve
DEVELOPERSDevelopers
& users
contributing
Pure
users
56. Open Source Workshop 56
Open Source Project
Open source project grows as users get more involved and new
developers join the project.
Growth and adoption makes the project more stable and brings in
innovations.
growth
Developer
s
& users
contributin
g
DEVELOPERS
Developers
& users
contributing
Pure
users
Pure users
57. Open Source Workshop 57
Why is Community Important?
Code with
Community
Code without
community
Time
Factor of
Success
Community = Stability
ApacheCon 2006, Aaron Farr, www.cubiclemuses.com
58. Open Source Workshop 58
How to Grow a Community?
• Prerequisites
Attractive Code Qualities
Communication Infrastructure
People who believe in the project and help it grow
DEVELOPERS
Developers
& users
contributing
Pure users
developers
?
How to
Get here
59. Open Source Workshop 59
Attractive Code Qualities for Starting OS projects
Directly used by and useful to developers
Builds
Follows common standards where applicable
Modular and flexible
Consistent
Enough documentation to help new developers to get started
Enough test examples to help new developers to get started and be confident to test
their changes
Can be improved
Does not have to be functionality complete (Tough concept to grasp)
Incremental, smaller checkins accompanied with discussions with the community get the community more involved and
enables others to participate in building the software.
60. Open Source Workshop 60
Communication Infrastructure
Source code repository
Issue Tracking
Defines how problems can be reported.
Provide a way to organize handling of many different ideas, feedbacks, etc.
Website
First impression of the project is from the website. It is important to have a good website
which clearly states objectives and introduces the visitor the to project
Most developers don’t find this a fun thing to do! Find ways to make it happen.
Documentation
User documentation : Focuses on how to use the project
Developer documentation: Focus on how to get involved
Caution: ‘code talks’ does not work 100%. It is worth to spend time to share information
Mailing list, newsgroup, or forum
Communication should be open
Engages everyone and solicits new ideas and participation
Communication should be archived
Archived information can be used to search for problems that were discussed before
Provides a reference for decisions that were made
61. Open Source Workshop 61
How to attract a community?
Good product and frequent releases
Good documentation
Examples of how to use the software
Modular and flexible
Lowers the barrier to entry for developers. Let’s them focus on areas that they are interested
in
Facilitates adoption by allowing users to pick and choose what they need. Lower footprint.
Have an open, inviting environment
Mentor new people to learn the project and feel comfortable to contribute
But, that’s not enough!
People need to know about your project to download and use it or come to the site to
participate.
Talk about the project and how it solves the given business problem through Conferences, Forums,
Articles, …
62. Open Source Workshop 62
Summary
Open Source brings Users and Developers from all around world
together to invent, develop, share ideas, …
Community is the heart of Open Source
Community = stability
Starting and growing of an open source project requires
Code
Infrastructure
And, dedication and effort to build the community
64. The ASF
What is the ASF ?
What does the ASF do ?
Name some ASF projects you know ?
Have you used/contributed to the project ?
65. The ASF
➡ ASF == The Apache Software Foundation
➡ Before the ASF there was “The Apache Group” (~2006)
➡ But we needed a more formal and legal entity
➡ The ASF was incorporated in 1999
➡ Governed solely by members - 100% member based entity
66. The ASF
➡ Non-profit corporation founded in 1999
➡ 501( c )3 public charity
➡ Volunteer organization (The ASF doesn’t pay anyone to work on
Apache projects)
➡ Virtual world-wide organization - Membership of Individuals
➡ Exists to provide the organizational, legal, and financial support for
various OSS projects - let the developers develop
67. The ASF
April 13, 1999 - The first official meeting of the Apache Software Foundation (not pictured).
68. The ASF
Why call ourselves Apache ?
No, it isn’t an attack helicopter
A Patchy Server? Nope, that’s just a pun.
A reference to our development philosophy:
“Characteristic of both Eastern and Western Apache, with the exception of the
Kiowa Apache, was the lack of a centralized tribal organization. The band, an
autonomous collection of small local groups within a given locality, was the
primary political unit as well as the primary warring and raiding unit. The
strongest headman of the local groups was recognized as an informal chief, and
several bands might be united under one leader. Chieftainship was thus not
generally hereditary.” Encyclopaedia Britannica
69. At the start
➡ There were only 21 members
➡ And 2 “projects”: httpd and Concom
➡ All servers and services were donated
70. Today...
➡ We have 468 members...(!)
➡ and 59 emeritus member
➡ >100 TLPs
➡ >30 Incubator podlings
➡ 36 Labs
➡ 16 in the Attic
➡ Tons of committers (literally)
➡ (Over 3000 people)
71. Apache Mission
Provide open source software to the public free of charge
Provides a foundation for open, collaborative software development
projects
supplies hardware
Supplies communication, and business infrastructure
Create an independent legal entity to which companies and
individuals can donate resources and be assured that those
resources will be used for the public benefit
Open Source Workshop 71
72. The ASF’s Mission
Provide a means for individual volunteers to be sheltered from legal
suits directed at the Foundation’s projects
Protect the ‘Apache’ brand, as applied to its software products, from
being abused by other organizations
Provide legal and technical infrastructure for open source software
development and to perform appropriate oversight of such software
73. Vision Statement
➡ The Apache Software Foundation provides support for the Apache
community of open-source software projects. The Apache projects
are characterized by a collaborative, consensus based development
process, an open and pragmatic software license, and a desire to
create high quality software that leads the way in its field. We
consider ourselves not simply a group of projects sharing a server,
but rather a community of developers and users.
75. Structure of the ASF - legal
➡ Member-based corporation - individuals only
➡ Members nominate and elect new members
➡ Members elect a board - 9 seats
➡ Semi-annual meetings via IRC
➡ Each PMC has a Chair - eyes and ears of the board (oversight only)
77. Staying true
➡ Policy still firmly in the hands of the ASF
➡ Use outsourced help where needed
➡ Help volunteers, not replace them (if they want to do the work)
➡ Only for administrative efforts
➡ 3 FT sys-admins, 1 PT sys-admin
➡ 1 PT Exec Assistant
➡ Infrastructure itself is a service provided by the ASF
78. Staying true
➡ Board/Infra/etc exists so projects and people don’t need to worry
about it
➡ The ASF exists for the projects, the community and the
membership.
➡ Our “best practices” have proven themselves time and time again to
work.
➡ The board runs the foundation
The PMCs run the projects
(and rarely do the 2 interact)
79. Overview
➡ In general, PMCs are active and healthy!
➡ Lots of releases
➡ Lots of development
➡ New committers and PMC members
➡ New podlings being added (eg: CloudStack)
➡ New projects being graduated (eg: OpenOffice)
➡ ASF continues to be recognized as FOSS leader
80. Protection
➡ Ensuring that IP is checked (oversight and governance)
➡ Tracking and handling any legal issues
➡ Protecting the ASF brand and trademarks
81. 14 Years is a LONG time
➡ Over a decade of declarative discussion and development
➡ We must be doing something right
➡ By maintaining our focus on the right direction - the projects and community
➡ Not all things to all people, and we don’t want to be
➡ Growth, improvement without speciation
➡ The “Apache Way” continues to be a sought-after topic at cons.
82. Open Source Workshop 82
Apache License
Apache License Philosophy
To allow the maximum use of our software for any purpose and by all people.
Give me Credit type
Requires Attribution via a NOTICE file
Credits to original author is required, derivatives can sub-license
No Trademark Grant
Includes patent grant
A liberal open source software license
Business friendly
Easily reused by other projects & organizations
83. Open Source Workshop 83
Apache Infrastructure
Provide legal and technical infrastructure for open source software
development and to perform appropriate oversight of such software
provide a foundation for open, collaborative software development
projects by supplying hardware, communication, and business
infrastructure
Portal (confluence and moin moin wikis, content management for website)
Repository for source, SVN and GIT for source control
Issue Tracking, JIRA and Bugzilla for bug tracking
Mailing Lists, all the communication
Also provides integration build infrastructure and many more
84. Open Source Workshop 84
Apache Roles
User Contributor Committer PMC ASF Member
Less Involvement More Involvement
Apache Contributors/Committers are viewed as individual
contributors, independent of their potential company affiliation
Individuals are recognized for their contributions and can assume
more responsibility.
Products are owned by project community.
Emphasis on community stewardship.
Aaron Farr, http://www.slideshare.net
85. Open Source Workshop 85
Apache Roles Definition (1 of 2)
User
Uses the software and provides feedback in the form of bug or feature requests.
Contributor/Developer
Contributes to the development of the project.
Takes the extra steps to participate in the project: Active on the mailing list,
participate in discussions, provide patches, documentation, website updates, new
features, etc.
Committer
Committer is a developer that has been given write access to the code repository
and has a signed Contributor License Agreement (CLA) on file. They have an
@apache.org mail address
86. Open Source Workshop 86
Apache Roles Definition (2 of 2)
PMC (Project Management Committee) Member
Each project has a project management committee who makes decisions for the project,
such as software releases and community related decisions.
A committer become a PMC member as a result of their involvement in the community
matters related to the project.
PMC Chair
The Chair of a Project Management Committee (PMC) is appointed by PMC Members.
The Chair is the interface between the Apache Board and the Project. He/she reports status
of the project on a regular basis.
Apache Software Foundation (ASF) Member
An ASF member is a person that was nominated by current members and elected due to
merit for the evolution and progress of the foundation. Members care for the ASF itself.
87. Open Source Workshop 87
The Apache Philosophy – “The Apache Way”
Meritocracy – It’s about what you do, those who contribute decide
Peer to Peer
We work with people, not companies.
Committers and members should hold one another with respect.
All votes hold the same weight.
Community over code.
Consensus decision making
Most decisions made on mailing list without voting, sometimes by way of lazy consensus
Typically use Wikis for proposals and design sharing
Voting rules : Yes (+1) Abstain (0) No (veto or -1)
A -1 veto requires proposal of an alternate solution
Open, online communication
Email lists are preferred form of communication. The most used and preferred
Most communication is publicly archived.
Most lists are open to any subscriber
Responsible oversight
Security is mandatory
Ensure license compliance
Release only high quality software
No abuse of Apache brand or community
88. Open Source Workshop 88
What is Karma ?
A Buddhist/Hindu conceptions of the sum of a person's actions
which dictate his future (lives).
Now, with regards to open source, your good actions and
contributions come back to you as “karma” or “permission to a given
resource” (e.g. when you become a committer, you receive karma to
source code repository).
89. Open Source Workshop 89
How to Become a User?
Simply download and use the open source project.
Report bugs
Talk to the project community through user mailing list
Ask questions that will help you build your solution
Provides feedback to the project
Usage feedback is important - Examples, here is how we are using the project.
It is working well in these cases and it can be improved in these cases.
Helps the developers to create software that addresses real use case scenarios.
Creates a user community who can help each other to use the software properly
90. Open Source Workshop 90
How to become a contributor/developer?
Actively participate on the project mailing list by answering user
questions, contributing to design discussions, etc.
Start providing fixes (patches) and small enhancements to code,
documentation, website.
91. Open Source Workshop 91
How to become a committer ?
Projects recognize contribution and extends the committer role to
high contributors. This means:
Write access to code and an @apache.org mailing address. It requires a signed
CLA in place.
One gains committer status through contribution as well as by
gaining the trust of the PMC.
The criteria is really defined by the character of each project, that is what PMC
believes is important to the project. What is important to that project. Some
general characteristics:
Dedication
Attention to code quality and project guidelines
How well this person collaborates with the rest of the community
How openly they work
92. Open Source Workshop 92
How to Get Involved with Apache?
Apache is a non-profit organization run by volunteers
Apache sponsors can provide monetary support:
http://apache.org/foundation/sponsorship.html
It is the closest and most direct method for a corporation or individual to support
the ASF
The ASF provides the infrastructure for the projects - the mailing lists, code
repositories, bug tracking systems, etc. While all of the administrative effort is
currently through unpaid volunteers, financial assistance to purchase bandwidth
and keep servers running is required.
If interested to get more involved with ASF, start with the above link
93. How to get involved with
Open Source Projects?
Open Source Workshop 93
IBM Software Group
95. Getting Involved
Quality Assurance
Bug Fixers
Tech Writers
Level one support
Issue Tracker
Mailing List
Web Site
Be proactive
Begin with the end in
mind
Put first things first
Seek first to
understand
Think Win-Win
Synergize
Open Source Workshop 95
96. Open Source Workshop 96
I have been hearing a lot
about this open source
project called Apache
Tuscany. How can I learn
more about it ?
Get to know the project
Learn about the project
Project overview and subproject pages
Ask questions on the project mailing list
Subscribe to the mailing list and talk to
the community
Ask questions. Any questions is good
Download distribution
Typically latest release is the best to start with
Run getting started tutorial
Run samples, demos
Use samples and demos to better understand
how to use the project and learn details about
it’s features
97. Open Source Workshop 97
For service composition
& management
For Data Handling
Project Overview: http:/tuscany.apache.org
98. Open Source Workshop 98
How to ask questions?
Note: Send an empty email to get registered.
You will get an email that you need to reply to. Simply reply, no text. This
Activates your subscription
• You can always unregister yourself
•Once registered, you will see other user questions once on this mailing list
99. Open Source Workshop 99
How to develop applications
How to help with Tuscany development and extend it
Documentation
100. Open Source Workshop 100
I have started using
Apache Tuscany. How
can I get more involved ?
Getting Involved
Check “Get involved” page. It
explains some ways to get
involved.
Report a problem:
Report problems via JIRA
Describe problem and attach a test
Provide input
Features that are important and provide
use cases to help the community
understand why something is important
Provide feedback based on your
experience
Become a reference for the project
103. Open Source Workshop 103
How do I create a JIRA?
JIRA System
If first time user, create a login
account: User id and password
You define your own user id and
password
If not a first time user, login to
create a JIRA or to update a JIRA
104. Open Source Workshop 104
Creating a JIRA
•Provide a one liner summary that describes
the issue
•Select the area that was affected
•Select the version of the code that you are
using
•Provide necessary environment information
•Provide detailed description and any stack
traces on the description
•Provide a test case to reproduce if can be
done
105. Open Source Workshop 105
Subscribing and using the mailing lists
Different mailing list types
User – Used by users to ask questions or help each other
Development – Used by developers to discuss designs, releases, roadmaps. JIRA updates
get routed to this mailing list
Committs – where code commits are sent to. A good way to see what is progressing in the
project
You can subscribe, unsubscribe or watch archive of these mailing lists. You
cannot respond to emails from archive.
Subscribing to Tuscany user list
<list>-subscribe@<project>.apache.org
<e.g.> user-subscribe@tuscany.apache.org
Unsubscribing from Tuscany user list
<list>-unsubscribe@<project>.apache.org
<e.g.> user-unsubscribe@project.apache.org
Browsing Tuscany Mailing Archives
http://www.mail-archive.com/
http://apache.markmail.org
http://mail-archives.apache.org/mod_mbox/
106. Open Source Workshop 106
Asking questions on the project mailing list
Feel VERY COMFORTABLE to ask ANY kind of questions to help you understand
the project. There is no bad or good questions.
Remember that the project is a community effort and most people working
on the project are volunteers.
The way you ask questions can play in how you get answers
You get quicker answer if you share information about how your investigation went and
where you are blocked
Search archive mailing list and FAQ to see if you can find your answer.
Search mailing list archive for similar topics
Clear questions get clear answers
Here is a nice guide for how to ask questions: http://www.catb.org/~esr/faqs/smart-questions.html
107. Open Source Workshop 107
Asking questions on the project mailing list
Use meaningful, specific
subject headers
Not helpful: HELP!
Better: Webservice Error when running
App
Be precise and informative
about your problem
Describe the symptoms of your problem
or bug carefully and clearly.
Do the best you can to anticipate the
questions someone could ask back, and
answer them in advance in your request
for help.
Volume is not precision
How to Ask questions the Smart Way : http://www.catb.org/~esr/faqs/smart-questions.html
108. Open Source Workshop 108
I think Apache Tuscany is a
great project to get involved
with. I like the idea and the
technology. How can I get
involved?
How to Contribute?
Identify what areas you’d like to get involved
in
Find JIRAs (reported problems) to fix in
that area
Share with the community that you’d
like to help and which areas you are
interested in. They’ll help you find
pieces
Check out roadmap (if there is one)
Download Code
Typically the ‘latest’ code branch is also
referred to as trunk
Read relevant developer documentation
guides such as architecture doc, etc.
Check out development guideline if any. It
usually has good hints for how to build and
get started
Learn how the code works via samples,
109. Open Source Workshop 109
Java SCA
Open defects
Finding JIRAs to fix, good starting point
110. Open Source Workshop 110
• Anyone can read the code
• Anyone can provide a patch
• Only committers can write to the repository
• There are different subprojects under Java
(SCA, SDO, DAS, ..)
Download the code
111. Open Source Workshop 111
• DAS – Data Access Object
• SCA – Service Component Architecture
• SDO – Service Data Object
•Developers Guide with general info on how to check out code and build is on :
http://tuscany.apache.org/sca-java-development-guide.html
112. Open Source Workshop 112
How do I learn more
about a release?
Exploring open source releases
Download the release
There is a binary and source distribution
for each supported platform
Check important distribution
artifacts
RELEASE_NOTES
CHANGES
Learn how the code works via
samples, tests
113. Open Source Workshop 113
Tuscany Binary and Source distribution
Java SCA source distribution
- Demos
- Distributions
- Integration Tests
- Implementation Modules
- Samples
- Tools
- Tutorial
Java SCA binary distribution
- Demos
- Binary Dependencies
- Tuscany binaries
- Samples
- Tutorial
114. Open Source Workshop 114
Running a sample from a distribution
cd tuscany-sca-1.2.1-incubatingsamplescalculator
ant run
Buildfile: build.xml
run:
[java] 3 + 2=5.0
[java] 3 - 2=1.0
[java] 3 * 2=6.0
[java] 3 / 2=1.5
115. Open Source Workshop 115
I have found this bug,
and have a fix for it. How
can I give it back to the
Tuscany Project ?
Contributing your fixes – Patch process
Communicate to the community
that there is an issue by creating a
new JIRA issue
Bugs
New Features
etc
Discuss any design issues,
doubts, etc on the dev-list.
Provide a patch
116. Open Source Workshop 116
Contributing your fixes – Patch process
Configure your svn properties
https://svn.apache.org/repos/asf/tuscany/java/etc/svn-props
Checkout the code
https://svn.apache.org/repos/asf/tuscany/java/sca/
Use svn client or TortoiseSVN
Modify a file(s)
Edit modules/pom.xml
New files need to be added
svn add
Check modified files
svn status
Generate patch
Svn diff > my_updates.patch
Attach the patch to the related JIRA. If a
JIRA does not exist, create one.
Make sure you grant Apache License
Make sure you mark the flag that says a patch is
included
Someone in the community will pick up
the patch, review it and apply it or ask for
more information.
117. Open Source Workshop 117
Summary
Getting involved in Apache Tuscany is easy
Check Get involved
Subscribe to the right mailing list and ask questions, provide your input and
contribute
Plenty of choices:
Report problems via JIRA
Provide patches
Contribute samples, scenarios
Provide feedback on the project is working for you
Contribute code
Help with the website content, documentation
……..
Any contribution is valued
118. Open Source Workshop 118
List of Apache Projects
Apache TLPs
http://projects.apache.org/indexes/quick.html
Apache Podlings
http://incubator.apache.org/
Apache Labs
http://labs.apache.org/
119. Open Source Workshop 119
Home Work – Find a project of your interest
Familiarize with the project resources
Web Site
Documentation
Subscribe to development and user list
120. How to Start an Apache Project?
Open Source Workshop 120
121. Open Source Workshop 121
Incubator Projects
Apache projects start as incubator projects that are overseen by
incubator PMC. They are called podlings.
Once a project demonstrates it can behave as a ‘good’ Apache
citizen, it graduates to a top level project
It is a worthy and healthy project: diverse and will sustain itself
It truly fits within the ASF framework
It “gets” the Apache way
Useful code
Working Communication infrastructure
Active developers
Dedicated users
122. Open Source Workshop 122
About Apache Incubator
Apache incubator is the entry path into The Apache Software Foundation
(ASF) for projects wishing to be part of the foundation’s effort.
Details about Apache Incubator at
http://incubator.apache.org/
The Apache Incubator have two main goals :
Ensure all donations are in accordance with the ASF legal standards
Develop new communities that adhere to our guiding principles
Incubator PMC provides oversight for new projects on the following areas :
responsible for the acceptance and oversight of new products submitted or proposed to
become part of the Foundation
Ensures that the projects develop products according to the Foundation's philosophy and
guidelines for collaborative development
Legal – ensures donation are in accordance with legal standards
Community – helps develops communities that adhere to guiding principles
Regularly evaluates products to determine if the product should be abandoned, continue to
receive guidance and support, or proposed to the board for promotion to full project status as
part of an existing or new Foundation PMC;
123. Open Source Workshop 123
How to Start a New Incubator Project?
Detailed Guidelines at this link:
http://incubator.apache.org/guides/proposal.html#preamble
Starts with a proposal… Formulate your proposal
Find a champion. The Champion is a person associated with ASF already and helps move
the proposal forward.
Identify mentors from ASF or ask for volunteers
Find a sponsoring organization for the project. This could be:
The Apache Board
The incubator
Another Apache Project
Post the proposal in plain text in a email whose subject is prefixed with [PROPOSAL] at
general@incubator.apache.org
Example: [Proposal] Photo Share Project for incubation
If there is interest, the proposal gets discussed. Expect to revise your proposal with
input from the general discussion. Be Responsive and inviting.
Once there is consensus on the proposal, post in a email proposal whose subject is prefix
with [Vote].
Example: [Vote] Photo Share Project for incubation
When Incubator PMC approves the project, mentors help set up the infrastructure (PRIM) for
the project.
124. Open Source Workshop 124
Tips for Building a successful project
Make sure there is enough help/resource to jump start and drive the project
Set clear expectations (pathway)
Community should understand the purpose and focus
Don’t worry about duplication
Be willing to break up
Open communication - extremely important
Be inviting and help others to come on board
Promote the project (blogs, conferences, articles)
Release often and regularly
Good documentation and website
Lower the barrier to entry
Integrate with other Apache projects if it makes sense
Watch how other successful projects behave and work
Use your mentors and the incubator PMC effectively
Focus on creating a diverse and stable community
And, be Patient.
134. Git
Distributed source control repository
Regular project structure
Trunk – current development
Branches – parallel development
Tags – snapshots (e.g. release tags)
Open Source Workshop 134
135. Git useful commands
• Checkout source code
git clone http://www.company.com/repo/project/trunk
E.g : git clone git://git.apache.org/wink.git
• Update current checkout
git pull --rebase
• Check status of current checkout
git status
Check differences
git diff
git format-patch >> changes.patch (create a patch with the current diff)
Rollback changes
git reset –soft / --hard
git checkout file
• Add new file
git add file/directory
• Commit files
git add file // git commit –a –m”Describe the contents of your commit”
git commit –a –m”Describe the contents of your commit”
git push
git svn dcommit for git-svn bridge
Open Source Workshop 135
136. Git branch workflow
Clone the repository for the first time
git clone git://git.apache.org/wink.git
Update the repository
git pull –rebase
git svn rebase for git-svn bridge
Workflow
git checkout –b JIRA-101 creates a new branch
git commit –a –m”JIRA-101 – My updates” commit all files changed
git commit –a –amend updated commit with new changes
git rebase master get changes from master
git push push changes to remote repo
git svn dcommit push changes in case of git-svn bridge
git checkout master goes back to master branch
Updating a branch with changes from master
git rebase master
Open Source Workshop 136
137. Git hands-on
Find an ASF project using GIT
Play with the basic GIT commands
Open Source Workshop 137
139. What is Maven
A Java project management and integration build tool
Based on the concept of XML Project Object Model (POM)
Favors convention over configuration
Project Structure
Repository Layout
Etc
Modular build platform
Extensible via plugins (a.k.a MOJO’s)
Open Source Workshop 139
144. Maven Project Configuration
Configuration is entered in XML format in a Project Object Model or
POM
Projects are structured in a hierarchy and project configuration is
inherited by sub-projects
If no parent is specified, parent is called “Super” or “Parent POM”
Open Source Workshop 144
146. Maven useful commands
Build
mvn clean install
Build in offline mode
mvn clean install -o
Build and force updating/downloading dependencies
mvn -U clean install
Build without executing unit tests
mvn clean install -Dmaven.test.skip=true
Build and report errors only at the end (fail at end)
mvn -fae clean install
Build and don’t report errors (fail never)
mvn -fn clean install
Execute only one test case
mvn -Dtest=ComponentServiceReferenceTestCase
Clean is optional, but omitting it might cause
unexpected issues.
Open Source Workshop 146
147. Maven useful commands
• Put maven in debug mode
mvnDebug
• Identify 3rd
party dependencies with maven dependency plugin
mvn dependency:analyze
mvn dependency:copy-dependencies
mvn dependency:tree
Open Source Workshop 147
148. Maven with Eclipse
Maven Eclipse plugins
The goal of the Eclipse m2eclipse project is to provide Apache Maven support in
the Eclipse IDE, making it easier to edit Maven's pom.xml, run a build from the
IDE and much more. For Java developers, the very tight integration with JDT
greatly simplifies the consumption of Java artifacts.
http://download.eclipse.org/technology/m2e/releases
Open Source Workshop 148
150. Github Project
Create a github java project
Create new repository
Create a maven java project
Add some business logic
Add tests to verify your business logic
Build
With tests
Without tests
Open Source Workshop 150
151. Github collaboration
Provide a patch for your colleague project
Do a simple change on your colleague project
Submit a pull request
Add a bit more change (simulating a update based on feedback)
Submit a pull request
Owner should accept pull request and merge changes
If you can’t find an owner, I will create a simple project and you can use that
My github account : lresende
Open Source Workshop 151
156. Why Mentoring ?
What to expect from the mentor
Will help you get familiar with the open source community, and help you interact
with the existent community
Your mentor might also help with technical questions/issues, but this might not be
a complete requirement
159. Google Summer of Code
Goals
Inspire students to engage in open source development and also give them more
exposure to real-world software development scenarios
Eligibility Requirements
Must be 18 years old by program announcement/start
Must be a student.
160. Google Summer of Code
Restrictions
Code only
Summer only
Students only
161. Google Summer of Code
How it works ?
Project Ideas Project Proposals
Mentoring
&
Evaluations
162. Google Summer of Code
Google Summer of Code web page
http://code.google.com/soc/
Google Summer of Code FAQ
http://code.google.com/soc/2009/faqs.html
Google Summer of Code discussion group
http://groups.google.com/group/google-summer-of-code-discuss
IRC Channel
IRC Freenode #gsoc channel
164. Google Code-In
Goals
Inspire young students to engage and contribute to open source communities
Eligibility Requirements
Must be between 13-18 years old
Must be a student.
165. Google Code-In
Google Code-In web page
http://code.google.com/opensource/gci
Google Code-In FAQ
http://code.google.com/opensource/gci/2010-11/faqs.html
167. Apache Mentoring Programme
Goals
Foster a greater community around the various Apache Projects
Introduce The Apache Way to people new to Apache and open source in general
173. Programme Information
Mentoring Programme Page
http://community.apache.org/mentoringprogramme-icfoss-pilot.html
Open Source Workshop 173
174. Schedule
June 20 Local Workshop at ICFOSS headquarters in Kerala - India
June 24 - July 12 Would-be student participants discuss application ideas with ASF projects
July 15 Students project proposal submission opens
July 19 Students project proposal submission deadline
July 22 - August 02 Mentors review and rank students project proposals
August 05 Accepted student proposals announced
August 05 Students start coding their project proposal with Mentor guidance
September 09 Mentors and students can begin submitting mid-term evaluations
September 13 Mid-term evaluation deadline
October 21 Suggested 'DCUT' date, where students should then scrub code, enhance documentation.
October 28 Mentors and students can begin submitting final evaluations
November 1 Final evaluation deadline
Open Source Workshop 174
175. Finding Apache Projects
List of Apache Projects
http://projects.apache.org/indexes/quick.html
List of Incubator Projetcs
http://incubator.apache.org
Open Source Workshop 175
176. Finding Project Ideas
ICFOSS Project Ideas
http://s.apache.org/icfoss2013ideas
Google Summer of Code Project Ideas
http://s.apache.org/gsoc2013ideas
177. The workflow
Select
an area of
interest
(e.g. Cloud,
Big Data, Services)
Find an Apache
Project
on that area
Find
JIRA (ideas)
for that Project
Contact Mentor
that submitted
the idea
Start creating
your project
proposal
Discuss/Review
project proposal
with mentor
(using dev list)
ICFOSS Project Ideas
http://s.apache.org/icfoss2013ideas
Google Summer of Code Project Ideas
http://s.apache.org/gsoc2013ideas
List of Apache Projects
http://projects.apache.org/indexes/quick.html
List of Incubator Projetcs
http://incubator.apache.org
178. Creating your project proposal
Start as early as possible
The earlier you start working on your proposal the higher is your chance to get
accepted.
Focus on quality
Make one good proposal, instead of few half baked ones
Get involved in the project community
Subscribe to the development list and discuss your proposal with your mentor and
others on the community
Be descriptive when writing the proposal
Describe in detail the idea being proposed, and how is your approach to
implement it.
Describe the technical details (this shows you have a clear idea of what needs to
be done). Some high level system diagrams is a plus.
Write a timeline
Include a detailed schedule of your project
Open Source Workshop 178
179. Examples of project proposals
Searching artifact across SCA Domains
https://cwiki.apache.org/confluence/display/TUSCANYWIKI/Searching+artifacts+across+SCA+domain
GIMPLE to GRAPHITE transformation
http://students.fim.uni-passau.de/~grosser/gcc_soc/
Nmap Scripting Engine – Infrastructure Manager
http://opendz.org/users/tixxdz/gsoc/gsoc_2010_proposal_nmap_scripting_engine_short_version.pdf
Open Source Workshop 179
181. Notice
This presentation contains contents from “Secret Life of Open
Source” slides, originally created by “Ted Husted”.
This presentation contains contents from “The State of the Feather”
slides, originally created by Jim Jagielski, which are licensed under
a Creative Commons Attribution 3.0 Unported License.
Open Source Workshop 181
184. How companies use open source
Internal forking
Pros
Quicker to produce fixes for
internal
environments/deployments.
Cons
Requires deep knowledge
of the source code
Can’t easily move to new
releases
If a must, at least
maintain a internal
branch for the fork
Open Source Workshop 184
Trunk
Release 1.x
Release 2.x
Internal fork
185. How companies use open source
Partial forking, where
fixes are provided back to
community
Pros
Quicker to produce fixes for
internal
environments/deployments.
Fixes are provided to the
community
Provide a path for moving
to new releases
Cons
Depending on how often
codes are contributed back,
things can get very apart
Open Source Workshop 185
Trunk
Release 1.x
Release 2.x
Internal fork
186. How companies use open source
Working on the
community
Pros
Always in sync with latest
fixes
Cons
In general can be a bit
slower depending on the
community
Can introduce regressions,
which can be mitigated by
test coverage in the
community source
Open Source Workshop 186
Trunk
Release 1.x
Release 2.x
Internal code drop
Editor's Notes
Open Source is important because it can bring together people from a many backgrounds to help solve common problems, which then benefit a wide range of users and customers. It can be an important source of innovation because of the collaboration it enables between developers from different backgrounds. Its community approach enables more people to solve common problems faster Open source encourages the implementation and acceptance of open standards, and the open source implementations can have wide distribution and acceptance Customers are already experiencing benefits through lower costs and increased choice And from an IT vendor, ISV or reseller point of view, it can open up new business opportunities
1983 Sep 27 - GNU Project launched by Richard Stallman with the goal to develop " a sufficient body of free software [...] to get along without any software that is not free. "
1985 Mar 20 - GNU Emacs first public release. 1987 May 23 - GNU Compiler Collection 1.0 is released.
1985 May - Original patch program written. 1987 - Perl 1.000 is unleashed.
1991 August 6 - Info.cern.ch goes online, becoming the world’s first website.
1991 August 25 - Linux first announced on Usenet .
1993 Aug 16 - Debian Project was officially founded by Ian Murdock with the goal of to create a non-commercial distribution that will be able to effectively compete in the commercial market.
1994 May - NCSA loses its web developer, and development on the web server ceases.
1995 Feb - Apache Group forms with the goal to produce “ a revised version of NCSA 1.3 which has all the popular fixes in it directly, in order to have a supported server which actually meets our needs. ” Brian Behlendorf Roy T. Fielding Cliff Skolnick Rob Hartill David Robinson Randy Terbush Robert S. Thau Andrew Wilson
1995 Jun 8 - PHP released publicly vy Rasmus Lerdorf . PHP Group 2011 Thies C. Arntzen, Stig Bakken, Shane Caraveo, Andi Gutmans, Rasmus Lerdorf, Sam Ruby, Sascha Schumann, Zeev Suraski, Jim Winstead, Andrei Zmievski
1998 Feb 23 - Mozilla Organization created by Netscape to co-ordinate the development of the Mozilla Application Suite .
1995 Oct 4 - Free Software Foundation (FSF) is created to support the GNU Project . 1996 Feb - OSF mergs with X/Open to become The Open Group . 1997 Jun 16 - Software in the Public Interest founded to help Debian and other similar organizations develop and distribute open hardware and software. 1998 Feb - Open Source Initiative (OSI) formed as an educational, advocacy, and stewardship organization, and coins the term “open source”. Draws on Debian Free Software Guidelines for definition of open source. 1998 Feb 23 - Mozilla Organization created by Netscape to co-ordinate the development of the Mozilla Application Suite . 1999 Jun - Apache Software Foundation (ASF), formed from the Apache Group, is officially incorporated, with the goal of providing “ organizational, legal, and financial support for the Apache open-source software projects [...] to ensure that the Apache projects continue to exist beyond the participation of individual volunteers, to enable contributions of intellectual property and financial support, and to provide a vehicle for limiting legal exposure while participating in open-source projects. “ 2001 - The FreeBSD Foundation is publically announced, dedicated to supporting and building the FreeBSD Project and community worldwide. 2001 Nov - Eclipse open source project announced by the Eclipse Consortium 2003 Jul 15 - The Mozilla Foundation founded by the Netscape-affiliated Mozilla Organization to support and provide leadership for the open source Mozilla project.
2001 Jan 15 - Wikipedia launched by Jimmy Wales and Larry Sanger , growing to approximately 20,000 articles and 18 language editions by the end of 2001.Wikipedia was formally launched on January 15, 2001, as a single English-language edition at www.wikipedia.com, [32] and announced by Sanger on the Nupedia mailing list. [28]
2010 Sep 28 - Several members of the OpenOffice.org project form a new group called "The Document Foundation".
Typical Characteristic: Software “Commons” Derivatives can sub-license May have some conditions No warranty Credit to original authors required Universal donor Limited control by any one entity Little value in direct commercial licensing Allows for commercial product development Allows for competing services Commoditized and “low-level”
Single entity control, still ‘business friendly’. If you modify the code, you need to make the modification available File or derivative based conditions Original author may have special rights Differentiate between source and binary Larger works can be under a different license Encourages incorporation of code into larger works Ensures direct development benefits all Tends towards libraries or platforms
Also referred to COPY LEFT. If you use it, everything must be under this license Derivative works remain under the license Linked works may also remain under the license Ensures all ‘down stream’ have the same rights All direct development is contributed back Contributors assured code remains open source Encourages a full free software economy Copyright holder retains much control Limits commercial adoption: Forbids distribution for profit Dual-license business strategy
Open Source projects come in all shapes and sizes and can have very different starting points – three examples are Apache, Linux and Eclipse. Apache started as a community developing a web server, and has now grown to be the host of a wide variety of open source projects under the auspices of the Apache Software Foundation. The Linux kernel started with an individual – Linus Torvalds – developing an operating system, but has now developed into a community approach across IT vendors such as IBM and Red Hat, organisations such as OSDL, and individuals Eclipse started with an IT vendor - IBM - donating the code of WebSphere Studio Workbench to open source and setting up a foundation, but has grown into a collaborative effort of IT vendors to build a common open source integrated development environment. Mozilla started with funding from AOL ’ s Netscape division and others, and is now a not-for-profit foundation and community of developers and users which produces the open-source Firefox web browser and Thunderbird e-mail software. There have also been subsequent code donations from various sources, including accessibility code donated by IBM to Firefox. The common theme across all three projects is the importance of “ open ” community with participation and collaboration encouraged from all sources. (And, not controlled or filtered by a single vendor with vested interests.)
While GSoC is more towards codes and University students, Code-in is more flexible and allows code, documentation, training materials, etc