Acknowledgements: People who've contributed to JMRI
A number of people have contributed their effort to JMRI. They are listed below in
alphabetical order and deserve our thanks.
See the JMRI copyright and licensing page for
the terms under which they make their work available to others.
In addition, a large number of people have donated to the project. For more information,
or to donate, please see our donations
- Phil Abernathy,
who updated the AnyRail export-import documentation.
- Sakae Akanuma provided a Japanese translation.
- Peter Akers,
who provided JMRI documentation for DCC-EX and is a key contributor
to Engine Driver.
- Kerry Albrecht, who helped debug a problem loading panel files
- Nelson Allison, who provided scripts for Roco cranes
- Debbie Ames of Lenz USA, who has provided valuable information on the Lenz decoders and
loaned equipment for testing
- Ronald Angel, who figured out how to run the demo on GNU/Linux
- Cliff Anderson,
who contributed the TurnoutsMasterSlave.py script
and the AnyRailBuildBlockSensorList.py script.
- Ian Anderson, who set up the
documentation Wiki, which lets a lot of people easily contribute to building better
- Kevin Appleby, who provided a script to do serial transfers from the Light table
- Chris Atkins helped improve the instructions for using
a separate jython install
- Ron W. Auld, whose llnmon program formed the basis for the LocoNet monitoring
- Cees Baarda, who expanded the DigiRails DR4018/DR4024 decoder definitions
- John Baldwin,
who provided better user.css documentation and improved the logging controls..
- Harald Barth,
who improved the SRCP implementation and the DCC++ implementation.
- Michal Basta, who contributed the Czech internationalization
- Patrick Beard, who allows us to distribute his javax.comm.MRJ package for the
- Rick Beaber contributed definitions for MRC decoders
- Robin Becker,
who has had a major role in the Soundtraxx decoder definitions, created our Windows icons,
has debugged several difficult problems, created several Tam Valley decoder definitions,
and is a primary author of EngineDriver.
- John Bell, who improved the NCE instructions
- Paul Bender,
who wrote the XpressNet throttle code, maintains the XpressNet
implementation, created the LI101 configuration tool, has made important contributions to
the base code, added Lenz XPA support, wrote the Lenz feedback code, wrote the Lenz
consisting support, provided the SLSF (Frisco) signals, provided the jmris server tree, and
in general has made more contributions than can be counted.
- Taylor Berg,
who worked on the DCC++ support.
- Daniel Bergqvist,
primary author of the LogixNG tool
who also does a lot of GitHub administration, particularly of PRs.
- Andrew Berridge, who debugged and fixed problems with the SPROG serial interface
- Jim Betz provided a version number for TCS decoders and a model definition for the Z2
- Thomas Beutel, who helped with the early EasyDCC tests
- John Bicknell, who worked with Ian Birchenough to update ZTC decoder definitions
- Leo Bicknell, who updated the LocoNet monitor
- Lolke Bijlsma,
who provided decoder definitions for Train-O-Rama decoders.
- Pierre Billon,
who translated decoder files to German and French and provided decoder
definitions for Doehler and Haass.
- Ian Birchenough, who contributed (with Phil Grainger) six ZTC decoder definition files,
plus the ZTC 4007, and the Lenz Standard decoder.
- Rodney Black,
who has worked on refining the JMRI interfaces as part of creating his
- Bob Blackwell, who moderates the jmriusers mailing list, accumulating the decoder ID
info, and updated the DecoderPro manual
- Herve Blorec,
who worked on the French translation
- Don Borden, who loaned a Soundtraxx decoder for testing the dual-decoder support
- Joseph T. Bore, who contributed the code upon which we built the scripting windows
- Sip Bosch, who contributed Zimo and ESU decoder definitions, helped test the physical
data fields in the decoder definitions, added features to the decoder index, decoder
selection tree, and speedometer, and created the connection to the Zimo MX1 DCC system
- Johan Bostrom, who committed the code to support the Bluetooth LocoBridge adapter.
- Dan Boudreau,
who added support for the new NCE turnout command and read-back of
turnout positions, updated the "send packet" tool to send NCE binary messages, added a tool
to let NCE users send macro commands, updated the NCE-USB support, fixed a lot of details
in the NCE support, and improved the support for NCE consists. He worked on improving the
way we read and write our panel files. He created the operations section of the code, and
did a huge amount of work improving the general quality of the code.
- George Bowler, who helped with testing support for Olimex RFID readers
- Dave Boydston of Serialio.com, who helped with the Windows connection to an MS100.
Check out their great Java serial library!
- Peter Brandenburg, for many CT Elektronik decoder definitions, definitions for Haber &
Koenig decoders, and for creating the SPROG web page
- Chris Bradshaw, who fixed some broken links, provided a decoder definition for the TCS
Z2, and provided a definition for the ANE Model Loco-Cruiser LC201 decoder.
- Rodolphe Braud, who updated the French translation
- Jerry Britton, who acquired and maintained the domain registration for decoderpro.com,
despite Matt Katzer's despicable
behavior, and wrote a scripting example page
Broerse, who worked on translations, added Switchboards,
graphic state display in the tables, the Output Matrix signal mast and the Rio Grande
1965 signal definition, localized hardware connection tools and improved the signaling
help, website content and the GUI for adding turnouts and signals.
- Dick Bronson, who created the great LocoBuffer-II and worked hard to make sure it
worked well with JMRI. He also contributed sets of USS, PRR and B&O panel icons for
PanelPro, worked on the PanelPro logo, created fantastic clinics on PanelPro, provided CTC
sounds, and made numerous improvements to the Simple Signal Logic.
- Stephen Brooks, who did the initial testing of the Grapevine and Maple support
- Stuart Brorson, who provided the decoder definition for the SDD-001 from BNM
- Andy Brown,
who helped solve a problem with NX entry/exit pairs and fixed a problem with memory
- Bill Brown, whose layout was used for the first NCE tests
- Graeme Brown, who helped debug the Mac OS X disk images and startup scripts for 10.4
and provided updates for NCE decoders
- Bob Bucklew, who as an early CTC-builder showed the way to better functionality,
provided images, and keeps use moving toward better CTC models. See in particular his
- Geoff Bunza,
who provided serial input and output scripts for Arduino.
- Mike Burgett,
who provided information on prototype CTC layout and behavior.
- Bob Byck, who did extensive testing of test release 1.7.3
- Allen Byrne, who has systematically made improvements in the syntax and structure of
the JMRI code
- Ken Cameron,
who wrote the NCE fast clock support, added support for more than two
systems to the preferences, added the Light Control, provided sample scripts, improved the
titling of throttle windows, and created the InstallTest app.
- Paco Cañada, who provided decoder definitions for
- Claudio Capaccio of LaisDCC provided definitions for their line of decoders
- Bill Carman, who located information on the MRC/Athearn F Unit and Challenger
- Joan Carrancà, who provided the German DB signal set.
- Alain Carasso,
who provided decoder definition for Arnold and Mistral Train
- Peter Cesaro provided MRC decoder definitions
- Xavier Chazelle, who provided a definition for the N scale Fleischmann "Leig einheit"
F830681 double unit van equipped with a Fleischmann specific dual decoder for opening or
- Barry Chinn, who created the PDF file of our manual
- Bill Chown, who did a lot of work on the MRC decoder definitions
- Chris Why,
who fixed a tough bug in the speed-profiling code.
- Bob Clearfield, who helped fix some broken links
- Nigel Cliffe, who updated the CT Elektronik decoder definitions, provided sample
scripts, provided new Zimo MX620 and ZTC 471 definitions, provided MERG decoder
definitions, created a script tool for setting Zimo function options, designed the
DecoderPro 3 GUI, created a DCC Concepts decoder definition
and helped with creation of the MQTT Reporter.
- John Clutterbuck helped with Fleischmann decoder definitions
- Normal Clymer, who contributed a TCS definition file
- Seth Cohen, who helped get serial sensors and NCE AIUs to work, and wrote the
speedometer web page
- Glen Colbert, who contributed the MRC AD370 decoder definition
- Bob Coleman added the CTI Acela support and did a huge amount of work on the operations
- Jeff Collell,
who added Light support for OpenLCB.
- John Connelly,
who greatly sped up the decoder and roster indexing steps for large rosters.
- Joe Comuzzi
added new icon tests and added a definition for CNJ 1974 signals
- Dean Cording
who extended the MQTT support to power and throttles, and fixed some key bugs
- John Crellin contributed numerous new and improved decoder definitions for MRC decoders
and the Kato FL11.
- Peter Cressman
provided a major improvement to Logix, improved Sensor Groups, fixed some problems in
Routes, and provided the Warrant system for scripted running
- Andrew Crosland,
who created the SPROG implementation, the SPROG programming tools, has
generously contributed lots of time for SPROG users, and worked on the CAN and CBUS support
- James Cunningham,
who contributed some semaphore icons for the BR-2003 signal definition.
- Mark Dance provided train order signal icons in
- Mike Davison, who got the Linux serial connection working with Java 1.4, has helped
with the EasyDCC code, helped debug the Ant compilation process, and has been working on
- Ray deBlieck, who let us test on his Empire Builder
- Joan de Castro who contributed the Catalan internationalization
- Bruno De Grave,
who contributed a Massoth decoder definition
- Andrew Deak
who added the CPMEGA C/MRI option.
- Fred Decker
who improved the Walthers Diesel Soundtraxx decoder.
- Svata Dedic
who improved input validity checking.
- Lou DeHayes, who provided a definition for the MRC Sound Brilliance 1806 decoder and a
fix for the DS54 definition.
- Eddie Delozier, who write the TCS M1 decoder file.
- Luca Dentella, who contributed the CmdMapper script.
- Pino Di Biasi, who contributed an Italian signal system
- Kevin Dickerson, who figured out the ECoS protocol so JMRI could connect to one and
wrote code for ECoS throttles and turnouts, added turnout monitoring to the ECoS support,
fixed a problem what would sometimes improperly disable Logix and Conditionals, worked on
improving the throttles, and fixed problems in the SPROG and multisensor icons.
- Robert Doss, who provided ID information for the MRC 330 decoder
- Graham Dredge, who diagnosed a problem with single output signal heads.
- David Duchamp, who has added diagnostics to the C/MRI code, did much of the
customization work for the fast clock, created the C/MRI light controls, added Light
support, updated the Route functionality, created Logix and the Layout Editor, added "two
outputs per turnout" support for C/MRI, fixed a bug with complex definition loading, and
produced some great
- Dave Duchesneau, who provided a decoder definition for the MERG accessory decoder
- Jim Duncan, who did a lot of the initial Grapevine debugging
- Michael Dunn, who provided a decoder definition for the MRC 1645 decoder
- Mike Dunston,
who provided several
updates for the DCC++ code
- Frederik Elestedt,
who improved the MQTT support.
- Joe Ellis provided the DecoderPro configuration files for the Lenz LE077XF decoder and
has done a fantastic job on the manual
- Wayne Eric, who provided the MRC AD370 decoder definition
- Max Ettinger, who made JMRI work with the QSI Quantum Programmer on Windows and wrote
- Jim Exler,
who fixed a Digitrax CV definition.
- Dave Falkenburg created the original DecoderPro application (and found the perfect name
for it!) He created our Mac Classic and Mac OS X icons and worked on the PanelPro logo. He
also updated the NCE support to work with new NCE EPROMs that require binary commands, and
made it work with TCS decoders. He's helped with networking and various Macintosh issues,
including the XML IO system.
- Frank Fezzie, who helped test a fix to an obscure LocoNet bug.
- Don Fiehmann provided MRC decoders for testing
- Bill Fitch,
who created the Dispatcher
System tools for working with Dispatcher.
- Marco Forcone, who sacrificed two turnouts motors to the cause of debugging XPressNet
- Dan Foltz created the Manifest Creator and Switch List Creator for operations
- John Forsythe, who helped with the timing needs of TCS decoders
- Enzo Fortuna,
who created the Italian translation
- Marc Fournier,
who improved the TCS decoder definition, did the detail work to update the Soundtraxx
manufacturer name, and fixed some Soundtraxx variable names.
- Paul Fraker, who wrote the documentation for the Throttles and provided MRC decoder
- Joe Fugate and the other people of Model
Railroad Hobbyist emagazine for putting the JMRI clinics from the NMRA 2008
Anaheim convention on the web.
- William C Gage provided an MRC decoder definition
- Steve Gigiel,
who fixed the XML definition of the block contents icon, and helped fix the Transit
implementation of comments.
- Ulrich Gerlach
who improved multiple decoder definitions.
- Brian Gilhuly, who helped debug a programmer problem in JMRI 3.11.1
- Simon Ginsburg has helped with advanced consisting, provided some Digitrax definition
files, and translated much of DecoderPro into German
- GitHub, who hosts a large part of our development and
- @gitophile, who found the fix for a broken link.
- Qun and Sven Göthel of
Göthel Software who maintain the JOAL library we use
for advanced audio.
- Joseph Goldstone, who put together the javax.comm implementation for Mac OS X
- Martin Gostling, who provided CML and Digitrax decoder definitions
- Phil Grainger,
who wrote articles about DecoderPro in the UK press, greatly helped with
ZTC decoder definitions, provided the DH83FX definition, and many great suggestions
- Bill Gray suggested web page improvements
- Michael Greene, who corrected a bug in the SoundTraxx decoder definition; provided our
jmri.info, decoderpro.info and packetpro.info domain names; provided definitions for the
E-Z Command and Zimo MX61_N decoders; and updated the Digitrax definition for new
- Clark Gregory, who worked on DS74 programming and
figured out how to program routes.
- Tom Gretton,
who helped with documentation and the Groups.io migration
- Walter Griffin, who provided graphics for signals and CTC panels
- Costin Grigoras,
who added an option to start the DCC++ TCP server at startup and updated the DCC++
implementation to do a background refresh of the function values.
- Jerry Grochow,
who helped with the scripting documentation and the XSLT panel viewer.
- Mark Gurries, who provided loaner equipment and great ideas. He's currently working on
decoder definitions for DecoderPro
- Peter Hagenaars, who helped with the definition for the MD Electronics
- Victoria K. Hall led the legal action that held Matt Katzer responsible for his
depredations against JMRI
- Rob Hamerling, who got the demo to run on OS/2, contributed his scripts and has been
- Jim Hanna, who helped with instructions for NCE units
- Sonny Hansen, who did a lot of work on the Danish translation
who improved the Kuehn ZTC217 decoder definition
- David Harris, who fixed some bugs in the Lenz decoder definitions
- Matthew Harris, who provided instructions for installing JMRI on EeePCs, updated the
roster pane to work on small screens, improved handling of screen insets, provided a
shutdown task, wrote our Windows installers, greatly improved the handling of scroll bars
on panels, and added greatly improved audio capabilities.
- Phil Hartung, who provided some CTC graphics
- Tim Hatch, who added the support for TCH Technology devices
- Ian Havercroft, who provided the correct identification codes for ESU decoders
- David Heap,
who has provided many updates for decoders, particularly the difficult QSI
and ESU decoders, and improved how signal head aspects are supported.
- Rob Heikens, who created ESU decoder definitions and programmer pages
- Freek Heite, who located some important XpressNet info
- Austin Hendrix,
who improved how the throttle handles speed steps and improved the quality of the code and
- Max Hearnden,
who improved how local HTML help is handled.
- William Hipple, who registered the JMRI.org and DecoderPro.org domains for us
- Brett Hoffman,
who provided support for zero-config ("Bonjour"-like) networking and
WiFi access to throttles.
- Osvaldo Hojvat
provided definitions for several
- Michael Homscheidt, who worked on the KPF-Zeller speedometer support.
- Hornby Hobbys, who provided a full set of TTS manuals plus information regarding
- Al Huberty, who organized our first users meeting at the NMRA Toronto convention
- AJ Ireland of Digitrax, who loaned equipment, answered questions and made valuable
- John Jabour, who created the excellent LocoBuffer and thereby made reliable LocoNet
- Brian Jackson
who updated the Hornby TTS library
- Bob Jacobsen,
who wrote some of the early code and does packaging and user support
- Martin Jahner, who fixed the constant checkboxen and built a replacement library for
Mac OS X
- Jean-Christophe Janiszewski,
who created the SNCF signal system.
- Jay Janzen, who debugged a RobotThrottle problem, and provided improvements for
Dispatcher, including a fix to allow dispatcher to allocate to the end block.
- Lionel Jeanson,
who added the media pane to the roster entries, improved the native JMRI
throttles to provide a better user experience (images, modernized UI, user preferences,
customizations...). He also introduced Jynstruments for improving the GUI with Jython.
Did a first rework on the Consist UI. And, added the initial MQTT connector to JMRI.
- The good people at JogAmp.org. who maintain a library we use
for advanced audio.
- Pete Johnson, who provided instructions for use of Operations
- Richard Johnson, who provided info on DCC Concepts decoders
- Robert Johnson, who provided info on the DZ123 decoder
- Colin Jones, who first recognized the LocoButter
- Randy Jones, who provided identification info for several Quantum decoders
- The Jython project, who provided a very powerful scripting engine for us
- Georg Kautzsch, who provided a decoder definition for the Uhlenbrock 67800 servo
- Tim Kelley, who helped debug LocoNet device support
- Klaus Killinger,
who improved the sound support, has provided multiple sound projects,
and helped with Intellibox development.
- Vincent Kispersky,
who provided an MDE decoder definition.
- Scott Kitts, who helped debug the new communications library for Mac OS X
- Arco Klippstein,
who updated the Lissy support.
- Michael Kneebone, who gave permission to allow us to use his SliderSnap class that
corrects the behavior of JSliders, making them snap whilst sliding rather than
- Tony Koester, who helped with signaling
- W.D. Kok
created and maintained some Umelec decoder definitions and updated the Fleischman
- James Koretsky, who contributed the Burlington Northern 1989 signal definition
- Github user Koryphon, real name unknown, who contributed to the MacOS X
- Matjaz Krajnc, who provided better code and icons for the web throttle
- Andrew Kroll, who improved the Operations documentation
- Ross Kudlick, who researched options switches on Digitrax command stations
- Ronald Kuhn, who improved our German translations and provided definitions for some
- Nick Kulp, who helped test much of the C/MRI and signaling logic, presented a nice clinic on how
to start making panels, and contributed numerous icons
- Tighe Kuykendall improved documentation.
- Bjorn Kvisli, who provided Doehler & Haass decoder definitions.
- John Lang, who provided several signal definitions
- Ralf Lang,
who contributed the Märklin CdB connection code.
- Al Lautenslager of CVP Products, who loaned some EasyDCC hardware and found answers to
- Jeff Law provided two Umelec decoder definitions
- Jim LeFevre, who did the testing on the TMCC implementation, including buying
components so we could do a more complete job, and coded the function support. He's also
put a lot of work into test and development of the C/MRI support.
- Alain Le Marchand,
who provided a number of decoder definitions and updates
- Bo Leer-Andersen
who brought a lot of interfaces up to date.
- Karl Johan Lisby,
who made large improvements to the Uhlenbrock Intellibox support and contributed the
Signal Controlled Warrant support
- Peter Lloyd-Jones, who contributed a script for playing a sound when a function key is
pressed on a throttle and wrote instructions and an installer Ubuntu Linux
- Stephen Lowens, who updated the Digitrax sound decoder definitions
- Kelly Loyd, who contributed throttle code for EasyDCC
- Carsten S. Lundsten, who let us make icons from the artwork on his great signaling
- Jason M'Sadoques, who created the Android phone throttle application and improved the
- Matthew Macdonald-Wallace arranged support for Linux on ARM V7 processors
- Jeffrey Machacek updated the WiThrottle server and updated LocoNet SlotMonitor.
- Greg Madsen improved the operations backup and restore code
- Jim Malone, who created a decoder file definition the Digitrax DN163K1a
- Peter MacKenzie, who added definitions for the Hattons MD4 and Gaugemaster Opti DCC25
- Konrad Malkowski,
who created and contributed the function label icon sets and
domino control panel icon
- Peter Mansvelder, who contributed Fleischmann decoder definitions
- Francesc Pinyol Margalef,
who provided a fix for the Digikeijs DR4018 (accessory DCC decoder) definition and helped
with the Z21XpressNet interface.
- Mark Marowicz, who provided the CT Elektronik SL 51 decoder definition
- Ken Mazer, who provided the GP40-2 Soundtraxx definition
- John McAleely, who contributed Hornby and Bachmann decoder definitions
- Jordan McBride,
who worked on the TCS decoder identification, new split value variable form,
and TCS decoder definitions.
- Greg McCartney,
who provided a Norfolk and
Western signal definition, the B&O 1980 signal
definition, the Southern
1981 system, and the C&O 1980 system.
- Bob McCown, who helped with the migration of the jmriusers list to groups.io
- David McDowell of the North Raleigh Model Railroad Club created a clinic covering
Block Occupancy, Transponding and Simple Signal Logic.
- Otis McGee, who allowed us to debug many C/MRI and signaling issues on his
beautiful SP Shasta railroad.
- David McGowan, who handled many aspects of JMRI legal defense against Matt Katzer
- Elmer McKay, who provided a nice help file on how to start signaling
- Randy McKenzie, who contributed some CTC panel background images
- Ron McKinnon, who fixed some problems with the lighting options in the SoundTraxx
Tsunami Steam definitions
- John McMasters,
who provided definitions for his Digitrax Sound projects and the Digitrax Series 7 decoders.
- Dave McMorran,
who worked on the MQTT JSON coding
- Larry Meaney provided decoder ID for the Digitrax DN163K0b decoder
- Eckart Meyer,
who updated the aspect controls in the DB HV 1969 signals
and provided the BiDiB implementation.
- Philip Middlemiss provided a decoder definition Hornby R8215 decoder.
- Bob Milhaupt,
who fixed a problem with transponding messages in the LocoNet monitor,
provided a lot of usability improvements in the LocoNet monitor, updated several
LocoNet-related help pages, and provided significant help with the
- Dennis Miller, who greatly improved the CV printing, added the run-time help system and
repackaged the window icons
- Jon Miller, who has been doing user support and decoder testing, plus contributing good
ideas and loaning equipment for testing on sound decoders, Linux and small form factor
- The good people at MindVision.com, who let us use their excellent
Installer Vise to build our early Windows installers.
- Mike Moir, who provided a lot of information on how
http://www.protrak.cc/ Grapevine works.
- Jim Moomaw, who provided the WPRR 1971 signal system definition.
- Bob Morningstar, who helped test a fix to an obscure LocoNet bug.
- Michael Mosher, who helped identify the way Digitrax decoder models are organized, has
done a lot of work to improve the decoder definitions for NCE, Soundtraxx and Atlas
decoders, provided new definitions for TCS, MRC and (lots of!) QSI and Zimo decoders; a
real hero of decoder definition distinction
- Gert Muller
fixed some issues with international characters, improved the layout of the on-screen
throttle when running Linux, added improved alignment options to the PanelEditor, improved
adding text labels and worked on the MQTT coding.
- Dan Mycio, who provided information on TCS hardware and software.
- Robert Myers provided instructions for
installing JMRI on an OLPC XO laptop
- Bill Nanney, who tenaciously worked to help find a bug where certain decoders wouldn't
read and write all sheets
- Seth Neumann, who provided information on Wangrow decoders
- Mark Noble, who found some broken links
- John O'Duffy,
who improved low-speed profiling
- Glen Oberhauser, who added LocoNet throttles
- David Phillip Oster provided key information and a useful tool to help get USB working
on Mac OS X
who worked on the LocoNet refresh algorithm
- Gopal Patnaik
who helped with Intellibox development and improvements to startup scripts.
- Howard G. Penny provided info on the NCE D14SR decoder, then went on to become an
active developer, including providing the code for indexed CVs (ala QSI), better support of
text and clocks on panels, providing a "factory reset" feature for decoders, and fixing
multiple hard bugs
- Phill Perry, who contributed a decoder definition for the New York Byano Limited
- Bruce Petrarca, who has started offering CDs so nobody else has to burn them and
provided decoder information for the Soundtraxx Diesel Tsunami
- Bob Phillips provided an MRC decoder definition
- Alger Plke,
who provided programmer fixes for the Zimo MX1 and MXULF
- Ronnie Pinkerton, who worked on a throttle update
- Martin Pischky improved the LocoNet firmware downloader and fixed some bugs.
- Rob Plevier, who provided instructions for running JMRI on OpenSUSE GNU/Linux
- Jean-Francois Plisson,
who provided the LEB decoder definitions.
- John Plocher, who make good suggestions on XML DTD items, created the infrastructure
for this website, lead the construction of the demo layout for the JavaOne show, worked on
GUI updates, and built a replacement RXTX library for Mac OS X 10.4.
- Herb Poppe, who diagnosed a problem in some Digitrax decoder definitions
- Michael Povel, who provided definitions for TAMS decoders
- Ian Price who contributed the LocoTracker.py script
- Vladimír Preclík
- Oscar A. Pruitt, who provided the implementation to support RFID readers using the
- Gerry Pruss, who provided information on connecting to the QSI Programmer
- Balazs Racz,
who fixed a bug in startup and improved our tech documentation, updated
the OpenLCB support to their version 0.7, and added support for bean properties to the
- Robert Raggi, who contributed the Reading 1954 signal system definition.
- Steve Rawlinson, who fixed a bug in Layout Blocks and generously provided the previous
Jenkins CI server.
- Simon Reader, who improved the throttle, added a check for completed status to Routes,
and added the "invert" option to LocoNet Turnouts.
- Mark Riddoch, who provided the Reporter implementation for CBus to enable the use of
CBus attached RFID readers.
- Peter Riley, who helped debug a graphics display issue.
- Bill Robinson of Team Digital, who provided a schematic of their MS100-equivalent level
shifter, contributed the LnSendTool.py script and decoder definitions for Team Digital
products, helped fix a problem with overrunning LocoNet command stations, and provided
example web pages for layout control via the mini-webserver.
- Jean-Yves Roda,
who provided the server for the Roco Z21 app.
- Rodrigo Rodriguez,
who translated the decoder definitions and much of the GUI into Spanish.
- Mark Rogerson, who provided the RXTX (Java communications library) for Mac OS X
machines with Intel processors
- Wim Ros, who provide help with the direct connection to the Intellibox
- Heiko Rosemann,
who created the Slackware repository version of JMRI and worked on
WiThrottle protocol issues.
- Klaus Ruebsam, who was hosting German and English JMRI discussion groups on his
- Mathias Rufer created the first pre-release version of the ESU LokPilot Standard V1.0
- Peter Rushworth helped to add a reporter icon to the layout editor.
- John Sacrey wrote instructions for getting Java to work on 64-bit Windows
- Joe Salemi, who contributed the Atlas 345 decoder definition and updated the TCS Tx
- Bruno Sanches,
who fixed a bug in the DCC++ throttle implementation.
- Dave Sand,
who's worked on Layout Editor, Logix, Entry/Exit signaling and other things.
- Richard Sauerbrun provided a definition for the DN163K4B decoder.
- Jeff Schmaltz, who contributed decoder definitions for the Massoth eMotion and LGB
decoders, the Zimo MX65, and the ESU LokPilot and LokPilotBasic decoders.
- George Schreyer, who tests JMRI on new macOS versions as they come out.
- Mark Schutzer, who helped debug some significant NCE improvements and contributed the
Lenz Gold decoder definition
- Thurgau Schweiz, who provided some Umelec decoder definitions.
- Mitch Schwenk,
who updated some decoder definitions.
- Knut Schwichtenberg, who contributed the FREDI definition files
- Jim Scorse, who gave generously of his time to answer questions about NCE details and
provided debug hardware
- Brett Scott contributed the scripts for programming DCC Specialties products
- John Sebastian provided a decoder definition for the MRC Sound Brilliance 1957.
- Josef Selinger, who updated the Czech translation
- Fred Severson, who gave permission to use QSI manuals to make decoder definitions
- Jack Shall, who cleaned up the XML files, contributed decoder definitions, added a huge
number of tooltips to DecoderPro, and reorganized the SoundTraxx Tsunami decoder
- Bruce Shanks, who offered corrections for the DecoderPro manual, investigated how to
display the throttle ID in the LocoNet Slot Monitor, updated the Comprehensive programmer
format to improve speed, and co-wrote the 2009 DecoderPro manual.
- Alex Shepherd, who helped move development to JBuilder, and created the client/server
implementation for LocoNet. He's also improved the LocoNet monitor formatting and added
support for a new type of accessory decoder
- Dustin Shoup, who figured out how to preserve order in XML files
- Petr Šídlo,
who provided a large update to the Czech translations of JMRI
- Pekka Siiskonen, who suggested we add error numbers to error messages to make it easier
to discuss which specific error is happening
- Al Silverstein, who helped figure out the format of some LocoNet messages and provided
decoder information on several models
- Ed Sisk, who loaned a DCS51 for testing
- Don Smith, who ran down some NCE decoder information
- Ted Smith, who corrected some errors in sample scripts and the basic two-searchlight
- John Socha-Leialoha,
who improved the WiThrottle protocol documentation
- Alfredo Sola provides the Spanish translation
- The good people at SourceForge who provided the
original site hosting, download servers and computing resources for JMRI development
- Ron Sommer, who provided the PanelPro icon for Windows
- Richard Stamm, who helped debug a programmer problem in JMRI 3.11.1
- Tom Starbuck, who updated and organized the model numbers in the TCS BEMF decoder
- John Stather fixed some issues with the DCC Concepts locomotive decoder
- Dima Stepanchuk, who provided a fix for the Packet Analyzer
- John Stewart, who provided a decoder definition for the Lenz Plus 2010 decoder.
- James Szinger, who helped with the Java 11 migration on Linux.
- Francois Taburet, who provided the French translation for DecoderPro
- The good people at Tagadab.com who provided site hosting, and
continuous integration resources for JMRI development for several years.
- Suzie Tall, who provided several North American and international signal definitions,
including definitions for UP, Amtrak, and Great Western railroad, along with sets for the
- Colin 't Hart,
who helped with the Linux instructions.
- Clint Taylor added code to allow function buttons to work within the LocoNet slot
- Giorgio Terdina, who provided the code for the Roco multiMaus and for JMRI to connect
to his XnTcp adapter, wrote the XTrkCadReader tool, and
provided screen icons for German signals.
- Jim Thompson provided a sample script for handling messages from PM42 power
- Benny Tjäder,
who provided the MQTT Last Will support and a Swedish signal system.
- Warner Thuis,
who provided a TAMS decoder definition
- Kenneth Tjøstheim,
who provided the Norway-2001 signal system
- Walter Thompson, who provided the ID information for the Lionel Challenger decoder and
DS54 accessory decoder, updated lots of decoder definitions, improved many help pages, and
was an active jmriusers group moderator.
- Steve Todd, primary author of EngineDriver throttle for Android, added scripts, helped
with web server (particularly client-side panels), updated Dispatcher, and enhanced the
DCCpp connection to keep up with the DCC++EX rewrite and improvements.
- Travis-CI.org, who provide a large part of our
- Dale Tripp, who co-wrote the 2009 version of the DecoderPro manual and provided the
decoder definition for the Kato FL12
- Peter Ulvestad, who created the page on XML editors, has done a large amount of
work on decoder definitions, helped solve a problem with the NX entry/exit implementation
and is an active jmriusers group moderator.
- Mark Underwood,
who provided a fix for a problem with looping sounds and added support
for the DCC++ hardware.
- Keith Usher, who provided a medium icon set
- Darryl Van Nort, who provided a definition for an MRC decoder
- Tjeerd Verhage, who provided the logo for our SourceForge.net page
- Bryan Vianco provided two MRC decoder definitions
- Didrik Voss, who provided the configuration information, including the default values,
for the Hornby R8215 decoder
- Marshall Wales investigated how to display the throttle ID in the LocoNet Slot
- Jack Walton, who created the Lenz LE080 decoder definition
- Steve Walton,
who fixed the tag sorting.
- George Warner,
who changed all the TextFields to editable comboboxes (with drop-down
menus); added a 2nd turnout circle for slips and added left, right & bottom options for the
toolbar (and re-laid out same) in the Layout Editor. Added support for DMX512 lighting.
Also wrote all the slip code for the web server.
- Mark Waters,
who provided numerous Zimo decoder definitions, new Zimo MX620 definitions and install
instructions for Linux Mint.
- Howard Watkins, who helped test the CBUS support and provide a sample script for Layout
- Todd Wegter,
who improved Bachrus speed matching.
- Jim Wells, who created our logos and the great program icons
- Donn Welton, who provided info on configuring a PowerBook for DecoderPro
- Ken Weygandt, who provided the default values for the SoundTraxx Tsunami decoder
definition and 45-degree icons for panels, and helped fix a problem with over-running
LocoNet command stations.
- Denny Whitaker, who wrote a great description of how to
program Hare and Wabbit controllers using JMRI.
- Rich White II, who provided the images for our small Nixie tube clock
- Simon White, who added support for FindBugs and EMMA to our build tools.
- Stephen Williams, who improved the LocoNet slot monitor, made multiple small
improvements to LocoNet internals, especially including the LocoNet monitor, fixed a nasty
problem with looping LocoNet throttles, added a command station option to the TCP
connection, and improved the LocoNet simulator file processing.
- Jos Wils updated the ESU decoder definitions, and extended the Comprehensive programmer
format for really-high-functionality decoders.
- Jim Wolters, who updated the MRC Sound Brilliance 1812 decoder definition.
- Randall Wood, who updated the fast clock support, improved the XMLIO support with some
fixed memory variables, migrated us to Git and GitHub, and built our continuous integration
& test support.
- Mike Yawn, who provided the instructions for building under Eclipse
- Steve Young,
who helped with CBUS documentation and the Groups.io migration
- Luis Zamora, who done a lot of work on the Catalan translation
- Mark Ziebell, who worked on signal systems.
- david zuhn, who provided instructions for installing the comm libraries on Linux, wrote
startup scripts and configured Ant for compiling with warnings
- Christopher Zurek, who improved the LokSound V3.5 decoder definition and provided
several MRC definitions.
Visualizations of JMRI Development Activity
The JMRI CodeFlower provides a dynamic
view of the structure of whole GitHub source code repository. It shows the relative size of
the code in each file and the structure in which the files are stored.
You can see graphs of the JMRI developer activity on the GitHub project page for the
main code repository and
More detailed metrics are available on the JMRI
OpenHub pages on contributors and commits.
Dennis Miller created a Code
Swarm of JMRI development that represents activity from inception to January 2009. A Code
Swarm is a fascinating and dynamic visual representation of change as developers come and go
and make changes to the files that make up a project. More information is available on the
Code Swarm page.