db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kathey Marsden <kmarsdende...@sbcglobal.net>
Subject Contributing to Derby, Tips and Tasks To Get You Started
Date Thu, 28 Apr 2005 04:24:42 GMT
A while a go I promised a list of tasks that might be appropriate for
folks just starting out with Derby. Here is a shot at that.  
Could someone pick it up and format it for the website if it looks helpful? 

It will have to be a living document so things get removed as they are 
fixed and new ones get added.   It would also be nice to have a volunteer to keep it maintained
and pester derby-dev from time to get suggestions for new items for the list.

Does anyone know of a good, "How to Get Started in Open Source Development" article.
That might be nice to add too.



Contributing to Derby, Tips and Tasks To Get You Started

So you are new to Derby and want to contribute right away.  Here  are some ideas to get you

Ongoing Projects

Below are some ongoing projects, which are great starting places and always available.

Test the Documentation
Pick a manual, review it carefully and test all the examples.  If you find something that
looks wrong post a question to derby-user@apache.org.  If the community confirms it as a 
documentation bug, file a Jira entry.

Answer User Questions

Answer user questions as they come in to derby-user@apache.org. Make sure bugs get filed properly
when they come up. File bugs for documentation corrections and update FAQ's.

Add Functional Tests

Until we have 100% code coverage we know there are still opportunities to enhance functional
testing.   See https://svn.apache.org/viewcvs.cgi/*checkout*/incubator/derby/code/trunk/java/testing/README.htm
for information on writing tests.  Write the tests and if you hit something that doesn't work,
post a question to derby-user@apache.org for confirmation.   If the community confirms it
as a  bug, file a Jira entry.  

Add More Existing Tests To the Network Server Suite.

This is entered as Derby-209.   Choosing this as an initial task will help you come up to
speed on the test harness and network server.

Add Stress and Scalability Tests

Choose something that Derby does and push it to the limit. Some of these kinds of tests can
be incorporated into the functional test framework. For example Derby 216 is a task to expand
on the test case for Derby-176 related to cases where large amounts of byte code are generated.

Provide Benchmark / Performance Examples:

Derby could use some contributions in the benchmark/performance example area.  This is a good
area for someone who wants to learn any of java, jdbc, sql and/or derby.  It would be nice
to have some public examples applications/code which runs well in the derby embedded server
Extra credit:
      o compare/contrast performance of same application with other dbs.
      o implement public domain standard benchmark.

Write Tests for an Upcoming Feature

You may ask how you can do this, but because Derby is standards based, you can often install
your second favorite relational database software, one that has the feature already implemented
and run your tests against that.  Then you can post your test to the Jira entry. This will
facilitate implementation and improve quality.

Apply, Test and Review  Patches 

Apply, review and test patches that have been posted for review.  Really make a careful detailed
review, try to understand all the code and if you don't, ask questions about it.  Look at
the functional tests supplied and see if you can think of additional cases that could be added.
 This is a highly valuable task. If the committers don't have community members doing this,
they spend all their time reviewing and committing and never contributing themselves.  This
task will  help preserve the quality of Derby.

Cleanup and Expand Javadoc

In addition to Derby-204, to cleanup the javadoc warnings.  Much of the javadoc could be expanded
and improved upon. package.html files can be created to give a package overview.   Committers
are always happy to assist, review and expedite these kinds of contributions because they
enhance  the overall competency of the community.

First Code Changes

For your first code change choose something that looks really easy. Something you can do and
do well. This will be something different for different people. The point of your first change
should be to go through the whole process and be comfortable with it before taking on major
coding projects.  

A  "Do no harm" mantra is always important if you are considering changing Derby. Your first
priority in introducing any new functionality should be to not introduce a regression in functionality
or performance.

Reference Materials

For general process and guidelines see:
For the mechanics of building Derby and submitting a patch see

For Derby Internals
    Read the javadoc.

Below are some tasks that are may be good candidates for first changes.

Cleanup  Derby javadoc warnings.  Take a tour of the code and add great value. Feel free to
take a subset of the javadoc in an area that interests you.

Add more tests to Network Server.
Learn about Network Server, the test harness, and help improve network server quality.

Rename org.apache.derby.impl.drda.DB2jServerImpl to NetworkServerControlImpl. A useful cleanup
project to take you through the change cycle.

connection toString() doesn't give enough information

Derby-176 test case. Try to identify cases where Derby generates byte code that exceeds the
JVM Specification limits. This is an interesting white box testing task that can be a good
entry point if you are interested in code generation or code paths for different types of

XCL47 SQL State duplicated in messages_en.properties.  Go through the code change process
and learn about how Derby Handles SQLStates

Optimize some specific methods in Network Server. A targeted place to get started in Network
Server and improve Network Server performance.

Network Server returns no result sets for a procedure call that returns no result. A protocol
fix that will help us work toward network server/ embedded compatibility


Need NetworkServerControl shutdown API method that does not shutdown derby embedded.  This
will allow applications that embed network server to shut down the server and continue with
embedded access.

Network Server Needs to generate CRRTKN on ACCRDB if client does not send it

Derby 104
Get rid of the Max length of 18 for constraint names.  Help Jira and other applications migrate
to Derby easily.

Derby 223
Change programs under demo directory to use consistent package names so IDEs do not report


Add tip for Windows users in BUILDING.txt file regarding file paths in the ant.properties
file. Save new folks a lot of time.


Try out patch for Derby 117 and verify changes. Good introduction to the Network Server Servlet

Derby 213
ResultSet.next() after last row of FORWARD_ONLY cursor throws an SQL Exception with Network

Column names on ResultSet.updateXXX and getXXX methods are handled incorrectly 

setNull(x,JDBCType.DATE) does not work when batching is turned on

isSearchable() returns true for a calculated field 

getPrecision() on TIME and TIMESTAMP is zero 

Timestamp formatting 

Strange error in JOIN ON clause 

Derby client Tasks

There are some very time critical Derby client tasks that are fairly large but  great starters
in terms of difficulty. There is no component for Derby client in Jira yet.  So they don't
have JIRA numbers.

Match embedded SQL States wherever possible. 
The client tends to throw errors with null SQLStates or SQLStates that don't match embedded.
 It would be great to get them matched up before release.

Document areas of embedded incompatibility and file  JIRA entries
In addition to the SQLStates, there may be additional incompatibilities with the embedded
driver. These could be indicated in the documentation as areas that may change, so we don't
get locked into any incompatibilities.  This task could be done in conjunction with Derby-209.

View raw message