• No results found

The Apache Software Foundation Community Development Mentoring Programme India ICFOSS

N/A
N/A
Protected

Academic year: 2021

Share "The Apache Software Foundation Community Development Mentoring Programme India ICFOSS"

Copied!
186
0
0

Loading.... (view fulltext now)

Full text

(1)

The Apache Software Foundation

Community Development

Mentoring Programme

India ICFOSS

Luciano Resende ([email protected])

(2)

Welcome!

n  Get to know each other

(3)

About me

n  Professionally

q  Joined IBM Brazil in 2000 as Senior Consultant on Lotus Products

q  Relocated to IBM US in 2001 to work on Lotus Organization

q  In 2006, joined the IBM AIM Organization, and started working on new

technologies for WebSphere Application Server in open source

q  Left IBM in 2010 and joined the Platform & Architecture team at Shutterfly as

Architect/Manager.

q  In 2012 rejoined IBM as Senior Software Engineer at IBM Big Data & Analytics

group

n  Open Source

q  Started working on open source as part of my day job at IBM in 2006 working on

Apache Tuscany.

q  Currently chair for the Community Development PMC and Wink PMC.

(4)

Day 1 Agenda

Day 1: June 21st 2013

n  Learn about

q  Open Source

q  Open Source Licenses

q  Open Source Communities

q  Apache Software Foundation

q  How to get involved with an Apache project

q  Apache Incubator

(5)

Day 2 Agenda

Day 2: June 22nd 2013

n  Development hands-on

q  Setup development environment n  Subversion

n  Git

n  Maven

n  Development tools overview

(6)

Day 3 Agenda

Day 3: June 23rd 2013

n  About Mentoring

n  Expectations from students

(7)

Post sessions Follow Up & Questions

n  Interaction will be through mailing list and open source

n  Students Mailing List :

q  [email protected]

q  [email protected]

n  This presentation is available for download at :

(8)
(9)

Topics

n  General knowledge about open source

q  Importance of Open Source

q  How it got started

q  What is Open Source

q  License

q  Infrastructure

(10)

Why Open Source ?

(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.

(12)

Why is Open Source important ?

n  Can be a major source of innovation!

q  It unites perspectives from a host of disciplines and brings ideas together from all

around the world to

n  Rapidly solve business issues

n  Accelerate technological advancements

n  Stimulate economic growth

n  Enable new business models

n  OSS is a good approach for driving emerging open standards

q  Popular open source projects can become the common implementations

n  IT can benefit

q  Increased choice and flexibility

q  Lower costs

q  Quick response

(13)
(14)
(15)

Some Statistics

n  $1.3 billion Red Hat 2012 revenue

n  3 million GitHub projects

n  80% commercial products with open source code

n  66% market share for Apache HTTP, Nginx and Lighttpd

n  > 50% market share for Firefox and Chrome

n  50% blue chip companies fully committed to open source

(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)
(28)
(29)
(30)
(31)

What Is Open Source?

n  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.

n  Open source is not a software methodology

q  It is a way of developing ideas and software collaboratively in the open

n  Open source is about software license

q  Defines how the developers develop the software

q  Defines how the users consume the software and contribute back

(32)

What characterizes an open source?

n  The community of software users and developers interested to

develop some idea in the open create the open source project

q  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.

q  Community Philosophy: The software license used for the open source

project captures defines its philosophy

q  Community Culture: Where the open source project is hosted can define its

community culture. For example Apache promotes a different culture than Eclipse.

q  Community Character:

n  Each project can run differently even within a given open source embodiment.

The community decides on how to create, build and maintain the project.

n  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 License

n  License defines the community philosophy

q  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.

n  There are upward of 71 open source licenses which fall into 3

families:

q  Give me credit

q  Give me fixes

(34)

Open Source License Type – Give Me Credit

n  Examples: AL, BSD, MIT

n  Typical Characteristic:

q  Derivatives can sub-license

q  May have some conditions n  No warranty

q  Credit to original authors required

q  Limited control by any one entity

q  Allows for commercial product development

(35)

Open Source License Type – Give Me Fixes

n  Examples: Mozilla (MPL), Eclipse (EPL/CPL), LGPL

n  Typical Characteristic:

q  Single entity control, still ‘business friendly’. If you modify the code, you need to

make the modification available

n  File or derivative based conditions

n  Original author may have special rights

n  Differentiate between source and binary

n  Larger works can be under a different license

n  Encourages incorporation of code into larger works

(36)

Open Source License Type – Give Me Everything

n  Examples: GPL (GNU General Public License )

n  Typical Characteristic:

q  Also referred to COPY LEFT. If you use it, everything must be under this license n  Derivative works remain under the license

n  Linked works may also remain under the license

n  Ensures all ‘down stream’ have the same rights

n  All direct development is contributed back

n  Contributors assured code remains open source

n  Encourages a full free software economy

n  Copyright holder retains much control

n  Limits commercial adoption: Forbids distribution for profit

Ø  Software with this type of license cannot be included in Apache

(37)

Open Source License Type – Give Me Everything

•  GNU AGPL v3.0

q  “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 ?

q  it is never required that applications are published/released.

q  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: Most common Licenses

n  Apache License, 2.0

n  BSD licenses

n  GNU General Public License (GPL)

n  GNU Library or "Lesser" General Public License (LGPL)

n  MIT license

n  Mozilla Public License 1.1 (MPL)

n  Common Development and Distribution License

n  Eclipse Public License

(39)

License Compatibility

n  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.

n  Let’s consider the following scenario:

q  Code distributed with license A says :"modified versions must mention the

developers in any advertising materials

q  Code distributed with license B says : "modified versions cannot contain additional

attribution requirements"

n  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.

(40)
(41)

Apache License and third-party licenses

n  Authorized Licenses

q  Apache License 2.0

q  Apache Software License 1.1

q  BSD (without advertising clause)

q  MIT/X11 q  ICU q  University of Illinois/NCSA q  W3C Software License q  X.Net q  zlib/libpng q  FSF autoconf license q  DejaVu Fonts

q  Academic Free License 3.0

q  Service+Component+Architecture

+Specifications

q  OOXML XSD ECMA License

q  Microsoft Public License (MsPL)

q  Creative Commons Attribution (CC-A)

q  Creative Commons Copyright-Only

Dedication

q  Python Software Foundation License

q  Adobe Postcript(R) AFM files

q  Boost Software License Version 1.0

q  Eclipse Distribution License 1.0

q  License for CERN packages in COLT

(42)

Apache License and third-party licenses

n  Excluded Licenses

q  Binary Code License - BCL*

q  Special exceptions to the GNU

GPL (e.g. GNU Classpath)*

q  GNU GPL 1, 2, 3 q  GNU LGPL 2, 2.1, 3 q  Affero GPL 3 q  NPL 1.0/NPL 1.1 q  QPL q  Sleepycat License

q  Microsoft Limited Public License

q  Code Project Open License

(43)

Open Source Project Hosts

n  Project umbrellas host the open source projects and can influence

the overall culture of a community

n  Hosts provide infrastructure for open source project referred to as

PRIM:

q  P (portal), R (repository), I (Issue tracking), M (mailing list)

q  Can provide legal governance

n  There are three main types of public open source hosts:

q  Pure infrastructure

q  Vendor collaboration

(44)

Project Host Type 1: Pure Infrastructure

n  Examples: SourceForge, CollabNet, Codehaus, googlecode, github

n  Provide the infrastructure

q  Sets overall rules (e.g. type of license permitted)

q  Each project governs itself

n  Often many small projects

q  One or two developers, although may have lots of users

q  Fairly small codebase

n  Provide an incubator role

q  Projects start under incubation and move to a more formal community when they

(45)

Project Host Type 2: Vendor Collaboration

n  Examples: Eclipse, ObjectWeb, Mozilla

n  Allows companies to collaborate

q  Specifically acknowledge the role companies have

q  Consider corporate needs

n  Closer to commercial software development roadmap

q  More planning and oversight

n  (e.g.) have a architectural steering committee

n  (e.g.) have an official project management committee

q  Can be more conservative

n  Eclipse recently created “Eclipse Project Incubator” as a place for

(46)

Project Host Type 3: Community Focused

n  Example: Apache Software Foundation

n  Non-profit corporation

q  No staff, all volunteer

q  Elected membership

n  Primary goal is to foster open source communities

q  Provide technical infrastructure

q  Provide legal oversight

q  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. n  Technocratic Meritocracy

q  People earn status by what they do

n  Project communities are very independent

q  Project Management Committee (PMC) is a legal construct n  Binding decisions e.g. to release software

(47)

Examples of Open Source projects

n 

Apache

q  Web Server

q  Community initiated (apache.org)

n 

Linux

q  Operating System kernel

q  Individual initiated (Linus Torvalds)

n 

Eclipse

q  Universal Integration platform

q  Extensible application framework

supporting solution based plug-ins

q  IT Vendor initiated (IBM and

others)

n 

Mozilla

q  Browser and client technology

(48)

OPEN SOURCE COMMUNITY

HEART OF AN OPEN SOURCE PROJECT

(49)

Traditional Commercial Software

n  Separate User and Developer Community

n  Feedback provided through Beta and early adaptor programs

n  Agile development model can help to provide more frequent

feedback

USERS"

"

use the software"

DEVELOPER S"

produce the software!

(50)

Mixed Commercial – Share Code

n  Code Is developed in the open and can be used readily

n  Users provide feedback, but can’t modify the main repository

n  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 – Collaborative Environment

n  Code Is developed in the open and can be used readily

n  Users can become involved in the development of the software

USERS"

"

use the software"

DEVELOPERS"

produce the software!

(52)

Start of an Open Source Project

n  Open Source projects typically start with

q  A smaller developer community who have an idea to develop

q  One or more users who can use the software

USERS" " DEVELOPER S" “produce the software!

(53)

Who are the developers?

n  A group of people interested to develop some idea in the open

collaboratively.

q  Because ..

n  They want to create software that solves their business problems n  Want to test new ideas in the market

n  Want To participate in new technology development

n  Want To test validity of standards through collaboration with users n  Maybe they get paid by an employer, it’s their job.

n  Maybe it is just interesting to get involved in new technology!

q  Participation in a successful project can open the door to fame and recognition

n  …….

n  There is no magic answer. This makes it good challenge to analyze how to attract developers for each project

q  IMPORTANT: Anyone interested can join in to help with the

development

n  No invitation is required! Just get involved in what is interesting to you and share your

thoughts with the community.

n  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 Project

n  Open Source Brings Users and Developers together to

q  Invent, develop, share experience, improve

q  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 Project

n  A successful Open Source Community is an integrated user and

developer community who together they

q  Invent, develop, share experience, improve

DEVELOPERS" ! Developers" & users contributing" Pure users

(56)

Open Source Project

n  Open source project grows as users get more involved and new

developers join the project.

n  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)

Why is Community Important?

Code with

Community

Code without

community

Time

Factor of

Success

Community = Stability

(58)

How to Grow a Community?

•  Prerequisites

q  Attractive Code Qualities

q  Communication Infrastructure

q  People who believe in the project and help it grow

DEVELOPERS" !

Developers

"

& users

contributing

"

Pure users developers

?

How to

Get here

(59)

Attractive Code Qualities for Starting OS projects

n  Directly used by and useful to developers

n  Builds

n  Follows common standards where applicable

n  Modular and flexible

n  Consistent

n  Enough documentation to help new developers to get started

n  Enough test examples to help new developers to get started and be confident to test

their changes n  Can be improved

q  Does not have to be functionality complete (Tough concept to grasp)

n  Incremental, smaller checkins accompanied with discussions with the community get the community more involved and

(60)

Communication Infrastructure

n  Source code repository

n  Issue Tracking

q  Defines how problems can be reported.

q  Provide a way to organize handling of many different ideas, feedbacks, etc.

n  Website

q  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

n  Most developers don’t find this a fun thing to do! Find ways to make it happen.

n  Documentation

q  User documentation : Focuses on how to use the project

q  Developer documentation: Focus on how to get involved

n  Caution: ‘code talks’ does not work 100%. It is worth to spend time to share information

n  Mailing list, newsgroup, or forum

q  Communication should be open

n  Engages everyone and solicits new ideas and participation

q  Communication should be archived

n  Archived information can be used to search for problems that were discussed before n  Provides a reference for decisions that were made

(61)

How to attract a community?

n  Good product and frequent releases

n  Good documentation

n  Examples of how to use the software

n  Modular and flexible

q  Lowers the barrier to entry for developers. Let’s them focus on areas that they are interested in

q  Facilitates adoption by allowing users to pick and choose what they need. Lower footprint.

n  Have an open, inviting environment

n  Mentor new people to learn the project and feel comfortable to contribute

n  But, that’s not enough!

q  People need to know about your project to download and use it or come to the site to participate.

n  Talk about the project and how it solves the given business problem through Conferences, Forums, Articles, …

(62)

Summary

n  Open Source brings Users and Developers from all around world

together to invent, develop, share ideas, …

n  Community is the heart of Open Source

q  Community = stability

n  Starting and growing of an open source project requires

q  Code

q  Infrastructure

(63)

THE APACHE SOFTWARE FOUNDATION

THE STATE OF THE FEATHER

(64)

The ASF

n  What is the ASF ?

n  What does the ASF do ?

n  Name some ASF projects you know ?

(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

(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

(67)

The ASF

(68)

The ASF

n  Why call ourselves Apache ?

n  No, it isn’t an attack helicopter

n  A Patchy Server? Nope, that’s just a pun.

n  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

(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)

(71)

Apache Mission

n  Provide open source software to the public free of charge

n  Provides a foundation for open, collaborative software development

projects

q  supplies hardware

q  Supplies communication, and business infrastructure

n  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

(72)

The ASF’s Mission

n  Provide a means for individual volunteers to be sheltered from legal

suits directed at the Foundation’s projects

n  Protect the ‘Apache’ brand, as applied to its software products, from

being abused by other organizations

n  Provide legal and technical infrastructure for open source 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.

(74)

Vision Statement,

Take 2

➡  Community created code

(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

(76)

ASF “Org Chart”

Development Administrative Users Patchers/Buggers Contributors Committers PMC Members Members Officers Board ~430 9 ~100 ~4500 ~2000

Technical Oversight Organizational Oversight

PMCs (TLPs) ~100 Elects Reports Appoints Creates & Updates

(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

(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

(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)

(80)

Protection

➡  Ensuring that IP is checked (oversight and governance)

➡  Tracking and handling any legal issues

(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

(82)

Apache License

n  Apache License Philosophy

q  To allow the maximum use of our software for any purpose and by all people.

n  Give me Credit type

n  Requires Attribution via a NOTICE file

q  Credits to original author is required, derivatives can sub-license

n  No Trademark Grant

n  Includes patent grant

n  A liberal open source software license

q  Business friendly

(83)

Apache Infrastructure

n  Provide legal and technical infrastructure for open source software

development and to perform appropriate oversight of such software

n  provide a foundation for open, collaborative software development

projects by supplying hardware, communication, and business infrastructure

q  Portal (confluence and moin moin wikis, content management for website)

q  Repository for source, SVN and GIT for source control

q  Issue Tracking, JIRA and Bugzilla for bug tracking

q  Mailing Lists, all the communication

(84)

Apache Roles

User Contributor Committer PMC ASF Member

Less Involvement More Involvement

n  Apache Contributors/Committers are viewed as individual

contributors, independent of their potential company affiliation

n  Individuals are recognized for their contributions and can assume

more responsibility.

n  Products are owned by project community.

n  Emphasis on community stewardship.

(85)

Apache Roles Definition (1 of 2)

n  User

q  Uses the software and provides feedback in the form of bug or feature requests.

n  Contributor/Developer

q  Contributes to the development of the project.

q  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.

n  Committer

q  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)

Apache Roles Definition (2 of 2)

n  PMC (Project Management Committee) Member

q  Each project has a project management committee who makes decisions for the project, such as software releases and community related decisions.

q  A committer become a PMC member as a result of their involvement in the community matters related to the project.

n  PMC Chair

q  The Chair of a Project Management Committee (PMC) is appointed by PMC Members.

q  The Chair is the interface between the Apache Board and the Project. He/she reports status of the project on a regular basis.

n  Apache Software Foundation (ASF) Member

q  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)

The Apache Philosophy –

The Apache Way

n  Meritocracy – It’s about what you do, those who contribute decide

n  Peer to Peer

q  We work with people, not companies.

q  Committers and members should hold one another with respect.

q  All votes hold the same weight.

q  Community over code.

n  Consensus decision making

q  Most decisions made on mailing list without voting, sometimes by way of lazy consensus

q  Typically use Wikis for proposals and design sharing

q  Voting rules : Yes (+1) Abstain (0) No (veto or -1) n  A -1 veto requires proposal of an alternate solution

n  Open, online communication

q  Email lists are preferred form of communication. ß The most used and preferred

q  Most communication is publicly archived.

q  Most lists are open to any subscriber

n  Responsible oversight q  Security is mandatory

q  Ensure license compliance

q  Release only high quality software

(88)

What is Karma ?

n  A Buddhist/Hindu conceptions of the sum of a person's actions

which dictate his future (lives).

n  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

(89)

How to Become a User?

n  Simply download and use the open source project.

n  Report bugs

n  Talk to the project community through user mailing list

q  Ask questions that will help you build your solution

n  Provides feedback to the project

q  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.

n  Helps the developers to create software that addresses real use case scenarios.

(90)

How to become a contributor/developer?

n  Actively participate on the project mailing list by answering user

questions, contributing to design discussions, etc.

n  Start providing fixes (patches) and small enhancements to code,

(91)

How to become a committer ?

n  Projects recognize contribution and extends the committer role to

high contributors. This means:

q  Write access to code and an @apache.org mailing address. It requires a signed

CLA in place.

n  One gains committer status through contribution as well as by

gaining the trust of the PMC.

q  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:

n  Dedication

n  Attention to code quality and project guidelines

n  How well this person collaborates with the rest of the community

(92)

How to Get Involved with Apache?

n  Apache is a non-profit organization run by volunteers

n  Apache sponsors can provide monetary support:

http://apache.org/foundation/sponsorship.html

q  It is the closest and most direct method for a corporation or individual to support

the ASF

q  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.

(93)

HOW TO GET INVOLVED WITH

OPEN SOURCE PROJECTS?

(94)
(95)

Getting Involved

n 

Quality Assurance

n 

Bug Fixers

n 

Tech Writers

n 

Level one support

n 

Issue Tracker

n 

Mailing List

n 

Web Site

n 

Be proactive

n 

Begin with the end in

mind

n 

Put first things first

n 

Seek first to

understand

n 

Think Win-Win

(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

n  Learn about the project

q  Project overview and subproject pages

q  Ask questions on the project mailing list

n  Subscribe to the mailing list and talk to

the community

q  Ask questions. Any questions is good

n  Download distribution

q  Typically latest release is the best to start with

n  Run getting started tutorial

n  Run samples, demos

q  Use samples and demos to better understand

how to use the project and learn details about it’s features

(97)

For service composition & management

For Data Handling

Project Overview: http:/tuscany.apache.org

(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

(99)

How to develop applications

How to help with Tuscany development and extend it

(100)

I have started using Apache Tuscany. How can I get more involved ?

Getting Involved

n  Check “Get involved” page. It

explains some ways to get involved.

n  Report a problem:

q  Report problems via JIRA

n  Describe problem and attach a test

n  Provide input

q  Features that are important and provide use cases to help the community

understand why something is important

q  Provide feedback based on your experience

(101)
(102)
(103)

How do I create a JIRA?

JIRA System

n  If first time user, create a login

account: User id and password

q  You define your own user id and password

n  If not a first time user, login to

(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

(105)

Subscribing and using the mailing lists

n  Different mailing list types

q  User – Used by users to ask questions or help each other

q  Development – Used by developers to discuss designs, releases, roadmaps. JIRA updates get routed to this mailing list

q  Committs – where code commits are sent to. A good way to see what is progressing in the project

n  You can subscribe, unsubscribe or watch archive of these mailing lists. You

cannot respond to emails from archive.

n  Subscribing to Tuscany user list

q  <list>-subscribe@<project>.apache.org

q  <e.g.> [email protected]

n  Unsubscribing from Tuscany user list

q  <list>-unsubscribe@<project>.apache.org

q  <e.g.> [email protected]

n  Browsing Tuscany Mailing Archives

q  http://www.mail-archive.com/

q  http://apache.markmail.org

(106)

Asking questions on the project mailing list

n  Feel VERY COMFORTABLE to ask ANY kind of questions to help you understand

the project. There is no bad or good questions.

n  Remember that the project is a community effort and most people working

on the project are volunteers.

n  The way you ask questions can play in how you get answers

q  You get quicker answer if you share information about how your investigation went and where you are blocked

n  Search archive mailing list and FAQ to see if you can find your answer. n  Search mailing list archive for similar topics

q  Clear questions get clear answers

(107)

Asking questions on the project mailing list

n  Use meaningful, specific

subject headers

q  Not helpful: HELP!

q  Better: Webservice Error when running App

n  Be precise and informative

about your problem

q  Describe the symptoms of your problem or bug carefully and clearly.

q  Do the best you can to anticipate the questions someone could ask back, and answer them in advance in your request for help.

n  Volume is not precision

(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?

n  Identify what areas you’d like to get

involved in

q  Find JIRAs (reported problems) to fix in that area

q  Share with the community that you’d like to help and which areas you are

interested in. They’ll help you find pieces

q  Check out roadmap (if there is one)

n  Download Code

q  Typically the ‘latest’ code branch is also referred to as trunk

n  Read relevant developer documentation

guides such as architecture doc, etc.

n  Check out development guideline if any. It

usually has good hints for how to build and get started

(109)

Java SCA Open defects

(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, ..)

(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 :

(112)

How do I learn more about a release?

Exploring open source releases

n  Download the release

q  There is a binary and source distribution for each supported platform

n  Check important distribution

artifacts

q  RELEASE_NOTES

q  CHANGES

n  Learn how the code works via

(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

(114)

Running a sample from a distribution

n  cd tuscany-sca-1.2.1-incubating\samples\calculator n  ant run q  Buildfile: build.xml q  run: q  [java] 3 + 2=5.0 q  [java] 3 - 2=1.0 q  [java] 3 * 2=6.0 q  [java] 3 / 2=1.5

(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

n  Communicate to the community

that there is an issue by creating a new JIRA issue

q  Bugs

q  New Features

q  etc

n  Discuss any design issues,

doubts, etc on the dev-list.

(116)

Contributing your fixes – Patch process

n  Configure your svn properties

q  https://svn.apache.org/repos/asf/tuscany/java/etc/svn-props

n  Checkout the code

q  https://svn.apache.org/repos/asf/tuscany/java/sca/

q  Use svn client or TortoiseSVN n  Modify a file(s)

q  Edit modules/pom.xml

q  New files need to be added

n  svn add

n  Check modified files

q  svn status n  Generate patch

q  Svn diff > my_updates.patch

n  Attach the patch to the related JIRA. If a

JIRA does not exist, create one.

q  Make sure you grant Apache License

q  Make sure you mark the flag that says a patch is

included

n  Someone in the community will pick up

the patch, review it and apply it or ask for more information.

(117)

Summary

n  Getting involved in Apache Tuscany is easy

q  Check Get involved

q  Subscribe to the right mailing list and ask questions, provide your input and

contribute

q  Plenty of choices:

n  Report problems via JIRA

n  Provide patches

n  Contribute samples, scenarios

n  Provide feedback on the project is working for you

n  Contribute code

n  Help with the website content, documentation

n  ……..

(118)

List of Apache Projects

n  Apache TLPs q  http://projects.apache.org/indexes/quick.html n  Apache Podlings q  http://incubator.apache.org/ n  Apache Labs q  http://labs.apache.org/

(119)

Home Work – Find a project of your interest

n  Familiarize with the project resources

q  Web Site

q  Documentation

(120)

HOW TO START AN APACHE

PROJECT?

(121)

Incubator Projects

n  Apache projects start as incubator projects that are overseen by

incubator PMC. They are called podlings.

n  Once a project demonstrates it can behave as a ‘good’ Apache

citizen, it graduates to a top level project

q  It is a worthy and healthy project: diverse and will sustain itself

q  It truly fits within the ASF framework

q  It “gets” the Apache way

n  Useful code

n  Working Communication infrastructure

n  Active developers

(122)

About Apache Incubator

n  Apache incubator is the entry path into The Apache Software Foundation

(ASF) for projects wishing to be part of the foundation’s effort.

n  Details about Apache Incubator at

q  http://incubator.apache.org/

n  The Apache Incubator have two main goals :

q  Ensure all donations are in accordance with the ASF legal standards

q  Develop new communities that adhere to our guiding principles

n  Incubator PMC provides oversight for new projects on the following areas :

q  responsible for the acceptance and oversight of new products submitted or proposed to become part of the Foundation

q  Ensures that the projects develop products according to the Foundation's philosophy and guidelines for collaborative development

q  Legal – ensures donation are in accordance with legal standards

q  Community – helps develops communities that adhere to guiding principles

q  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)

How to Start a New Incubator Project?

n  Detailed Guidelines at this link:

q  http://incubator.apache.org/guides/proposal.html#preamble

n  Starts with a proposal… Formulate your proposal

q  Find a champion. The Champion is a person associated with ASF already and helps move the proposal forward.

q  Identify mentors from ASF or ask for volunteers

q  Find a sponsoring organization for the project. This could be:

n  The Apache Board

n  The incubator

n  Another Apache Project

q  Post the proposal in plain text in a email whose subject is prefixed with [PROPOSAL] at

[email protected]

n  Example: [Proposal] Photo Share Project for incubation

n  If there is interest, the proposal gets discussed. Expect to revise your proposal with input

from the general discussion. Be Responsive and inviting.

q  Once there is consensus on the proposal, post in a email proposal whose subject is prefix with [Vote].

n  Example: [Vote] Photo Share Project for incubation

q  When Incubator PMC approves the project, mentors help set up the infrastructure (PRIM) for the project.

(124)

Tips for Building a successful project

n  Make sure there is enough help/resource to jump start and drive the project

n  Set clear expectations (pathway)

n  Community should understand the purpose and focus

n  Don’t worry about duplication

n  Be willing to break up

n  Open communication - extremely important

n  Be inviting and help others to come on board

n  Promote the project (blogs, conferences, articles)

n  Release often and regularly

n  Good documentation and website

n  Lower the barrier to entry

n  Integrate with other Apache projects if it makes sense

n  Watch how other successful projects behave and work

n  Use your mentors and the incubator PMC effectively

n  Focus on creating a diverse and stable community

(125)
(126)

OPEN SOURCE TOOLS

OVERVIEW

(127)

Topics

n  Install development environment tools

q  Subversion

q  Git

q  Maven

n  Source Control Repositories

q  Subversion

q  Git

n  Build and Dependency Management

(128)

Installing development environment tools

n  Subversion q  http://subversion.apache.org/packages.html n  Git q  http://git-scm.com/downloads n  Maven q  http://maven.apache.org/download.cgi n  Eclipse q  http://www.eclipse.org/downloads/

Also available at:

http://10.0.0.3/icfoss

Wi-Fi :

ICFOSS-ROBOTICS ICFOSS606

(129)
(130)

Subversion

n  Centralized source control repository

n  Regular project structure

q  Trunk – current development

q  Branches – parallel development

(131)

Subversion useful commands

•  Checkout source code

q  svn co http://www.company.com/repo/project/trunk

n  Ex. Svn co http://svn.apache.org/repos/asf/wink/trunk/ wink-svn

•  Update current checkout

q  svn update

•  Check status of current checkout

q  svn status

n  Check differences

q  svn diff

q  svn diff >> changes.patch (create a patch with the current diff) n  Rollback changes

q  svn revert file

q  svn revert *

•  Add new file

q  svn add file/directory

•  Commit files

(132)

Subversion hands-on

n  Find an ASF project using subversion

(133)
(134)

Git

n  Distributed source control repository

n  Regular project structure

q  Trunk – current development

q  Branches – parallel development

(135)

Git useful commands

•  Checkout source code

q  git clone http://www.company.com/repo/project/trunk

n  E.g : git clone git://git.apache.org/wink.git

•  Update current checkout

q  git pull --rebase

•  Check status of current checkout

q  git status

n  Check differences

q  git diff

q  git format-patch >> changes.patch (create a patch with the current diff)

n  Rollback changes

q  git reset –soft / --hard

q  git checkout file

•  Add new file

q  git add file/directory

•  Commit files

q  git add file // git commit –a –m”Describe the contents of your commit”

q  git commit –a –m”Describe the contents of your commit”

q  git push

(136)

Git branch workflow

n  Clone the repository for the first time

git clone git://git.apache.org/wink.git n  Update the repository

git pull –rebase

git svn rebase for git-svn bridge n  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

n  Updating a branch with changes from master

(137)

Git hands-on

n  Find an ASF project using GIT

(138)
(139)

What is Maven

n  A Java project management and integration build tool

n  Based on the concept of XML Project Object Model (POM)

n  Favors convention over configuration

q  Project Structure

q  Repository Layout

q  Etc

n  Modular build platform

(140)

Maven Build Lifecycle (Phases)

Phases

n  Validate n  Compile n  Test n  Package n  Install n  Site n  Deploy

Plugins + Goals

n  Maven-java-plugin:compile n  Maven-test-plugin:test n  Maven-jar-plugin:jar n  <project> … <packaging>jar</packaging> … n  </project>

(141)

Maven Repository

n  Repositories

n  No more libs in source code

n  Public repositories

q  Central, etc

n  Internal repository (Nexus, Artifactory, etc)

q  Proxy repository n  Local repositories n  <project> … <repositories> <repository> <id>central</id>

<url>http://repo.internal.company.com:8081/releases</url>

</repository> </repositories> … </project> Artifactory Internal Repo Public Maven Repos /m2 /repository /org /apache /com /google Internet

(142)

Maven Dependency Management

<project> … <dependencies> <dependency> <groupId>org.apache.tuscany.sca</groupId> <artifactId>tuscany-binding-rest-runtime</artifactId> <version>2.0-M5</version> <packaging>jar</packaging> </dependency> </dependencies> … </project>

http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/tuscany/sca/ tuscany-binding-rest-runtime/2.0-M5/tuscany-binding-rest-runtime-2.0-M5.jar

(143)

Maven Project Structure

n  Project (jar)

q  src

n  main………..Project source code

q  Java………...Java Artifacts

q  Resources…………Resources (e.g xsd, composites, etc)

n  test...Test codes (not added to final jar)

q  java...Test Java Artifacts

q  resources………….Test Resources

n  Project (webapp)

q  src

n  main ……….Project source code

q  java ………..Java Artifacts

q  resources ………....Resources (e.g xsd, composites, etc)

q  webapp ………Web related resources (e.g html, jsp, css, etc)

§  META-INF

§  WEB-INF

§  web.xml

(144)

Maven Project Configuration

n  Configuration is entered in XML format in a Project Object Model or

POM

n  Projects are structured in a hierarchy and project configuration is

inherited by sub-projects

(145)

Maven Project Configuration

<project> <parent> <groupId>com.company.application</groupId> <artifactId>parentProject</artifactId> <version>1.0.0-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.parent.application</groupId> <artifactId>artifactName</artifactId> <packaging>pom</packaging> <name>artifactName</name> <modules> <module>…</module> <module>…</module> </modules> </project>

Modules must map to directory structure

(146)

Maven useful commands

n  Build

q  mvn clean install

n  Build in offline mode

q  mvn clean install -o

n  Build and force updating/downloading dependencies

q  mvn -U clean install

n  Build without executing unit tests

q  mvn clean install -Dmaven.test.skip=true

n  Build and report errors only at the end (fail at end)

q  mvn -fae clean install

n  Build and don’t report errors (fail never)

q  mvn -fn clean install

n  Execute only one test case

q  mvn -Dtest=ComponentServiceReferenceTestCase

Clean is optional, but omitting it might cause unexpected issues.

(147)

Maven useful commands

•  Put maven in debug mode

q  mvnDebug

•  Identify 3rd party dependencies with maven dependency plugin

q  mvn dependency:analyze

q  mvn dependency:copy-dependencies

(148)

Maven with Eclipse

Maven Eclipse plugins

q  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.

(149)
(150)

Github Project

n  Create a github java project

q  Create new repository

q  Create a maven java project

q  Add some business logic

q  Add tests to verify your business logic

q  Build

n  With tests

(151)

Github collaboration

n  Provide a patch for your colleague project

q  Do a simple change on your colleague project

q  Submit a pull request

q  Add a bit more change (simulating a update based on feedback)

q  Submit a pull request

n  Owner should accept pull request and merge changes

q  If you can’t find an owner, I will create a simple project and you can use that n  My github account : lresende

(152)
(153)

HOW MENTORING PROGRAMS CAN HELP

YOU GET STARTED WITH OPEN SOURCE

(154)

Why Mentoring ?

Open Source Project

(155)

Why Mentoring

You

Open Source Project

(156)

Why Mentoring ?

n  What to expect from the mentor

q  Will help you get familiar with the open source community, and help you interact

with the existent community

q  Your mentor might also help with technical questions/issues, but this might not be

(157)

What mentoring programs are

available ?

(158)
(159)

Google Summer of Code

n  Goals

q  Inspire students to engage in open source development and also give them more

exposure to real-world software development scenarios n  Eligibility Requirements

q  Must be 18 years old by program announcement/start

(160)

Google Summer of Code

n  Restrictions

q  Code only

q  Summer only

(161)

Google Summer of Code

n  How it works ?

Project Ideas Project Proposals

Mentoring

&

(162)

Google Summer of Code

n  Google Summer of Code web page

q  http://code.google.com/soc/

n  Google Summer of Code FAQ

q  http://code.google.com/soc/2009/faqs.html

n  Google Summer of Code discussion group

q  http://groups.google.com/group/google-summer-of-code-discuss

n  IRC Channel

References

Related documents

implication and suggestion The aim of applied research is to find solutions to improve practice; In accordance with this goal, this study adopts the UTAUT model to identify the

10 Although there was no difference in rates of stenosis between anterior and posterior circulation aneurysms in our study, there was a higher rate of acute or subacute thrombosis

The business plan proposes to complete the construction and operation of high-speed rail service on Phase 1 in segments over this

Despite a wealth of literature on congruence of species richness patterns, evaluations of compositional congruence of plant assemblages with cryptic or otherwise rarely

students' perceptions of verbal and nonverbal immediacy behaviors by male and female ITA instructors, and to discover the effects of immediacy on cognitive, affective, and

Responding to a call for more theoretically embedded empirical work inspired by queer theory (Ozturk and Rumens, 2014), this paper problematises the notion of inclusion by suggesting

Andra miljöberikningar har även de visat sig ha positiva effekter för att hålla papegojorna sysselsatta och förebygga uppkomsten av lokomotiva stereotypier (Meehan et

Rather than announce a public reserve price, either seller may choose to announce a reserve price of zero to attract bidders, and then submit a shill bid to prevent the item