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
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
- Phil Abernathy,
who updated the AnyRail export-import documentation.
- Sakae Akanuma provided a Japanese translation.
- Kerry Albrecht, who helped debug a problem loading
- Nelson Allison, who provided scripts for Roco
- Debbie Ames of Lenz USA, who has provided valuable
information on the Lenz decoders and loaned equipment for
- Ronald Angel, who figured out how to run the demo on
- Ian Anderson, who set up the documentation
Wiki, which lets a lot of people easily contribute to
building better documentation
- 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
- Harald Barth,
who improved the SRCP implementation
and the DCC++ implementation.
- Michal Basta, who contributed the Czech
- Patrick Beard, who allows us to distribute his
javax.comm.MRJ package for the Macintosh
- Rick Beaber contributed definitions for MRC
- 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
- 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
who worked on the DCC++ support.
- Daniel Bergqvist,
primary author of the
- 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 decoder.
- Thomas Beutel, who helped with the early EasyDCC
- John Bicknell, who worked with Ian Birchenough to
update ZTC decoder definitions
- Leo Bicknell, who updated the LocoNet monitor
- Lolke Bijlsma provided a decoder definition for the
Shine Plus decoder series from Train-O-Rama.
- Pierre Billon, who translated decoder files to German
and French and provided decoder definitions for Doehler and
- 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 CATS system.
- Bob Blackwell, who moderates the jmriusers mailing
list, accumulating the decoder ID info, and updated the
- 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
- 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
- Rodolphe Braud, who updated the French translation
- Jerry Britton, who acquired and maintained the domain
registration for decoderpro.com, despite Matt Katzer's
behavior, and wrote a scripting example page
- Egbert 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
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 Hobbies
- Andy Brown,
who helped solve a problem with NX
entry/exit pairs and fixed a problem with memory icons.
- Bill Brown, whose layout was used for the first NCE
- Graeme Brown, who helped debug the Mac OS X disk images
and startup scripts for 10.4 and provided updates for NCE
- 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
online panel tutorial.
- Geoff Bunza,
who provided serial input and output scripts for Arduino.
- Bob Byck, who did extensive testing of test release
- 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
- Paco Cañada, who provided decoder definitions
- Claudio Capaccio of LaisDCC provided definitions
for their line of decoders
- Bill Carman, who located information on the MRC/Athearn
F Unit and Challenger decoders
- Joan Carrancà, who provided the German DB signal
- Alain Carasso, who provided decoder definition for
Arnold and Mistral Train decoders
- 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 closing doors
- Barry Chinn, who created the PDF file of our
- Bill Chown, who did a lot of work on the MRC decoder
- 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, and
created a DCC Concepts decoder definition.
- John Clutterbuck helped with Fleischmann decoder
- Normal Clymer, who contributed a TCS definition
- 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
- Bob Coleman added the CTI Acela support and did a huge
amount of work on the operations code tests.
- Jeff Collell,
who added Light support for OpenLCB.
- Joe Comuzzi
added new icon tests and added a definition for CNJ 1974 signals
- John Crellin contributed numerous new and improved
decoder definitions for MRC decoders and the Kato
- 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 create the SPROG implementation, SPROG
programming tools, has generously contributed lots of time
for SPROG users, and worked on the CAN and CBUS support
- 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 decoder files
- Ray deBlieck, who let us test on his Empire
- Joan de Castro who contributed the Catalan
- 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
- Eddie Delozier, who write the TCS M1 decoder file.
- Luca Dentella, who contributed the CmdMapper script.
- 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
- 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
- Michael Dunn, who provided a decoder definition for the
MRC 1645 decoder
- Mike Dunston,
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
- Max Ettinger, who made JMRI work with the QSI Quantum
Programmer on Windows and wrote great
- 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.
- Don Fiehmann provided MRC decoders for testing
- Bill Fitch,
who created the
tools for working with Dispatcher.
- Marco Forcone, who sacrificed two turnouts motors to
the cause of debugging XPressNet Turnout support
- Dan Foltz created the Manifest Creator and Switch List
Creator for operations
- John Forsythe, who helped with the timing needs of TCS
- Enzo Fortuna, who created the Italian translation
- Marc Fournier,
who improved the TCS decoder definition
and did the detail work to update the Soundtraxx
- Paul Fraker, who wrote the documentation for the
Throttles and provided MRC decoder definitions
- Joe Fugate and the other people of Model Railroad
Hobbyist emagazine for putting the JMRI
clinics from the NMRA 2008 Anaheim convention on the
- 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.
- Brian Gilhuly, who helped debug a programmer problem in
- Simon Ginsburg has helped with advanced consisting,
provided some Digitrax definition files, and translated
much of DecoderPro into German
who hosts a large part of our
development and distribution infrastructure.
- @gitophile, who found the fix for a broken link.
- Joseph Goldstone, who put together the javax.comm
implementation for Mac OS X
- Martin Gostling, who provided CML and Digitrax decoder
- Phil Grainger, who wrote articles about DecoderPro in
the UK press, greatly helped with ZTC decoder definitions,
provided the DH83FX definition, and many great
- 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 types.
- Tom Gretton,
who helped with documentation and the Groups.io migration
- Walter Griffin, who provided graphics for signals and
- 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
- Mark Gurries, who provided loaner equipment and great
ideas. He's currently working on decoder definitions for
- 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 patiently testing
- Jim Hanna, who helped with instructions for NCE
- Sonny Hansen, who did a lot of work on the Danish
- David Harris,
who fixed some bugs in the Lenz decoder
- 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
- 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
- Freek Heite, who located some important XpressNet
- Austin Hendrix,
who improved how the throttle handles speed steps
andimproved the quality of the code and documentation.
- 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
- Hornby Hobbys, who provided a full set of TTS manuals
plus information regarding various CVs.
- 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 suggestions
- John Jabour, who created the excellent LocoBuffer and
thereby made reliable LocoNet communications routine
- 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
- 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 images to the roster, updated
the throttle to add preferences for displaying them,
cleaned up some code problems in the throttle, and created
Jynstruments for improving the GUI
- Richard Johnson, who provided info on DCC Concepts
- Robert Johnson, who provided info on the DZ123
- 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 decoder.
who improved the sound support
and has provided multiple sound projects
- Scott Kitts, who helped debug the new communications
library for Mac OS X
- 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 definitions
- James Koretsky, who contributed the Burlington Northern
1989 signal definition
- Github user Koryphon, real name unknown, who contributed to the MacOS X documentation.
- 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 Kuehn decoders
- 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
- John Lang, who provided several signal definitions
- Al Lautenslager of CVP Products, who loaned some
EasyDCC hardware and found answers to programming
- 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
- 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
- Kelly Loyd, who contributed throttle code for
- Carsten S. Lundsten, who let us make icons from the
artwork on his great signaling website http://www.lundsten.dk/us_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
- Jim Malone, who created a decoder file definition the
- Peter MacKenzie, who added definitions for the Hattons
MD4 and Gaugemaster Opti DCC25 decoders.
- Konrad Malkowski,
who created and contributed the
function label icon sets
and domino control panel icon sets.
- Peter Mansvelder, who contributed Fleischmann decoder
- 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
- Ken Mazer, who provided the GP40-2 Soundtraxx
- John McAleely, who contributed Hornby and Bachmann
- Greg McCartney,
who provided a
Norfolk and Western signal definition,
1980 signal definition, the
Southern 1981 system,
the C&O 1980 system.
- Bob McCown, who helped with the migration of the jmriusers list to
- David McDowell of the North Raleigh Model Railroad Club
clinic covering Block Occupancy, Transponding and
Simple Signal Logic.
- 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 your layout.
- Randy McKenzie, who contributed some CTC panel
- 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
- Dave McMorran,
who worked on the MQTT JSON coding
- Larry Meaney provided decoder ID for the Digitrax
- Eckart Meyer,
who updated the aspect controls in the DB HV 1969
- Philip Middlemiss provided a decoder definition Hornby
- Bob Milhaupt, who fixed a problem with transponding
messages in the LocoNet monitor, provided a lot of
usability improvements in the LocoNet monitor, and updated
several LocoNet-related help pages.
- Dennis Miller, who greatly improved the CV printing,
added the run-time help system and repackaged the window
- 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, who
let us use their excellent Installer Vise to build our
early Windows installers.
- Mike Moir, who provided a lot of information on how
- 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
- 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.
- 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
- Seth Neumann, who provided information on Wangrow
- 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
- 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
- Phill Perry, who contributed a decoder definition for
the New York Byano Limited locomotive
- 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
- John Plocher, who make good suggestions on XML DTD
items, created the infrastructure for this web site, 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
- Michael Povel, who provided definitions for TAMS
- 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 EM-18 protocol
- 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 Tables
- 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
- 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.
- Mark Rogerson, who provided the RXTX (Java
communications library) for Mac OS X machines with Intel
- Wim Ros, who provide help with the direct connection to
- Heiko Rosemann,
who created the Slackware repository version of JMRI
- Klaus Ruebsam, who is hosting German and English JMRI
discussion groups on his http://www.dcc-portal.net/
- Mathias Rufer created the first pre-release version of
the ESU LokPilot Standard V1.0 decoder definition.
- Peter Rushworth helped to add a reporter icon to the
- 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 definition.
- 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
- Jeff Schmaltz, who contributed decoder definitions for
the Massoth eMotion and LGB decoders, the Zimo MX65, and
the ESU LokPilot and LokPilotBasic decoders.
- Mark Schutzer, who helped debug some significant NCE
improvements and contributed the Lenz Gold decoder
- Thurgau Schweiz, who provided some Umelec decoder definitions.
- Knut Schwichtenberg, who contributed the FREDI
- Jim Scorse, who gave generously of his time to answer
questions about NCE details and provided debug
- Brett Scott contributed the scripts for programming DCC
- 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
- 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
- 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
- Ed Sisk, who loaned a DCS51 for testing
- Don Smith, who ran down some NCE decoder
- Ted Smith, who corrected some errors in sample scripts
and the basic two-searchlight definition
- John Socha-Leialoha,
who improved the WiThrottle
- Alfredo Sola provides the Spanish translation
- The good people at SourceForge who provided the original site
hosting, download servers and computing resources for JMRI
- Ron Sommer, who provided the PanelPro icon for
- Richard Stamm, who helped debug a programmer problem in
- Tom Starbuck, who updated and organized the model
numbers in the TCS BEMF decoder definitions.
- John Stather fixed some issues with the DCC Concepts
locomotive decoder definition.
- Dima Stepanchuk, who provided a fix for the Packet
- John Stewart, who provided a decoder definition for the
Lenz Plus 2010 decoder.
- Francois Taburet, who provided the French translation
- The good people at
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 BeNeLux countries.
- Clint Taylor added code to allow function buttons to
work within the LocoNet slot manager.
- Giorgio Terdina, who provided the code for the Roco
multiMaus and for JMRI to connect to his XnTcp adapter, wrote
tool, and provided screen icons for German signals.
- Jim Thompson provided a sample script for handling
messages from PM42 power controllers
- 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 is an active jmriusers moderator.
- Steve Todd, primary author of EngineDriver throttle for
Android, adds scripts, helps with web server, particularly
client-side panels and updates Dispatcher
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 some nice clinic
presentations, created the page on XML
editors, has done a large amount of work on decoder
definitions, and helped solve a problem with the NX entry/exit implementation.
- Mark Underwood, who provided a fix for a problem with
looping sounds and added support for the DCC++ hardware.
- Darryl Van Nort, who provided a definition for an MRC
- Tjeerd Verhage, who provided the logo for our
- Bryan Vianco provided two MRC decoder definitions
- Didrik Voss, who provided the configuration
information, including the default values, for the Hornby
- Marshall Wales investigated how to display the throttle
ID in the LocoNet Slot Monitor
- Jack Walton, who created the Lenz LE080 decoder
- 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 Editor
- Todd Wegter,
who improved Bachrus speed matching.
- Jim Wells, who created our logos and the great program
- 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
- Jim Wolters, who updated the MRC Sound Brilliance 1812
- 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
- Steve Young,
who helped with CBUS documentation and the Groups.io migration
- Luis Zamora, who done a lot of work on the
- 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
Visualizations of JMRI Development Activity
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
More detailed metrics are available on the
JMRI OpenHub pages on
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