19.0.4: Security Freeze 1/8/26 • 19.1: JMP Code Freeze 1/5/26; JMP Clinical Code Approval begins 1/26/26; JMP Clinical Code Freeze 2/9/26 • 20.0: open in main • 20 EA1: 1/22/26
Welcome to the JMP Development Update for January 9, 2025!
Thanks very much to Audrey Shull for sharing the following anniversary announcement and congratulations to Mike!
Congratulations are in order for Senior Test Engineer Mike Muhlada who is celebrating his 10-year JMP anniversary! Mike previously worked as a Test Engineer at Toshiba and IBM, and we brought him to JMP when our test team was expanding in 2016. Mike has tested JMP’s Application Builder and the Formula Editor among other areas, but you most likely know him from his work with the image testing framework, as he keeps an eye on thousands of tests to let you know when there may be an unintentional diff. Currently Mike is working with Evan McCorkle on expanding Mimic, our GUI test framework developed by Evan; we’ll likely hear more about that effort at a dev talk later this year. Fun fact: even before Mike joined JMP he was no stranger to the SAS campus as he spent some years participating in SAS Vocal Motion. Congratulations on 10 years, Mike!

With work on our JMP 19.0.4 security release wrapping up and JMP 19.1 code freeze now past, JMP 19.2 branching is planned for next week. Meanwhile, developers continue to submit fixes for testing in the JMP 20 track, and we expect some of those fixes to be critical enough to integrate into 19.2 when that track opens. The doc team is working to finalize 19.1 Help builds while the localization team reviews doc handoffs and finalizes various string returns. Testing teams continue to verify 19.1 fixes and prepare for installer testing for 19.0.4, 20 EA1 and 19.1 in the near future.
A reminder that we will be freezing JMP 20 EA1 on Thursday 1/22/26. Please see the reminder on your Outlook calendar for more EA reminders and details! It’s great to see so many people adding new feature pages and updating existing ones this week. Please continue to contribute to feature pages so that product management can get as much info as possible to our early adopter customers about new features already in need of testing.
This week at the JMP dev meeting, Russ Wolfinger gave a demo of a new version of a JMP Assistant add-in created with assistance from Claude Code, a very recently SAS-approved tool for coding assistance that he found to be highly useful. The presentation generated a lot of questions and comments in a very active chat. I’m sure both the Assistant and AI coding tools will be the source of much further discussion in the days and years to come. If you missed this meeting, you can find a recording here.
At the dev meeting, Dan Valente also introduced and welcomed our most recent addition to the PM team, Scott Allen. Scott originally joined JMP as a systems engineer, and has also developed popular marketplace extensions over the years. He’ll be the new product manager for the JMP Marketplace (including extensions of course!) and will work with developers on natural language interface related projects. As Scott noted, Russ has asked for feedback on the JMP Assistant and Scott has set up this page to consolidate and organize that feedback in Confluence. Thanks in advance for contributing to the page!
General Announcements
Important Upcoming Dates
- JMP 19.1 L10N Freeze - 1/15/26
- JMP 19.1 Security Freeze – 2/19/26
- JMP 19.1 Final Image Candidate – 2/23/26
- Please visit Confluence for a full list JMP 19 dates.
JMP Development Updates
Core
- Xan: Added a “pseudo-log” scale type for axis and gradient scales — a log that smoothly becomes linear near zero and is negative for negative inputs.

- Dan S: Improvements to handling "dirty" reports - prompting to save when dirty and setting the dirty flag when needed. Initial work on the "Explorations" feature. Continuing work on Accessibility. Looking into updates to ScriptItem for more dynamic support.
- Dave B:
- Made a first pass at cleaning up image tests that did not create any reports or journals so never had any images to compare
- Studied existing jsl encryption and Paul’s proposal for protecting jsl source for Marketplace add-ins
- Fixed a “make combined data table” regression
- Ernest: Working with Evan and Dan on new Data Table panel to show derived platforms.
DOE and Reliability
- Caleb: Working in the Repairable Systems Simulator looking at ways to allow users to clone designs and create library items in that platform.
Hosting and Interfaces
- John Schroedl: Worked with Paul S. on Visual Studio project changes. Vetted VS 2026 for planned switchover soon. Updated JMP 20 to latest WebView2 runtime and SDK to stay current (not security-related). Accessibility pushes related to virtualized containers.
- Will: Worked on WEBJMP-9830: Added support for JMP Live refresh scripts using the SharePoint data connector and JMP-23687: Improved the ODBC integration for the Mac with ActualTech drivers to include empty schemas when saving a table to a database.
- Paul:
- Triaging 2 false positive Snyk reports on Python.
- Exploring securing JMP add-ins for Market place. On macOS, have running code that extends our ZipArchive class to handle an encrypted file within a .zip ( .jmpaddin ) file.
- Testing update of libzip on macOS from 1.5.2 to 1.11.4.
- Wrote additional C++ unit tests for SecureString class, and tests for the new EncryptedZip class.
- Helped Caleb track down issue with PySR package on his machine, and Dahlia supporting a customer.
- Had meeting with Brad Norris and Ruth Hummel on improving the getting started with Python training materials. Evan and I saw a lot of the same basic questions from various customers on getting started with Python.
- Downloaded Russ’s JMP Assistant add-in to look under the covers inside the add-in bundle.
- Started process of updating building and updating lib curl for JMP 20. A new release Wednesday addresses medium and low vulnerabilities.
Interactive HTML
- John Powell:
- Wrapped up our first refactoring sprint for JMP 20 and started a new one.
- Replaced the use of the 3D view controller (TrackballControls.js) used in Scatterplot 3D with a new one since it has been deprecated from the latest version of three.js (JMPHTML-15152).
- Completed Year-end discussions.
- Took a short course on JavaScript Modules on PluralSight.
- Reviewed Interactive HTML Feature requests with Dieter, Praveena, and Paul.
- Mike Stickles: Currently working on JMPHTML-489 (Refactor Interval bars to subclass). Due to the complexity of BarSegment, this will likely be a multi-week effort which may wind up also separating other bar types (stacked, range, etc.) to subclasses.
- Paul Spychala: Working with other developers to create the new HTML build system (JMPHTML-1824).
JMP Live
- Aurora:
- 19.5 - Fix leak of info with odd GraphQWLquery. Re-notify triage assignee when warning status moves "backwards". Always include valid / invalid in triage related downloads. Audit log change to package ID during move. Audit log reassignment of content directly in user deletion audit log record.
- Created confluence article for history of who can move posts around.
Stat Testing
- Mark: Wrote a script to collect diagnostic information about failures in Bayesian Optimization fitting to help Chris and Kasia. I ran the script on my Windows computer and a Mac, which do not exhibit these failures for reference. Jim will run the script on the test machine exhibiting consistent failures daily for me after this test machine is restaged, and he finishes branching activity next week. I explored how JMP Notebooks might be used by JMP Development with Jacob. I brainstormed a version of the internal usability study tool with Jacob that might be published in the JMP Marketplace. I brainstormed ideas for telemetry in Easy DOE with Jacob.
- Tonya: Testing Process Screening new features. Bug verification. Working on QA presentation about beta feedback.
Life Sciences Updates
- Richard: Met with FDA to discuss multiphase studies. Working on a report for TTE analyses across all adverse events (AEs). Signed a contract with CRC Press to write a book tentatively titled "Data Visualization in the Life Sciences Using JMP".
- Drew: Researching JMPC 20 infrastructure changes to simplify report writing. Assisting in code reviews and integrations into JMPC 19.1 branch. Triaging performance issues with Roche’s JMP Clinical Citrix deployment.
Product Management and Product Marketing
- Bryan:
- For the Explorations feature, posted a Report States & Prompts spec to indicate how to make it easier to save reports and linked data tables in the context of a data table, linked a Figma Make prototype on the feature page, updated feature goals for greater clarity, and explored naming for the aggregate panel.
- Provided feedback for JMP Live Space/Folder navigation (JMPUX‑193), suggesting filter-chip versus tab behaviors. Also, provided feedback on making data table scripts available to JMP Live users.
- On the Assistant Add-in, suggested major UI changes, and reviewed Discovery Lab notes with Scott.
- Facilitated a meeting with respect to Accessibility efforts related to supporting keyboard navigation and screen readers. Setup a bi-weekly cadence for future accessibility meetings.
- Provided feedback to David White on how we could possibly make it easier for the user to deselect all rows and columns in JMP.
- Downloaded FluentUI System icons (~6900 icons) and I’m in the process of exporting to PNG to make icon delivery easier.
Technical Support and Engagement
- Wendy:
- We hope everyone had a warm and wonderful holiday season. User requests are ramping back up this week and we are maintaining momentum for our on-going projects. User Enablement will have our kickoff meetings next week in Cary. If you see us around or in the cafeteria, please stop by and say hello!
- Below are the usual graphs for case volume as well as topics for both Tech Support and Engagement. Here are the TS JMP Live reports and the link to the Jira filter showing the tickets reported by Support for the last 14 days.
Technical Support Case Volume by week:

Case Topics for Technical Support queue, last week:

Engagement Support Case Volume by week:

Case Topics for Engagement queue, last week (excluding Restricted Party Screening):

Development Operations
- Jim:
- Prepping for Perforce branching of JMP 19.2 and 19.0.5 next week, plus the JMP 20 EA coming a week afterwards.
- Due to connection issues from Jenkins, manually triggered unit test runs for JMP Pro 19.0.4 on Windows Server 2022.
- Worked with Bruce Crenshaw and Chad Williams on the internet access to internal SAS sites from the Tahoe unit test runs. Ultimately, the machine needs to be restaged.
- Worked with Brook Banks to get a Windows Desktop replacement for my non-upgradeable Windows 10 Debug UT run machine; currently working on setup and configuration.
- Working through a JMP 20 Python issue with Paul Nelson.
- Melanie:
- 19.1: Completed JSL Conflicts for 19.1 PortableUI strings; Completed checks for translated sample data tables.
- Unit Test Dashboard: Now running twice a day (6am & 3pm); added code to handle process naming problems that arise in certain situations; stumbled on LDF problems in JMP Live 20 that were fixed quickly.
- Variety of troubleshooting across automated processes.
- Shannon C: Continued Q4 wrap-ups with team. Looked into some unit test stream failures and OS detection weirdness with Jim and Nick.
- Bob: Wrote scripts to create windows installers for version 20 early adopters – jmp, jmppro, jmpstudent, jmpclinical. Modified OneDrive nightly process to add JMP Live installers.
- Myron: Catching up after vacation and working on various aspects of cleaning up unit test data.
Localization
- Krzysztof: Finished 19.1 UI localizations (everything validated and pushed for Portable, Builtins and SampleData). Re-training MT engines with latest translations. Helped fixing JMPLivePublic help jobs and scripts for 19.1. Testing new functionalities in the localization workflow.
- Trish: Prep work for JMP Live Public help handoff. Continuing to get new Korean reviewer onboarded through ZIP. Prep for Q4 Wrap Up conversations.
- Sandy: Worked on bug fix for populate file validation and image diff file validation. Worked on enhancement to PortableUI return processing.
Documentation
- Chris: Updated the JSL compatibility doc with the help of several developers and stat writers. Updated the helpmap. Reviewed Susan's changes for JMPDOC-2705. Reviewed and ran production scripts on CR. Addressing translator queries and fixes for our 19.1 doc push.
- Qiana: Attended meetings. Finished JMP 19.1 doc updates in cards, UG, and JSR. Ran production scripts on the BookPDF and cards. Worked on the procurement process for MathType software. Project planning and coordination.
- Susan C: Finished creating scripts & videos for JMP Live for SPC help. Labeled all JMP Live help files and got peer reviewed & handed off to L10N. Production checked books for JMP help final build.
- Jill: Peer reviewed JMP Live help. Production checked the DOE, EG, AR, and LS docs. Reviewed animated gif instructions for JMP Live. Final 19.1 UI string review. New hire orientation.
- Devon: Preparing XML files for teams to review new web help output, preparing for mass conversion of FrameMaker files, running production checks of 19.1 help.
System/Host Testing-Cary
- Mandy: Chasing down some odd things in JMP 20 that got pushed right before the holidays - but caught them all, and got some fixes in and tests cleaned up. Hit a random Preferences crash - my crash Queen style (ha) and I believe developer has already fixed that one. Worked on verifying a few JIRAs and added one test case. Worked with Melisa on setting up her Mac with P4 and JMPRUNNER and working on a test build testing for fixes, and that went well (she is doing great!). Next up - testing Filter View changes and the new Data table look that is coming soon for JMP 20 and more testing of the Dynamic tables (Summary, Stack, Split, Transpose).
- Hunter: Ran through installation and authorization cases with current JMP 19.0.4 nightly builds in preparation for final image testing next week. Reviewed the JMP 19.1 keyboard shortcuts and menu description cards for Windows and Mac and updated the related JIRA items. Investigated crashes and JIRA verifications.
- Nick H: Working on 20.0 verifications for both bugs and smaller features. I have also been trying to clean up some of my unit tests with varying success - a lot of inconsistencies between local runs and nightly runs. Started investigating dashboard graph date issues possible related to timezones.
- Eric: Working to close out 19.1 JIRAs. Also installed my first Add-In from Marketplace… LearnBot. Hoping to utilize this chatbot to accelerate my process of learning JMP!
Web Testing – Cary
- Josh:
- Created the JMP Live 19.0.4 environment, including Jira tracking and the testing matrix. Preparing for installer testing starting next week. Closely tracking 19.0.4 Jira issues to ensure they are addressed with appropriate priority.
- Answered questions on:
- Building JMP Live locally
- Running and building multiple versions of Live on the same machine
- Wrote a test automation script that allows testers (after initial setup) to:
- Pull the desired version of JMP Live
- Automatically update environment configuration files
- Performing Jira verification.
- Adding additional refresh intervals to the wt-midweekly environment to ensure refreshes are processed every 5 minutes.
- Creating JMP Projects with multiple data tables and validating that they refresh correctly in JMP Live.
- Anna:
- Reported issues:
- Data Viewer - JMP Live.
- Dendogram should display color map by default.
- HG: DS: Three Dot menu items for features not yet supported should be removed from menu
- DS: HG: Need to allow user to toggle Continuous Fit distribution curves display from chart and tables
- OneWay: Error: The report script did not return a JMPApp, Platform or DisplayBox.
- Graph Builder: Error: The report script did not return a JMPApp, Platform or DisplayBox.
- CCB: OC curve chart missing - NOREP
- Verifying fixes for Data Viewer - Client in JMP Live.
- Starting to verify fixes Michael Snoit has made for LDF.
- Revising JMP Live 20 Readiness for JMP Pro 20 new features webpage based on feedback from John P, and Hui.
- Natalie: HTML Automation report: 19.0.4 – All Clean, 19.1 – All Clean, 19.5 All Clean, 20.0 – 5 diffs being investigated. Integration of the Beijing UT tests into the daily run along with the new Personal Access Token update caused an interruption of the 20.0 automations servers. But these necessary updates are in place now. I am investigating the diffs at 20.0 along with bug verification.
- Hui:
- Verified a customer-reported interaction issue with HTML5 process screening on JMP Live 19.1.
- Good news: The problem does not reproduce.
- Reported a new process screening interaction issue.
- Provided feedback on Anna’s JMP Live 19 Readiness Confluence page for JMP 19.
- Started regression testing for JMP Live 19.1 focusing on internationalization and localization.
- Continuing testing of the Process Screening Triage feature
- Steve:
- Completed integration of JSL UT tests (EndToEnd, Security, VariousReports, Compatibility, Stress) into existing automation framework.
- Created and updated documentation on how to set up and run the above-mentioned JSL UT tests using current framework.
- Updated existing pipelines and explored options to run the JSL UT tests nightly along with existing JMP Live automated tests.
- Currently in the process of configuring servers and Jenkins pipelines to deploy the JSL UT tests for JMP Live 20.0, 19.5, and 19.1.
Note from Shannon
I had to share this cute AI-generated graphic that Michael Hecht made this week, in honor of Mandy Chambers’ ability to find all those weird crashes, especially on the Mac! :smiling_face_with_smiling_eyes: Hope you all have a great weekend!
