todo file
[debian/openrocket] / TODO
diff --git a/TODO b/TODO
index a39c66479410db9237b6d0c74920972819d590de..1ebb1dad91da4d4104245d608a3bba421677a422 100644 (file)
--- a/TODO
+++ b/TODO
 
-GUI:
+Feature roadmap for OpenRocket 2.0
+----------------------------------
 
-- Preferences dialog
+Must have:
 
+- Logging system into use
+- Reduce memory footprint
+- Reduce memory leakage
+- Load thrust curves from external directory
+- Support duplicate motor definitions
 
-BUGS:
 
+Maybe:
 
-COMPUTATION:
+- Water rocket modeling
 
 
-FILE/STORAGE:
 
+More ideas:
+-----------
 
-OTHER:
 
-- web-sivut
+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
 
-DIPPA:
 
+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:
 
-LATER:
+- 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
 
-- Simulation delete/copy/paste hotkeys
-  (either component or simulation selected, but not both)
-- Add BodyComponent at end of rocket when no component is selected
-- Showing events in plot (maybe future)
-- Search field in motor selection dialog
-- Through-the-wall fins
-- Store materials
 
-- Streamer CD estimation
+Optimization:
 
-- exporting (maybe later)
+- 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.
 
-- Make ThicknessRingComponent implement RadialParent and allow
-  attaching components to a TubeCoupler
 
+Running:
 
+- Windows executable wrapper (launch4j)
+- Allow only one instance of OpenRocket running (RMI communication)
+- Running/simulating from command line
 
 
-DONE:
+UI issues:
 
-- Automatic diameters of body components
-- Copy/paste
+- Easy/intuitive zooming of plots
+- Only schedule rocket figure update instead of each time updating it
+- Importing flight data (file/altimeter)
+- Saving as SVG
+- Implement setDefaults() method for RocketComponent
+- 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
 
-18.4.:
-- Esc, Ctrl-Z and Y etc.
-- Look and feel
 
-19.4.:
-- Nose cone and transition shoulders in GUI
-- zoom, cut/copy/paste etc. icons
+Simulation:
 
-23.4.:
-- Figure or rocket not updating when using a new BasicFrame
+- 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
 
-24.4.:
-- File save and load
-- Motor configuration editing          (pre-alpha)
-- Save simulations
 
-25.4.:
-- Multi-stages simulation              (pre-alpha)
-- Make sure simulations end
-- Mass and CG overrides                        (pre-alpha)
-- General loader
+Structural analysis:
 
-26.4.:
-- Centering ring inner diameter automatics     (pre-alpha)
-- Landing simulation                   (pre-alpha ??)
-- Parachute/Streamer editing in GUI    (pre-alpha)
-- Launch lug editing in GUI            (pre-alpha)
+- 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
 
-29.4.:
-- Actual plotting done
-- Refactored source code packages
 
-2.5.:
-- Plotting                             (pre-alpha)
-- Gravity model
-- More units and specific custom units (angle, temperature, ...)
-- Transition/Nose cone description text wrapping
-- Fin set CP jumps at Mach 0.9
+Component support:
 
-- Error dialogs for load/save/etc
+- Screw weights for nose cones / transitions
+- Support for external pods
+- Support for tube fins
 
-3.5.:
-- More materials                       (pre-alpha)
-- File opening from command line
 
-9.5.:
-- Rocket configuration dialog
-- Warnings in poor conditions (transition supersonic)
-- New or old fin-body interference?
-- poista tiedot laminaarisesta vastuksesta
-- vertailuosio
+File support:
 
-11.5.:
-- Better default values for components
-- Component analysis dialog show zero total mass and CG
-- Compression support in save
-- Simulation storage options
+- Reading (and writing) .RKT format
 
-12.5.:
-- Load simulations
-- Update file version to 1.0
 
-13.5.:
-- statistiikat softasta
+Refactoring tasks:
 
-17.5.:
-- jonkin verran TODOja
-- conclusion
-- viitteet
-- Draw the component icons
-- splashscreen
+- Move startup class to src14 directory, remove reflection
+- 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)
 
-18.5.:
-- About dialog + version number
+
+
+Done:
+-----
+
+- Reading .RKT format
\ No newline at end of file