Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "OAW Developer Guidelines"

(Platform)
(Redirecting to OAW)
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
= oAW Developer Guidelines =
+
#REDIRECT [[OAW]]
 
+
The purpose of this page is to
+
* centrally collect suggestions for policies and procedures for the development of openArchitectureWare 5
+
* agree upon policies and procedures
+
* provide new developers an easier start
+
 
+
Feel free to add your own suggestions and mark them with your name to make discussions easier.
+
 
+
'''Don't correct other user's suggestions (except typos). We should first collect ideas and then discuss critical issues.'''
+
 
+
It's not our objective to establish a heavy-weight process for oAW development. Make sure your suggestions are not to restrictive to keep oAW agile.
+
 
+
If some of these suggestions appear trivial or common sense to you, they might not be for others (especially new developers). So please ignore them gracefully unless you disagree.
+
 
+
 
+
== Platform ==
+
* Code must comply to Java 5 --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* In order to ensure we only use Java 5, all projects get a project specific compiler setting. --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 10:03, 30 April 2008 (EDT)
+
* Target platform is Eclipse 3.3 (4?) --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
 
+
== Coding ==
+
* Internal packges must have ''internal'' in their name --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:56, 30 April 2008 (EDT)
+
* If you add a (source-)folder make sure to update ''build.properties''. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:56, 30 April 2008 (EDT)
+
* Generated code should always reside in separate folder clearly marked as generated, such as ''src-gen'' or ''emf-gen''. I'd prefer to even generate code into spearate plug-ins, as some files, like ''MANIFEST.MF'' cannot be merged. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 09:04, 30 April 2008 (EDT)
+
* The name of Java packages in plug-in should start with the name of the plug-in. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 09:16, 30 April 2008 (EDT)
+
* Wherever possible, IDs for Eclipse extensions should take the same name as the corresponding class. --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:46, 30 April 2008 (EDT) E.g. 
+
<source lang="xml">
+
  class="org.openarchitectureware.core.properties.MetamodelContributorsPropertyAndPreferencePage" 
+
  id="org.openarchitectureware.core.properties.MetamodelContributorsPropertyPage"
+
</source>
+
 
+
== Formating ==
+
* In order to make for a homogeneous look of the source code, we use the built-in Eclipse formatter (with slight adoptions if neccessary) as far as possible. --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:34, 30 April 2008 (EDT)
+
* We use TABS instead of SPACES. --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:34, 30 April 2008 (EDT)
+
* Curly braces will be places at the end of a line, not on a separate line. --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:34, 30 April 2008 (EDT)
+
 
+
== Code Repository ==
+
* Everything that is checked into the repository must compile and must not break the build. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* If you change code, make sure the unit tests are OK before you commit. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* Avoid checking in generated code. Find out how to automtically run the generator on the build server. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 09:09, 30 April 2008 (EDT)
+
 
+
== Plug-ins ==
+
* We maintain one team project set in the CVS that is always up-to-date. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* We maintain an additional project set for anonymous access to the CVS (needed for non-committers). --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 10:02, 30 April 2008 (EDT)
+
* PSFs should be exported with working sets included. --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 10:02, 30 April 2008 (EDT)
+
* A Plug-in's ID must be the same as the project's name. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* Separate UI code and non-UI code in different plug-ins. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* If you add a plug-in, you must add it to the team project set. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* If you add a plug-in, add it to at least one feature. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* The name of a feature should always end with ''.feature''. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:57, 30 April 2008 (EDT)
+
* We need a way to communicate the addition of stuff to the project sets so everybody gets automatically notified and can check out the additional plug-ins. Suggestion: have Nick write a tool that scans .psf files for changes and notifies all developers of the respective module about this addition. --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:52, 30 April 2008 (EDT)
+
* We do NOT use Require-Bundle to import OSGi bundles, but instead use Import-Package. --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 10:00, 30 April 2008 (EDT)
+
 
+
== Logging and Tracing ==
+
* All plug-ins that will only run inside Eclipse should use the Platform tracing API (http://wiki.eclipse.org/FAQ_How_do_I_use_the_platform_debug_tracing_facility%3F). --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:52, 30 April 2008 (EDT)
+
* Everything that must also run '''outside''' the Eclipse platform must use Apache Commons Logging (to avoid dependencies to Eclipse). --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:56, 30 April 2008 (EDT)
+
* All Exceptions that cannot be recovered must be routed to the error log (if the offending code runs inside Eclipse) or to the error console (System.err.println). See also http://wiki.eclipse.org/FAQ_How_do_I_use_the_platform_logging_facility%3F. --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:56, 30 April 2008 (EDT)
+
 
+
== Testing ==
+
* Unit tests reside in a separate plug-in named ''<name of the plug-in to be tested>.tests'' --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 09:00, 30 April 2008 (EDT)
+
* Unit tests should test a single feature only. Avoid tests that depend on a large number of features. Tests will be far easier to maintain. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* Never release before all tests are green on the build server. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* If a test cannot be fixed, it is either obsolete or something is terribly wrong. Delete obsolete tests, fix all others. Never ignore failing tests. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 09:14, 30 April 2008 (EDT)
+
* All tests must also succeed on the build server. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 09:14, 30 April 2008 (EDT)
+
 
+
== Build ==
+
* If the nightly build fails, it must be fixed ASAP. --[[User:Jan.koehnlein.itemis.de|Jan.koehnlein.itemis.de]] 08:51, 30 April 2008 (EDT)
+
* We use continuous integration --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:31, 30 April 2008 (EDT)
+
 
+
== Additional Tools ==
+
* GUI design: SWT Designer --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:39, 30 April 2008 (EDT)
+
* Bug hunting: FindBugs (triggered manually on the client, but run automatically on the build server) --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:39, 30 April 2008 (EDT)
+
* Ensuring architectural constraints: SonarJ --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:39, 30 April 2008 (EDT)
+
* Profiling: YourKit --[[User:Peter.friese.itemis.de|Peter.friese.itemis.de]] 09:39, 30 April 2008 (EDT)
+

Latest revision as of 08:59, 9 December 2008

Redirect to:

Back to the top