From ea6639d4ffa515738ff3935bd201e0d29fb686f0 Mon Sep 17 00:00:00 2001
From: ssides
+ This is a step-by-step guide describing the process for adding a new feature to ISIS.
+ Since ISIS is made up of many application programs, when we say new feature we are referring adding
+ a new program to ISIS. Each
+ program in ISIS is focussed on a narrow subject, for example, isis2std is focussed on exporting ISIS cubes
+ to standard image formats such as jpeg, tif, or png.
+
+ ISIS applications are written in C++ and are supported on Ubuntu Linux and Mac OS.
+
+ ISIS applications are linked against many external libraries. We encourage you to become familiar with these
+ external libraries. One place to start is the environment.yml file located at the root of the ISIS source
+ code tree.
+
+ All of the ISIS source code is available on GitHub.
+ This GitHub source code repository is the primary Git repository for ISIS. If you are unfamiliar with
+ Git and/or GitHub you should go through the GitHub getting started
+ pages before you start writing code.
+
+ The ISIS package is written in C++. In order to run and test your new feature, you will need to compile the source code and
+ link it against the ISIS library and the external libraries. Follow the instructions on the ISIS GitHub Wiki for
+ building ISIS.
+
+ Depending on how your computer is setup, you may also need to install:
+
+ Once you have a complete environment set up for ISIS development, we suggest you
+ compile and build
+ all of ISIS. This step will make sure sure you have everything setup and ready to go.
+
+ Before you start writing your new feature, create an issue for
+ it on the ISIS GitHub site. Doing this will allow other ISIS developers to way in on your preposed feature. By posting
+ a description of what you want to do and asking questions, other developers can give you pointers on how to
+ implement it.
+
+ The ISIS source code is organized by having a dedicated directory where all of the source code for an application is
+ stored. The files in this directory will be exclusively to your feature. This is where using another application as
+ a template can be very useful.
+
+ Populate the new files with the code necessary to implement your feature.
+
+ Since you are adding a new application to ISIS you will need to re-run the cmake command. This will add
+ the new application to the list of applications the build system knows about.
+
+ Iterate over the following steps until you have your new feature producing the desired result
+ Introduction
+ Resources
+
+
+ Getting the ISIS source code
+ Steps to get ISIS source code on your local machine
+
+
+
+ Setting up an environment to compile and link ISIS
+
+
+
+ Starting a conversation with other ISIS developers
+ Writing your new application
+
+ Creating the files for your new application
+
+
+ Compile and link your new application for the first time
+
+
+
+ Fix, run, hand test, debug the new application
+
+
+
+
+
+ Writing your new application
+ Applications in ISIS are required to have tests that exercise the majority of the application specific code.
+ These test are written using Google Test (aka, gtest). The source code for all gtests is located in the "isis/tests" directory
+ starting at the root of the code repository. Create a new file for your new application with the name "FunctionalTestsYournewapp.cpp", and
+ write tests to exercise the application. Remember to test only the functionality of your new code and not the ISIS library. Tests for the
+ ISIS library already exist.
+
+ Now that you have all the pieces for your new application and it works perfectly. It's time to get it reviewed by + other ISIS developers, so it can be added to ISIS and be distributed with the next public feature release. +
++ Once your reviewers are satisfied one of them will merge your new application code with the ISIS dev brand. When + the next public feature release is created, your new application will be available alongside the other ISIS applications. +
+ + + +This is a step-by-step guide describing the process for adding a new feature to ISIS. - Since ISIS is made up of many application programs, when we say new feature we are referring adding + Since ISIS is made up of many application programs, when we say new feature we mean adding a new program to ISIS. Each program in ISIS is focussed on a narrow subject, for example, isis2std is focussed on exporting ISIS cubes to standard image formats such as jpeg, tif, or png.
++ Many people have contributed code, documentation, answers, and suggestions to the ISIS software. As part of + that community you should be familiar with the contributing guide. +
ISIS applications are written in C++ and are supported on Ubuntu Linux and Mac OS.
- The contains + The ISIS library contains hundreds of support classes and functions. Every application takes advantage of these support routines to accomplish its tasks. We encourage you to get familiar with the library before starting to write your first application.
- There are over 400 . + There are over 400 ISIS applications. We suggest you get familiar with as many of these as possible, so you don't duplicate a feature that has already been implemented, and to use an existing application as a template for your new feature.
- ISIS applications are linked against many external libraries. We encourage you to become familiar with these - external libraries. One place to start is the environment.yml file located at the root of the ISIS source - code tree. + ISIS applications are linked against many useful external libraries. We encourage you to become familiar with these + external libraries. A list of the external libraries ISIS uses directly can be found in the environment.yml file.
+ The source code inside an ISIS application directory should be organized to be a callable ISIS + application. This is a change from the older style applications that could not be called directly by other applications. + Details about writing callable ISIS applications can be found at: + Refactoring ISIS Applications +
+Populate the new files with the code necessary to implement your feature.
++ You may also want to create a test file for your new application, and one for each supporting class you write. +
- Since you are adding a new application to ISIS you will need to re-run the cmake command. This will add + Since you are adding a new application to ISIS you will need to reconfigure your build with cmake. This will add the new application to the list of applications the build system knows about.
+ Applications and complex support classes in ISIS are required to have tests that exercise the majority of the their code. + These test are written using googletest (aka, gtest). + The source code for all gtests is located in the "isis/tests" directory. + Create a new test file for your application with the name "FunctionalTestsYournewapp.cpp", and one for each support class with a descriptive name. + Write tests to exercise the application and any support classes. Remember to test only the functionality of your new code + and not the ISIS library. Tests for the ISIS library already exist. See the + guide for writing tests for detailed instructions. +
+ ++ Now you need to let the ISIS community know about your new application and add your name to the list + of people who have contributed to ISIS over it's lifetime. +
++ Edit the "CHANGELOG.md" file, located at the root of your local repository, and add an entry describing your new + application. Read the instructions inside the file carefully. +
++ Edit the ".zenodo.json" file, also located at the root or you local repository, and add your information. +
+@@ -149,7 +180,7 @@
- Once your reviewers are satisfied one of them will merge your new application code with the ISIS dev brand. When + Once your reviewers are satisfied one of them will merge your new application code with the ISIS dev branch. When the next public feature release is created, your new application will be available alongside the other ISIS applications.
From 3cfb31ac4919f5dcb90b298932f6746245407d1d Mon Sep 17 00:00:00 2001 From: ssidesPopulate the new files with the code necessary to implement your feature. @@ -137,7 +137,7 @@