todo file
[debian/openrocket] / TODO
diff --git a/TODO b/TODO
index 79f2c962fcd0a73114e12a571973748e211e5d73..1ebb1dad91da4d4104245d608a3bba421677a422 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,44 +1,83 @@
 
-Feature roadmap for OpenRocket 1.0
+Feature roadmap for OpenRocket 2.0
 ----------------------------------
 
+Must have:
 
-Must-have:
+- Logging system into use
+- Reduce memory footprint
+- Reduce memory leakage
+- Load thrust curves from external directory
+- Support duplicate motor definitions
 
-- Go through thrust curves and select best ones
-- Updated splash screen
 
+Maybe:
 
+- Water rocket modeling
 
-Maybe:
 
-- Re-investigate 15% reduction of three-fin CNa
-- Take into account all fins in interference effects
-- Add slight randomness to yaw moment
 
+More ideas:
+-----------
+
+
+Memory usage:
 
+- Store data as floats instead of doubles
+- Reduce memory leakage when closing windows
+- Make simulation data immutable, don't store copies in undo/redo
+- Profile memory usage during operation (send data to server?)
+- Warn user when 90% of memory is used, offer to send info to server
 
-Postponed:
-----------
+
+Logging:
+
+- Implement a central logging system
+  - takes messages with different priorities
+  - converts them into LogLine's that are passed to log handlers
+  - printing log handler and storing log handler
+  - bug reports to contain last ~50 log lines
+- LogLine
+  - contains TraceException for log position information
+  - contains sequential number
+- log storing handler stores separately debug and info/warn levels
+- remove all System.out/err writing, replace with logging
 
 
 Motor support:
 
+- Combine duplicates into one display in the selection dialog
+  - A single manufacturer/designation can contain multiple thrust curves
+  - Delays are combined
+  - Type is selected based on any not-unknown type
+  - Hybrid type always includes P delay
+  - Default delay selected based on heuristics
+  - Store recently used motors, use in default selection
 - Integration with thrustcurve.org (syncing?)
 - Reading thrust curves from external directory
 - Plot motor thrust curve
 - Water rocket modelling
 
 
+Optimization:
+
+- Automatic general rocket optimizer (for altitude, velocity, duration etc)
+  that allows changing any rocket parameters for optimization
+- Analysis of various motors for the rocket.  Search all motors by
+  diameter, impulse range, manufacturer, simulate them and present the
+  results.
+
+
 Running:
 
 - Windows executable wrapper (launch4j)
 - Allow only one instance of OpenRocket running (RMI communication)
-- Running from command line
+- Running/simulating from command line
 
 
 UI issues:
 
+- Easy/intuitive zooming of plots
 - Only schedule rocket figure update instead of each time updating it
 - Importing flight data (file/altimeter)
 - Saving as SVG
@@ -46,12 +85,31 @@ UI issues:
 - BUG: Inner tube cluster rotation, edit with spinner arrows, slider wrong
 - NAR/CNES/etc competition validity checking
 - Print support
+- Drag and drop of components / other table items
+- Ctrl+scroll wheel to zoom in/out
+- Move components by dragging on the figure
+- Progress bar during startup
 
 
 Simulation:
 
 - Landing scatter plots
 - Simulate other branches
+- Remove need for 5m launch rod in real-time simulations (reduces apogee)
+  A simulation listener that checks when sufficient velocity has been reached?
+- [BUG] Take single-fin cant yaw effect into account
+
+
+Structural analysis:
+
+- Run a simulation with each step doing a component analysis
+- Compute the force between different components:
+  - between body components (pushing against and pulling apart)
+  - inner tubes and the parent body tubes
+  - lateral forces on fins
+  - individual fin normal forces?
+- Take into account acceleration, drag, gravity
+- Plot forces against time
 
 
 Component support:
@@ -61,9 +119,9 @@ Component support:
 - Support for tube fins
 
 
-Other:
+File support:
 
-- Reading (writing) .RKT format
+- Reading (and writing) .RKT format
 
 
 Refactoring tasks:
@@ -72,43 +130,16 @@ Refactoring tasks:
 - Remove database etc. initialization from class initialization,
   create separate set of test motors
 - Extract event rules and data saving from Simulator into listeners
+- How to handle different simulation situations elegantly
+  (launch rod, free flight, recovery)
 - Change SimulationStatus to include methods for obtaining basic
   position (maybe even change to an interface, implements Cloneable)
+- Modularize calculators, simulators, atmospheric conditions, etc.
 - Change Motor (immutable) to be a factory of MotorInstance (stateful)
 
 
 
 Done:
 -----
-- Search field in motor selection dialog
-- Motor selection/editing from Edit configurations dialog
-- Change FreeformFinSet to throw checked exceptions
-- Fix engine block icons
-- Exporting flight data
-- Split cluster into separate components
-- Create application icon and take into use
-- Error dialog for uncaught exceptions
-- Check where plot data ends (all rest NaN)
-- Example rocket designs (hybrid w/ dual deployment, staged rocket)
-- Better error/warning dialogs when reading/writing files
-- Store custom materials
-- Read more thrust curve formats
-- Showing events in plots
-- Table boolean selecting by clicking label
-- Test automatic exception reporting (for 0.9.3)
-- Draw remaining event icons (for 0.9.3)
-- Update "About" dialog with icon and source info
-In 0.9.4:
-- Through-the-wall fins
-- Make ThicknessRingComponent implement RadialParent and allow
-  attaching components to a TubeCoupler  (for 0.9.4)
-- Save file as oldest OpenRocket format possible  (for 0.9.4)
-- Non-exception bug handling
-- JTree text is cropped unnecessarily
-- Allow editing user-defined materials
-- [BUG] All configuration dialogs too high
-- Simulation plot dialog forces dialog one button row too high (All/None)
-- Add styrofoam and depron materials
-- Inform user about software updates
-In 0.9.5:
-- Add label to motor panel to tell current number of stages
+
+- Reading .RKT format
\ No newline at end of file