CONTRIBUTING
changeset 0 2b3e5ec03512
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CONTRIBUTING	Thu Apr 21 14:57:45 2011 +0100
@@ -0,0 +1,89 @@
+
+This document briefly describes how to get involved with DTN
+development. Note that the DTN research project is still very much in
+its formative stages, and this code base in particular is likely to
+still be largely in flux. 
+
+Contribution Process
+--------------------
+
+Anonymous source code repository access is available for the general
+public. To gain access for checkins via ssh access requires
+permission. Send email to Michael Demmer <demmer@cs.berkeley.edu> if
+you're interested in contributing.
+
+Coding Conventions
+------------------
+
+In the interest of overall clarity and consistency, we have adopted
+the following conventions for the implementation. Please follow them
+in your extensions:
+
+- The basic indentation level is 4 spaces (no tab characters please).
+  Please take care to make sure that indentation matches the code
+  around it.
+
+- Class names should begin with capital letters and use mixed case for
+  word separation. e.g. BundleRouter
+
+- Method / function names should have all lowercase letters with words
+  separated by underscores: e.g. send_bundle()
+
+- Class member variables should be distinguished from local variables
+  with a trailing underscore, e.g. bundle_.
+
+- Macros and constants should be all capital letters with underscores
+  to separate words. e.g. #define MAX_TUPLE_LENGTH 256
+
+- The file names for individual .h/.cc files should correspond to the
+  (primary) class in the file. e.g BundleRouter.cc
+
+- Inline comments can use either C or C++ style syntax. For block
+  comments on methods and classes, please use the mark-up syntax of
+  doxygen since we use that to generate html code documentation.
+
+- Above all, please be consistent. When modifying code, follow the
+  conventions of the code around you.
+
+- Try to keep code lines under 80 columns in width.
+
+- For emacs users, adding the following lisp code to your .emacs will
+  follow these conventions:
+
+(require 'cc-mode)
+(require 'cc-vars)
+
+(defconst dtn-c-style
+  '((c-basic-offset		. 4)		; 4 spaces for indentation
+    (c-offsets-alist
+     . ((substatement-open	. 0)		; don't indent braces!
+	(inline-open		. 0)		; don't indent braces, please.
+	(label 			. -1000)	; flush labels left
+	(statement-cont		. c-lineup-math); line up with = signs
+	(innamespace		. 0)		; no indent for namespaces
+	(inextern-lang		. 0)		; or extern language
+	))))
+
+(defun dtn-c-setup()
+  (interactive)
+  (c-add-style "dtn-c-style" dtn-c-style t)	; dtn style above
+  (setq indent-tabs-mode nil)	           	; use spaces for tabs
+)
+
+(add-hook 'c-mode-hook 'dtn-c-setup)
+(add-hook 'c++-mode-hook 'dtn-c-setup)
+  
+- For vim users, use the following settings for tabs:
+
+set tabstop=8        " \t are 8 spaces
+set shiftwidth=4     " but tab key inserts 4
+set softtabstop=4    " and indentation advances in increments of 4
+set noexpandtab      " don't turn tabs into spaces
+
+Testing
+-------
+
+There is an extensive set of unit tests and system tests in the test/
+directories of both DTN2 and oasys, as well as a suite of test
+utilities in the test-utils directories of both. 
+