This is great, Kathey, thanks!

David

Kathey Marsden wrote:

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.

Thanks

Kathey

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


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 [EMAIL PROTECTED] If the community confirms it as a documentation bug, file a Jira entry.



Answer User Questions

Answer user questions as they come in to [EMAIL PROTECTED] 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 [EMAIL PROTECTED] 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 domain.
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:
http://db.apache.org/guidelines.html
http://www.apache.org/foundation/how-it-works.html
For the mechanics of building Derby and submitting a patch see
http://incubator.apache.org/derby/derby_downloads.html
http://incubator.apache.org/derby/derby_comm.html


For Derby Internals
    http://incubator.apache.org/derby/papers/index.html
    Read the javadoc.


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

Derby-204
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.

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



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

Derby-243
connection toString() doesn't give enough information

Derby-216
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 queries.


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


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


Derby-211 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

Derby-51

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.

Derby-17
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 errors

Derby-197

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

Derby-117

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 Server


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


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

DERBY-195
isSearchable() returns true for a calculated field


DERBY-194
getPrecision() on TIME and TIMESTAMP is zero


DERBY-163
Timestamp formatting


DERBY-39
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.












Reply via email to