GithubHelp home page GithubHelp logo

openrocket / openrocket.github.io Goto Github PK

View Code? Open in Web Editor NEW
13.0 10.0 11.0 89.3 MB

openrocket.info website source

Home Page: https://openrocket.info/

JavaScript 10.47% HTML 25.56% CSS 59.99% PHP 3.95% Ruby 0.03%
css html javascript jekyll openrocket website

openrocket.github.io's Introduction

OpenRocket πŸš€

OpenRocket is a free, fully featured model rocket simulator that allows you to design and simulate your rockets before actually building and flying them.

Build Status License: GPL v3 GitHub release Github Releases (by release) Read the Docs

snap release Chocolatey release Join our Discord server!


πŸ› οΈ Design, Visualize, and Analyze

  1. Design your rockets using a rich selection of built-in components: Three-stage rocket - 2D

  2. Visualize your masterpiece in 3D: Three-stage rocket - 3D

  3. Plot & Analyze your simulation results for precision and improvements: Three-stage rocket - Simulation plot

🌟 Features

  • Six-degree-of-freedom flight simulation
  • Automatic design optimization
  • Realtime simulated altitude, velocity, and acceleration display
  • Staging and clustering support
  • Export to other simulation programs (RockSim, RASAero II)
  • Export component(s) to OBJ file for 3D printing
  • Cross-platform (Java-based)

... plus many more

πŸ“– Read more on our website.

πŸ’Ύ Installers

You can find the OpenRocket installers here.

Release notes are available on each release's page or on our website.

πŸ“– Documentation

You can find our documentation on ReadTheDocs.

πŸš€ Getting started

The easiest way to get started is to open one of our in-program example designs:

Get started with the example designs

Dive into the essentials: adjust component dimensions, plot a simulation, swap out motors, ... Explore the impact of your changes and, most importantly, enjoy the process! 😊

πŸ’ͺ Contribute

Help us soar higher! Whether it's implementing features, writing documentation, or creating design examples, every contribution matters. Interested? Check out how to get involved and the practicalities of contributing.

✨ Contributors

You can view the full list of contributors here.

🌍Translators

  • Tripoli France
  • Tripoli Spain
  • Stefan Lobas / ERIG
  • Mauro Biasutti
  • Sky Dart Team / Ruslan V. Uss
  • Vladimir Beran
  • Polish Rocketry Society / Łukasz & Alex Kazanski
  • Sibo Van Gool
  • Mohamed Amin Elkebsi

πŸ“œ License

OpenRocket is proudly open-source under the GNU GPL license. Feel free to use, study, and extend.


⭐ Please give us a star if you find OpenRocket useful, and spread the word! ⭐

Star History Chart

openrocket.github.io's People

Contributors

cabbey avatar itshanney avatar joepfeiffer avatar neilweinstock avatar plaa avatar sibovg avatar wcravens avatar wolsen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openrocket.github.io's Issues

Linux 3D isn't working

Hadn't been verifying 3D was still working for Linux after my system rebuild last week; discovered tonight it's not.

When going to a 3D view I'm getting an error in the window: "Unable to load 3d Libraries: XXX0 profile[2]: GL2->profileImpl GL3bc !!! not mapped

Hoping distributing as an appimage will let me include old enough openGL libraries to get it working again....

Photo studio broken in 23.09.beta.01

App crashing when Photo studio entered.

---------- Bug report ----------

Please include a description about what actions you were performing when the exception occurred:
(You can edit text directly in this window)

If possible, please send us the .ork file that caused the bug.

Include your email address (optional; it helps if we can contact you in case we need additional information):

(Do not modify anything below this line.)
---------- Exception stack trace ----------
com.jogamp.opengl.GLException: Unable to determine GraphicsConfiguration: WindowsWGLGraphicsConfiguration[DefaultGraphicsScreen[WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle 0x0, owner false, NullToolkitLock[obj 0x7dbe6873]], idx 0], pfdID 21, ARB-Choosen true,
requested GLCaps[rgba 8/8/8/1, trans-rgba 0x0/0/0/0, accum-rgba 0/0/0/0, dp/st/ms 16/0/6, sample-ext default, dbl, mono , hw, GLProfile[GL2/GL4bc.hw], on-scr[.]],
chosen GLCaps[wgl vid 21 arb: rgba 8/8/8/8, trans-rgba 0x0/0/0/0, accum-rgba 16/16/16/16, dp/st/ms 16/0/8, sample-ext default, dbl, mono , hw, GLProfile[GL2/GL4bc.hw], on-scr[.]]] at jogamp.opengl.windows.wgl.awt.WindowsAWTWGLGraphicsConfigurationFactory.chooseGraphicsConfigurationImpl(WindowsAWTWGLGraphicsConfigurationFactory.java:182) at com.jogamp.nativewindow.GraphicsConfigurationFactory.chooseGraphicsConfiguration(GraphicsConfigurationFactory.java:424) at com.jogamp.opengl.awt.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java:1512) at com.jogamp.opengl.awt.GLCanvas.addNotify(GLCanvas.java:607) at java.desktop/java.awt.Container.addNotify(Container.java:2804) at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839) at java.desktop/java.awt.Container.addNotify(Container.java:2804) at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839) at java.desktop/java.awt.Container.addNotify(Container.java:2804) at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839) at java.desktop/javax.swing.JRootPane.addNotify(JRootPane.java:729) at java.desktop/java.awt.Container.addNotify(Container.java:2804) at java.desktop/java.awt.Window.addNotify(Window.java:791) at java.desktop/java.awt.Frame.addNotify(Frame.java:495) at java.desktop/java.awt.Window.pack(Window.java:826) at net.sf.openrocket.gui.figure3d.photo.PhotoFrame$4.(PhotoFrame.java:122) at net.sf.openrocket.gui.figure3d.photo.PhotoFrame.(PhotoFrame.java:118) at net.sf.openrocket.gui.figure3d.photo.PhotoFrame.(PhotoFrame.java:71) at net.sf.openrocket.gui.main.BasicFrame$19.actionPerformed(BasicFrame.java:692) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1028) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1072) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) at java.desktop/java.awt.Component.processEvent(Component.java:6391) at java.desktop/java.awt.Container.processEvent(Container.java:2266) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

---------- Thread information ----------
Thread[AWT-EventQueue-0,6,main]

---------- System information ----------
OpenRocket version: 23.09.beta.01
OpenRocket source: default
OpenRocket location: C:\Program Files\OpenRocket2309.\OpenRocket.jar
User-defined thrust curves location: C:\Users\sj_h1\AppData\Roaming\OpenRocket\ThrustCurves
LAF: com.sun.java.swing.plaf.windows.WindowsLookAndFeel
JOGL version: 2.5.0-rc-20230523
Current default locale: en_US
System properties:
exe4j.consoleCodepage=cp0
exe4j.isInstall4j=true
exe4j.launchName=C:\Program Files\OpenRocket2309\OpenRocket.exe
exe4j.moduleName=C:\Program Files\OpenRocket2309\OpenRocket.exe
exe4j.semaphoreName=Local\c:_program_files_openrocket2309_openrocket.exe0
exe4j.tempDir=
exe4j.unextractedPosition=0
file.encoding=Cp1252
file.separator=
install4j.appDir=C:\Program Files\OpenRocket2309
install4j.exeDir=C:\Program Files\OpenRocket2309
install4j.launcherId=59
install4j.swt=false
java.class.path=C:\Program Files\OpenRocket2309.install4j\i4jruntime.jar;C:\Program Files\OpenRocket2309.\OpenRocket.jar
java.class.version=61.0
java.home=c:\program files\openrocket2309\jre
java.io.tmpdir=C:\Users\sj_h1\AppData\Local\Temp
java.library.path=c:\program files\openrocket2309\jre\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\dotnet;C:\Program Files\Git\cmd;C:\Program Files\PuTTY;C:\Program Files (x86)\Bitvise SSH Client;C:\Users\sj_h1\AppData\Local\Microsoft\WindowsApps;C:\Users\sj_h1\AppData\Local\GitHubDesktop\bin;C:\Users\sj_h1\AppData\Local\Programs\Microsoft VS Code\bin
java.runtime.name=OpenJDK Runtime Environment
java.runtime.version=17.0.7+7-LTS
java.specification.name=Java Platform API Specification
java.specification.vendor=Oracle Corporation
java.specification.version=17
java.util.Arrays.useLegacyMergeSort=true
java.vendor=BellSoft
java.vendor.url=https://bell-sw.com/
java.vendor.url.bug=https://bell-sw.com/support
java.version=17.0.7
java.version.date=2023-04-18
java.vm.compressedOopsMode=Zero based
java.vm.info=mixed mode
java.vm.name=OpenJDK 64-Bit Server VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Oracle Corporation
java.vm.specification.version=17
java.vm.vendor=BellSoft
java.vm.version=17.0.7+7-LTS
jdk.debug=release
jnlp.jogamp.tmp.cache.root=jln17698062404795888796
line.separator=\u000d\u000a
native.encoding=Cp1252
os.arch=amd64
os.name=Windows 10
os.version=10.0
path.separator=;
sun.arch.data.model=64
sun.awt.enableExtraMouseButtons=true
sun.awt.exception.handler=net.sf.openrocket.gui.main.SwingExceptionHandler$AwtHandler
sun.boot.library.path=c:\program files\openrocket2309\jre\bin
sun.cpu.endian=little
sun.cpu.isalist=amd64
sun.io.unicode.encoding=UnicodeLittle
sun.java.command=C:\Program Files\OpenRocket2309\OpenRocket.exe
sun.jnu.encoding=Cp1252
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
sun.os.patch.level=
user.country=US
user.dir=C:\Program Files\OpenRocket2309
user.home=C:\Users\sj_h1
user.language=en
user.name=sj_h1
user.script=
user.timezone=America/Chicago
user.variant=
---------- Error log ----------
1 0.001 INFO (SwingStartup.java:68) Starting up OpenRocket version 23.09.beta.01
2 0.003 INFO (SwingStartup.java:77) Checking for graphics head
3 0.005 INFO (SwingStartup.java:88) Moving startup to EDT
4 0.068 INFO (SwingStartup.java:180) Initializing the splash screen
5 0.122 INFO (SwingStartup.java:184) Registering exception handler
6 0.126 INFO (SwingStartup.java:190) Loading databases
7 2.279 INFO (TranslatorProvider.java:49) Using default locale en_US
8 2.298 INFO (TranslatorProvider.java:61) Set up translation for locale en_US, debug.currentFile=messages.properties
9 2.300 INFO (ComponentPresetDatabaseLoader.java:91) Loading component presets from datafiles/components
13 2.319 INFO (SwingStartup.java:258) Starting update check
14 2.322 INFO (SwingStartup.java:203) Setting LAF
15 2.330 INFO (MotorDatabaseLoader.java:90) Starting reading serialized motor database
18 2.714 INFO (SwingStartup.java:226) Opening main application window
19 2.743 INFO (BasicFrame.java:1901) New action initiated
24 2.970 INFO (MotorDatabaseLoader.java:96) Ending reading serialized motor database, motorCount=1899
25 2.972 INFO (MotorDatabaseLoader.java:71) Starting reading user-defined motors
26 2.974 INFO (MotorDatabaseLoader.java:81) Ending reading user-defined motors, motorCount=1899
98 3.918 INFO (UpdateInfoRetriever.java:148) Current build is newer
202 27.910 INFO (SwingStartup.java:234) Checking update status
203 27.910 INFO (SwingStartup.java:96) Startup complete
211 176.695 INFO (BasicFrame.java:1309) Starting OpenFileWorker
212 176.696 INFO (SwingWorkerDialog.java:133) Running SwingWorker net.sf.openrocket.gui.util.OpenFileWorker@2d22f8bb
213 176.700 INFO (OpenRocketLoader.java:44) Loading .ork file
281 0.000 DEBUG (-) ===== 194 DEBUG lines removed =====
281 176.889 DEBUG (Rocket.java:682) Freezing Rocket
282 176.889 DEBUG (Rocket.java:546) Rocket is in frozen state, adding event ComponentChangeEvent[mass,aero] info freeze list
283 176.889 DEBUG (Rocket.java:708) Thawing rocket, freezeList=[ComponentChangeEvent[mass,aero]]
284 176.899 DEBUG (Rocket.java:682) Freezing Rocket
285 176.899 DEBUG (Rocket.java:546) Rocket is in frozen state, adding event ComponentChangeEvent[mass] info freeze list
286 176.899 DEBUG (Rocket.java:708) Thawing rocket, freezeList=[ComponentChangeEvent[mass]]
287 176.904 DEBUG (Rocket.java:682) Freezing Rocket
288 176.904 DEBUG (Rocket.java:546) Rocket is in frozen state, adding event ComponentChangeEvent[mass] info freeze list
289 176.904 DEBUG (Rocket.java:708) Thawing rocket, freezeList=[ComponentChangeEvent[mass]]
290 176.912 DEBUG (SwingWorkerDialog.java:166) Estimated run time, estimate=2140 remaining=1926
291 176.913 INFO (SwingWorkerDialog.java:178) Opening dialog for SwingWorker net.sf.openrocket.gui.util.OpenFileWorker@2d22f8bb
292 176.928 DEBUG (DatabaseMotorFinder.java:47) type Reloadable, manufacturer AeroTech, designation H148R, diameter NaN, length NaN, digest 18271c30f81ec3213a037e53a5b678dc, warnings Messages[]
293 176.937 DEBUG (Rocket.java:682) Freezing Rocket
294 176.937 DEBUG (Rocket.java:546) Rocket is in frozen state, adding event ComponentChangeEvent[mass] info freeze list
295 176.937 DEBUG (Rocket.java:708) Thawing rocket, freezeList=[ComponentChangeEvent[mass]]
296 177.002 DEBUG (FlightData.java:255) Computed flight values: maxAltitude=678.748 maxVelocity=163.347 maxAcceleration=110.767 maxMachNumber=0.482 timeToApogee=10.899 flightTime=64.5 groundHitVelocity=5.769 launchRodVelocity=11.905
297 177.002 DEBUG (FlightData.java:255) Computed flight values: maxAltitude=678.748 maxVelocity=163.347 maxAcceleration=110.767 maxMachNumber=0.482 timeToApogee=10.899 flightTime=64.5 groundHitVelocity=5.769 launchRodVelocity=11.905
298 177.024 INFO (OpenRocketLoader.java:96) Loading done
299 177.040 INFO (SwingWorkerDialog.java:181) Worker done, cancelled=false
300 177.040 DEBUG (BasicFrame.java:1363) Opening new frame with the document
301 177.041 DEBUG (BasicFrame.java:185) Instantiating new BasicFrame
302 177.041 DEBUG (BasicFrame.java:196) Constructing the BasicFrame UI
318 177.255 DEBUG (RocketFigure3d.java:142) Initializing RocketFigure3D OpenGL Canvas
319 177.255 DEBUG (RocketFigure3d.java:144) Setting up GL capabilities...
350 177.356 DEBUG (JarUtil.java:40) Found jar file using codeSource
351 177.356 DEBUG (ExampleDesignFile.java:118) Current jar file is: C:\Program Files\OpenRocket2309.\OpenRocket.jar
359 177.482 DEBUG (BasicFrame.java:320) ... Setting Initial Selection: [High Power Two Stage, Sustainer]
360 177.482 DEBUG (BasicFrame.java:324) BasicFrame instantiation complete
361 177.498 INFO (BasicFrame.java:1231) Closing window because it is replaceable
362 177.498 DEBUG (BasicFrame.java:1838) Disposing window
363 177.747 DEBUG (GUIUtil.java:381) Storing size of net.sf.openrocket.gui.main.BasicFrame: java.awt.Dimension[width=1550,height=838]
364 177.748 DEBUG (GUIUtil.java:386) Storing maximized state of net.sf.openrocket.gui.main.BasicFrame
365 177.748 DEBUG (GUIUtil.java:381) Storing size of net.sf.openrocket.gui.main.BasicFrame: java.awt.Dimension[width=1550,height=838]
366 177.749 DEBUG (GUIUtil.java:386) Storing maximized state of net.sf.openrocket.gui.main.BasicFrame
367 177.750 DEBUG (GUIUtil.java:381) Storing size of net.sf.openrocket.gui.main.BasicFrame: java.awt.Dimension[width=1550,height=838]
368 177.750 DEBUG (GUIUtil.java:386) Storing maximized state of net.sf.openrocket.gui.main.BasicFrame
372 177.762 DEBUG (GUIUtil.java:381) Storing size of net.sf.openrocket.gui.main.BasicFrame: java.awt.Dimension[width=1550,height=838]
373 177.764 DEBUG (GUIUtil.java:386) Storing maximized state of net.sf.openrocket.gui.main.BasicFrame
377 177.775 DEBUG (GUIUtil.java:381) Storing size of net.sf.openrocket.gui.main.BasicFrame: java.awt.Dimension[width=1550,height=838]
378 177.775 DEBUG (GUIUtil.java:386) Storing maximized state of net.sf.openrocket.gui.main.BasicFrame
381 182.889 USER (BasicFrame.java:691) Photo... selected
382 182.895 DEBUG (SkyBox.java:46) Trying URL jar:file:/C:/Program%20Files/OpenRocket2309/./OpenRocket.jar!/datafiles/sky/box/North.jpg
384 182.898 DEBUG (PhotoPanel.java:156) Setting up GL capabilities...
429 0.000 VBOSE (-) ===== 168 VBOSE lines removed =====
429 183.011 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:Ambiance] adding listener (total 2): javax.swing.JSlider$ModelListener@cae3fa8
430 183.012 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:Ambiance] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@2663e7b4
431 183.012 VBOSE (DoubleModel.java:975) DoubleModel[PhotoSettings:Ambiance] removing listener (total 2): javax.swing.plaf.basic.BasicSliderUI$Handler@2663e7b4
432 183.012 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:Ambiance] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@40da5a10
433 183.012 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:LightAz] adding listener (total 1): javax.swing.JSpinner$ModelListener@4250477e
434 183.013 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:LightAz] adding listener (total 2): javax.swing.JSlider$ModelListener@5c0ac451
435 183.013 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:LightAz] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@1ca11319
436 183.013 VBOSE (DoubleModel.java:975) DoubleModel[PhotoSettings:LightAz] removing listener (total 2): javax.swing.plaf.basic.BasicSliderUI$Handler@1ca11319
437 183.013 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:LightAz] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@802581c
438 183.014 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:LightAlt] adding listener (total 1): javax.swing.JSpinner$ModelListener@10c81314
439 183.015 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:LightAlt] adding listener (total 2): javax.swing.JSlider$ModelListener@1305bceb
440 183.015 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:LightAlt] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@43854d2c
441 183.015 VBOSE (DoubleModel.java:975) DoubleModel[PhotoSettings:LightAlt] removing listener (total 2): javax.swing.plaf.basic.BasicSliderUI$Handler@43854d2c
442 183.015 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:LightAlt] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@4a41bbc6
443 183.016 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SkyColorOpacity] adding listener (total 1): javax.swing.JSpinner$ModelListener@2c5f5af9
444 183.017 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SkyColorOpacity] adding listener (total 2): javax.swing.JSlider$ModelListener@560cf70e
445 183.017 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SkyColorOpacity] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@52f7a4
446 183.017 VBOSE (DoubleModel.java:975) DoubleModel[PhotoSettings:SkyColorOpacity] removing listener (total 2): javax.swing.plaf.basic.BasicSliderUI$Handler@52f7a4
447 183.017 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SkyColorOpacity] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@5189125
448 183.017 VBOSE (AbstractChangeSource.java:25) Adding change listeners, listener count is now 4
449 183.018 DEBUG (SkyBox.java:46) Trying URL jar:file:/C:/Program%20Files/OpenRocket2309/./OpenRocket.jar!/datafiles/sky/Meadow/North.jpg
450 183.018 DEBUG (SkyBox.java:51) Nope, JAR entry datafiles/sky/Meadow/North.jpg not found in C:\Program Files\OpenRocket2309.\OpenRocket.jar
451 183.018 DEBUG (SkyBox.java:46) Trying URL jar:file:/C:/Program%20Files/OpenRocket2309/./OpenRocket.jar!/datafiles/sky/Meadow/posz.jpg
452 183.019 DEBUG (SkyBox.java:46) Trying URL jar:file:/C:/Program%20Files/OpenRocket2309/./OpenRocket.jar!/datafiles/sky/miramar/miramar_North.jpg
453 183.019 DEBUG (SkyBox.java:51) Nope, JAR entry datafiles/sky/miramar/miramar_North.jpg not found in C:\Program Files\OpenRocket2309.\OpenRocket.jar
454 183.019 DEBUG (SkyBox.java:46) Trying URL jar:file:/C:/Program%20Files/OpenRocket2309/./OpenRocket.jar!/datafiles/sky/miramar/miramar_posz.jpg
455 183.019 DEBUG (SkyBox.java:51) Nope, JAR entry datafiles/sky/miramar/miramar_posz.jpg not found in C:\Program Files\OpenRocket2309.\OpenRocket.jar
456 183.019 DEBUG (SkyBox.java:46) Trying URL jar:file:/C:/Program%20Files/OpenRocket2309/./OpenRocket.jar!/datafiles/sky/miramar/miramar_pos_z.jpg
457 183.019 DEBUG (SkyBox.java:51) Nope, JAR entry datafiles/sky/miramar/miramar_pos_z.jpg not found in C:\Program Files\OpenRocket2309.\OpenRocket.jar
458 183.019 DEBUG (SkyBox.java:46) Trying URL jar:file:/C:/Program%20Files/OpenRocket2309/./OpenRocket.jar!/datafiles/sky/miramar/miramar_rt.jpg
459 183.024 DEBUG (PhotoPanel.java:147) Repainting on settings state change
460 183.025 VBOSE (AbstractChangeSource.java:25) Adding change listeners, listener count is now 5
461 183.027 VBOSE (AbstractChangeSource.java:25) Adding change listeners, listener count is now 6
462 183.028 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SmokeOpacity] adding listener (total 1): javax.swing.JSpinner$ModelListener@79eef7d7
463 183.028 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SmokeOpacity] adding listener (total 2): javax.swing.JSlider$ModelListener@4d7b80e5
464 183.028 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SmokeOpacity] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@2e92d681
465 183.029 VBOSE (DoubleModel.java:975) DoubleModel[PhotoSettings:SmokeOpacity] removing listener (total 2): javax.swing.plaf.basic.BasicSliderUI$Handler@2e92d681
466 183.029 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SmokeOpacity] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@2b581467
467 183.029 VBOSE (AbstractChangeSource.java:25) Adding change listeners, listener count is now 7
468 183.030 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:FlameAspectRatio] adding listener (total 1): javax.swing.JSpinner$ModelListener@753bea06
469 183.030 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:FlameAspectRatio] adding listener (total 2): javax.swing.JSlider$ModelListener@16ef257f
470 183.030 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:FlameAspectRatio] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@b32793b
471 183.030 VBOSE (DoubleModel.java:975) DoubleModel[PhotoSettings:FlameAspectRatio] removing listener (total 2): javax.swing.plaf.basic.BasicSliderUI$Handler@b32793b
472 183.031 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:FlameAspectRatio] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@1b6d5a6a
473 183.031 VBOSE (AbstractChangeSource.java:25) Adding change listeners, listener count is now 8
474 183.032 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SparkConcentration] adding listener (total 1): javax.swing.JSpinner$ModelListener@4b605d
475 183.032 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SparkConcentration] adding listener (total 2): javax.swing.JSlider$ModelListener@637c2254
476 183.032 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SparkConcentration] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@c6d9a4b
477 183.032 VBOSE (DoubleModel.java:975) DoubleModel[PhotoSettings:SparkConcentration] removing listener (total 2): javax.swing.plaf.basic.BasicSliderUI$Handler@c6d9a4b
478 183.033 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SparkConcentration] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@5390df84
479 183.033 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SparkWeight] adding listener (total 1): javax.swing.JSpinner$ModelListener@273333c2
480 183.034 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SparkWeight] adding listener (total 2): javax.swing.JSlider$ModelListener@5a6f4710
481 183.034 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SparkWeight] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@3c11d9e1
482 183.034 VBOSE (DoubleModel.java:975) DoubleModel[PhotoSettings:SparkWeight] removing listener (total 2): javax.swing.plaf.basic.BasicSliderUI$Handler@3c11d9e1
483 183.034 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:SparkWeight] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@43be6514
484 183.035 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:ExhaustScale] adding listener (total 1): javax.swing.JSpinner$ModelListener@4d33ffdf
485 183.036 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:ExhaustScale] adding listener (total 2): javax.swing.JSlider$ModelListener@1f297a4e
486 183.036 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:ExhaustScale] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@41d51d21
487 183.036 VBOSE (DoubleModel.java:975) DoubleModel[PhotoSettings:ExhaustScale] removing listener (total 2): javax.swing.plaf.basic.BasicSliderUI$Handler@41d51d21
488 183.036 VBOSE (DoubleModel.java:953) DoubleModel[PhotoSettings:ExhaustScale] adding listener (total 3): javax.swing.plaf.basic.BasicSliderUI$Handler@134acfc3
489 183.036 VBOSE (AbstractChangeSource.java:25) Adding change listeners, listener count is now 9
490 183.050 ERROR (SwingExceptionHandler.java:48) Handling uncaught exception on thread=Thread[AWT-EventQueue-0,6,main]

com.jogamp.opengl.GLException: Unable to determine GraphicsConfiguration: WindowsWGLGraphicsConfiguration[DefaultGraphicsScreen[WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle 0x0, owner false, NullToolkitLock[obj 0x7dbe6873]], idx 0], pfdID 21, ARB-Choosen true,
requested GLCaps[rgba 8/8/8/1, trans-rgba 0x0/0/0/0, accum-rgba 0/0/0/0, dp/st/ms 16/0/6, sample-ext default, dbl, mono , hw, GLProfile[GL2/GL4bc.hw], on-scr[.]],
chosen GLCaps[wgl vid 21 arb: rgba 8/8/8/8, trans-rgba 0x0/0/0/0, accum-rgba 16/16/16/16, dp/st/ms 16/0/8, sample-ext default, dbl, mono , hw, GLProfile[GL2/GL4bc.hw], on-scr[.]]] > at jogamp.opengl.windows.wgl.awt.WindowsAWTWGLGraphicsConfigurationFactory.chooseGraphicsConfigurationImpl(WindowsAWTWGLGraphicsConfigurationFactory.java:182) > at com.jogamp.nativewindow.GraphicsConfigurationFactory.chooseGraphicsConfiguration(GraphicsConfigurationFactory.java:424) > at com.jogamp.opengl.awt.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java:1512) > at com.jogamp.opengl.awt.GLCanvas.addNotify(GLCanvas.java:607) > at java.desktop/java.awt.Container.addNotify(Container.java:2804) > at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839) > at java.desktop/java.awt.Container.addNotify(Container.java:2804) > at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839) > at java.desktop/java.awt.Container.addNotify(Container.java:2804) > at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839) > at java.desktop/javax.swing.JRootPane.addNotify(JRootPane.java:729) > at java.desktop/java.awt.Container.addNotify(Container.java:2804) > at java.desktop/java.awt.Window.addNotify(Window.java:791) > at java.desktop/java.awt.Frame.addNotify(Frame.java:495) > at java.desktop/java.awt.Window.pack(Window.java:826) > at net.sf.openrocket.gui.figure3d.photo.PhotoFrame$4.(PhotoFrame.java:122) > at net.sf.openrocket.gui.figure3d.photo.PhotoFrame.(PhotoFrame.java:118) > at net.sf.openrocket.gui.figure3d.photo.PhotoFrame.(PhotoFrame.java:71) > at net.sf.openrocket.gui.main.BasicFrame$19.actionPerformed(BasicFrame.java:692) > at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) > at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) > at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) > at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) > at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374) > at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1028) > at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1072) > at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626) > at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389) > at java.desktop/java.awt.Component.processEvent(Component.java:6391) > at java.desktop/java.awt.Container.processEvent(Container.java:2266) > at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001) > at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) > at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) > at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) > at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) > at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310) > at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780) > at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833) > at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722) > at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716) > at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) > at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) > at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746) > at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744) > at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) > at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) > at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743) > at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) > at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) > at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) > at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) > at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) > at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
500 0.000 STDERR (-) ===== 9 STDERR lines removed =====
500 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Container.addNotify(Container.java:2804)
501 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839)
502 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Container.addNotify(Container.java:2804)
503 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839)
504 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.JRootPane.addNotify(JRootPane.java:729)
505 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Container.addNotify(Container.java:2804)
506 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Window.addNotify(Window.java:791)
507 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Frame.addNotify(Frame.java:495)
508 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Window.pack(Window.java:826)
509 183.051 STDERR (SwingExceptionHandler.java:49) at net.sf.openrocket.gui.figure3d.photo.PhotoFrame$4.(PhotoFrame.java:122)
510 183.051 STDERR (SwingExceptionHandler.java:49) at net.sf.openrocket.gui.figure3d.photo.PhotoFrame.(PhotoFrame.java:118)
511 183.051 STDERR (SwingExceptionHandler.java:49) at net.sf.openrocket.gui.figure3d.photo.PhotoFrame.(PhotoFrame.java:71)
512 183.051 STDERR (SwingExceptionHandler.java:49) at net.sf.openrocket.gui.main.BasicFrame$19.actionPerformed(BasicFrame.java:692)
513 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
514 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
515 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
516 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
517 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374)
518 183.051 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1028)
519 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1072)
520 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
521 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
522 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Component.processEvent(Component.java:6391)
523 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Container.processEvent(Container.java:2266)
524 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
525 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
526 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
527 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
528 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
529 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
530 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
531 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
532 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
533 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
534 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
535 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
536 183.052 STDERR (SwingExceptionHandler.java:49) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
537 183.052 STDERR (SwingExceptionHandler.java:49) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
538 183.052 STDERR (SwingExceptionHandler.java:49) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
539 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
540 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
541 183.052 STDERR (SwingExceptionHandler.java:49) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
542 183.052 STDERR (SwingExceptionHandler.java:49) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
543 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
544 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
545 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
546 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
547 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
548 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
549 183.052 STDERR (SwingExceptionHandler.java:49) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
550 183.052 INFO (SwingExceptionHandler.java:61) Exception handler running on EDT, showing dialog
551 183.053 INFO (SwingExceptionHandler.java:201) Showing Exception dialog
552 184.781 USER (SwingExceptionHandler.java:220) User requested sending bug report
553 184.785 DEBUG (JarUtil.java:40) Found jar file using codeSource
---------- End of bug report ----------

Add small history of OpenRocket

I think it would be interesting to add a small section on the history of OpenRocket (starting from Sampo's thesis, then going open-source, then some of the major updates, in short: something similar as the timeline that we did in the vNARCON presentation).

Rename 'Packages and Source Code' + change home page download button behavior

I would opt to rename the nav-bar 'Packages and Source Code' to 'Download'. Keeps it more concise and a Download-page is most often the thing people look for.

I would also suggest to change the download button behavior. Right now (in the development branch) it downloads the JAR-version of OR, but throughout the site we state that we strongly recommend to use the packaged installer. So my suggestion: make an operating system dependent download button that e.g. for macOS systems downloads the .dmg installer + add an option to download the versions of other operating systems.

Here is an example of the Blender download page of how I would prefer the download button to be:
154879517-12946193-b4b4-49ce-9ebb-c71bedce6841

Need new screenshots, and ensure that appropriate attribution/license is used.

  • 3d view in the design page
  • same model as above in photo editor
  • motor chooser dialog
  • possibly a couple of other charts - there are some "interesting" (but not necessary useful) where you can plot - say velocity vs altitude, or something like that

Note: The various backgrounds have different licenses, mostly CC-BY-SA, so either provide attribution or use one of the ones with a permissive license, either "Mountains" which I created and is public domain or "Frozen Lake" which is from Sampo and I assume we would have his permission. (The "Orbit" one is uncopyrighted, but NASA should be acknowledged according to their web page.)

Add screenshots to home page

It would be good to add some screenshots of the OpenRocket interface to the home page, preferably in some sort of carousel slider.

"Download" button on home page is effectively broken for some(or many or most?) users

Current behavior

Clicking the "Download" button at the top of https://openrocket.info downloads the OpenRocket .jar file. However, as noted on the Releases page...

If you have a more recent version [of Java] on your computer (as nearly everyone does), you will not be able to run the .jar file below without downgrading

This caveat does not appear anywhere on the home page!

OpenRocket will fail to run for users experiencing this problem, and will fail in incomprehensible ways, as evidenced by openrocket/openrocket#759.

Desired Behavior

For most users, the .jar file is (and should be) the option of last resort. Windows and Mac users almost certainly prefer .exe or .dmg installations, respectively. And Linux users may prefer .AppImage installations, although I'm not as familiar with that community so can't be sure about that.

Ideally the "Download" button would cause the appropriate installer (.exe, .dmg, .AppImage) to download based on the user's OS. Failing that, taking the user's to the Github Releases page where they will at least be apprised of the .jar issue, and can select the appropriate installer for themselves will avoid this unpleasantness.

Add alternative installation methods

OpenRocket is available through some package managers (such as snap). We should also include download instructions for those managers on our website.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.