Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Nutch Wiki" for change 
notification.

The following page has been changed by DennisKubes:
http://wiki.apache.org/nutch/Becoming_A_Nutch_Developer

The comment on the change is:
Beginning of "Becoming a Nutch Developer" Document

New page:
== Overview ==
Search is complex.  Nutch makes it easier. So you start off by installing 
Nutch.  Now you are a pretty good developer.  You get Nutch up and running 
without problems and you think it is a pretty neat piece of software.  In fact 
you like it so much that you want to start adding to it.  You want to develop 
new features and contribute them back to the community.  But then it dawns on 
you.  How does one contribute to an open source project like Nutch.  You have 
never worked on an open source project before and don't really know how the 
entire process works.

That is where this document comes in.  The purpose of this document is to help 
you as developers take the next step in becoming a contributing members of the 
Nutch community.  We will cover a general overview of the Nutch development 
process.  What are the different pieces and how do they fit together.  How does 
the community work and interact.  We will cover about using the mailing lists 
to search for information and how to ask questions to ensure that they get 
answered.  We will cover how to go about learning the internals of the Nutch 
codebase.  We will cover how to start developing for Nutch including coding 
standards, using subversion, setting up nutch in development environments, 
building nutch from source, debugging, and unit tests.  And finally we will 
cover contributing back to the Nutch community through documentation, code 
fixes, new features, and providing guidance to other developers.  When we are 
finished you should have a good understanding of how the community
  works and how you can go about becoming a bigger part of that community.

== The Nutch Community ==

=== Nutch Development Roles ===
There are three main roles that people can play in the Nutch community. 

The first role is that of user.  This is someone who uses the Nutch software 
but is not active in its development.  People in this category range from the 
curious programmer who wants to learn more about search technology to 
corporations setting up search on their local intranet.  If you only want to 
use the Nutch software and don't want to help develop it, you can still be a 
contributing member of the community.  By using the software and pushing the 
limits of what it can do, by filing bug reports and feature requests (more 
about how to do this later), working with developers to track down issues, or 
just giving your input to discussions that arise, you can help the Nutch 
project become better and better.
 
The second role is that of developer.  This is someone who has used the Nutch 
software and has taken the next step to help develop or program the software.  
Helping to develop the Nutch codebase can come in the form of code fixes called 
patches, or by developing completely new features from scratch.  An important 
thing to remember is that unlike most software development at big companies, 
you don't need anybody's permission to start developing software for Nutch.  If 
you think you have a good idea for a feature, or if you want to track down and 
fix bugs in the software, go do it.  If you want a specific piece of 
functionality, don't wait for someone else to develop it.  Take the time to 
learn and do-it yourself.  Then when you are done give it back to the 
community. This is how the Nutch project has been developed so far and how it 
will continue to be developed in the future.  The community is a do-ocrcy, 
meaning those who do the work get to help set the directions and make t
 he decisions.  Communication is essential but not limiting.  Anybody can 
become a developer simply by submitting source code, whether fixes of 
functionality, for inclusion in the project.

The third role is that of committer.  This is usually a developer who has been 
working with the project for some time.  Someone who has developed new pieces 
of functionality, who has fixed bugs, and who has helped others through 
answering quesions and providing guidance to others through the mailing lists.  
In other words this is a person who has proved their commitment and usefullness 
to the project and in return are given commit access to the source code 
repository, an apache email address, and the ability to help make short term 
decisions fo the project by determining what submissions and bug fixes make it 
into the source code repository and release versions of the software.

=== How the Community Works ===
The community works together through shared mailing lists, email, wikis, bug 
tracking systems, and source code repositories.  These tools when used together 
provide a virtual meeting room and workspace for all members of the community.

==== Mailing Lists and Email ====
Most communication is done through email and the mailing lists.  Because of 
this the first thing that any person should do to become part of the Nutch 
community is to join the appropriate mailing lists.  There are four different 
mailing lists.  First there is the users mailing list.  Contrary to the name 
this list is not just for users.  If you have questions about the Nutch 
software including installation, configuration, bugs, errors, or general 
information, this is the list for you.  Second is the dev mailing list.  This 
is where most development communication occurs including updates to request 
tracking systems.  This is also where developers can pose ideas for new 
functionality to see if someone is already working on such features or just to 
get general feedback.  The dev mailing list is important for tracking 
functionality that other developers may be working on and consensus by the 
community on desired direction of new features.  The third list is the commit 
mailing lis
 ts.  This list tracks commits to the source code repository and changes in the 
wiki pages.  The fourth list is the agents list.  This is where webmasters and 
other people can post comments or questions about the Nutch crawler.

Users can get by with subscribing to only the users mailing list.  Developers 
should subscribe to all four mailing lists.  Anybody doing internet crawls 
needs to be subscribed to the agents list.  In order to post to any list, for 
example to ask a questions, it is necessary to first be subscribed to that 
list.  Below are links for subscribing to the different mailing lists.

 * [http://lucene.apache.org/nutch/mailing_lists.html Nutch Mailing Lists]
 * [mailto:[EMAIL PROTECTED] Subscribe to Users]
 * [mailto:[EMAIL PROTECTED] Subscribe to Dev]
 * [mailto:[EMAIL PROTECTED] Subscribe to Commits]
 * [mailto:[EMAIL PROTECTED] Subscribe to Agents]

==== JIRA and Issue/Request Tracking ====
If mailing lists provide the ongoing conversation for the community, the 
issue/request tracking system provides a repository for the current state of 
the project.  The request tracking system is JIRA system and it can be accessed 
at this address.

 * [https://issues.apache.org/jira/browse/NUTCH Nutch JIRA]
 * [https://issues.apache.org/jira/secure/Signup!default.jspa Signup for JIRA]

The JIRA system is the central repository for all work wanting to be included 
int the Nutch source code base.  The system tracks issues and feature requests 
by component, by version, and by status.  You can view what requests are 
assigned to what person, what requests are currently being worked on, and which 
ones haven't been scheduled. You can search all requests by keyword or by 
various categories and filters.  We will go into detail later on how to use the 
JIRA system to propose new functionality and submit bug fixes.  For now 
understand this.  If you are going to be a developer you will need to userstand 
how to use the JIRA system as this is where you will propose new functionality, 
submit bug fixes, give you input on features other developers may be working 
on, and coordinate actions with other developers on specific pieces of 
functionality.

The address to signup for JIRA was given above.  Once you have signed up you 
will have access to all of the Apache JIRA repository, not just the Nutch 
project.

==== Source Code Control through Subversion ====
Source code control is very important to open source projects.  Nutch uses the 
apache subversion repository for it source control.  As a developer you will 
want to get into the habit of downloading and updated your development 
environment directly from the subverion repository.  We will go into detail 
about how to do this later.  There are two types of logins to the repository, 
users and committers.  Users can download the repository but cannot make 
changes directly to the repository.  You can make changes on your local system 
and those changes can be submitted to the JIRA system.  Committers hold the 
committer role that we discussed previously.  These individuals can make 
changes directly to the subversion repository and are responsible for take 
patches from the JIRA system and applying them to subversion where they then 
become available to all users.

==== Wiki and Documentation ====
The weakest part of most open source projects is their documentation and Nutch 
is no exception.  Wikis are special web pages like the one that you are reading 
that allows users to directly edit text on the page and to create new pages.  
The wiki provides various tutorials and documentation for Nutch.  Links to view 
the Nutch wiki and to register for the wiki are provided below.

 * [http://wiki.apache.org/nutch/ Nutch Wiki]
 * [http://wiki.apache.org/nutch/UserPreferences Signup for the Wiki]

As a developer one of the ways you can contribute back to the community is be 
documenting your hard won experience on the wiki.  You can do this in the form 
of tutorials, articles, or simple notes.  The wiki is also used as a virtual 
white board to help document general themes and directions for the project.

These four tools, mailing lists and email, JIRA, Wikis, and Subverion together 
provide the community ways to coordinate their actions and conversations.  As a 
developer you will need to understand each of these tools and how you will use 
them in the development process.  Later parts of this document will explain 
each of these tools in more detail to give you the base of knowledge you will 
need to start being a productive member of the Nutch development community.

... more to come later

Reply via email to