19.1.2: Security Freeze 5/7/26 • 19.2: Code Approval Mode begins 6/18/26 • 20.0: open in main • 20 EA3 Freeze 4/30/26; Feature Freeze 7/23/26
Welcome to the JMP Development Update for April 24, 2026!
I hope you all had a chance to watch the JMP Q1 Company Update to learn more about JMP’s financial results for the first quarter and forecasts for the first half of 2026. John Sall, Jon Weisz, Dan Valente and Jules Parris helped summarize JMP’s message on AI usage in development and beyond. I was glad to see our Spotlight Awards winners recognized including JMP Development’s own Chris Humphrey, Krzysztof Josefowicz and Shannon Leslie, along with Dahlia Watkins from JMP Technical Support and Kirsten Crannell from User Enablement. Jon Weisz encourages everyone to submit ideas for future updates here. The SAS Executive Update also happened this week and a recording can also be found in the SAS Video Portal or Brightcove.
As noted in the morning builds and installers email sent to Development, the DevOps team has recently made a process change for our 19.X.X tracks (currently 19.1.2 and 19.2.0). The automated processes that create builds and installers and run JSL unit tests each evening will only run for a track if JMP source code or third party source code changes were made that day. This change goes along with our JMP company goal to ensure the efficiency of JMP processes.
As we have added monthly security releases, we have observed that source code changes in those tracks are relatively infrequent due to their restricted scope and short timeframe. Additionally, there are numerous days during maintenance release cycles where no source changes are made. Please be aware that for this reason, if you use the OneDrive sync of installers to get the most recently created installer for a 19.X.X track, “the latest” installer may not have today’s date. If you have questions about installer sync from OneDrive, please feel free to reach out to Bob Hickey.
We are quickly nearing our JMP 20 EA3 Code Freeze, planned for the end of the day next Thursday, 4/30/26. Please make sure to update existing feature pages if you have additions to highlight for EA customers this time. You should add an ea3 label, update details on the page (most importantly the Motivation and Summary section), and remove any old information that is no longer relevant.
If you haven’t created a page yet for a feature that you wish to highlight for EA3, please use the Template for JMP 20 Feature Pages and be sure to fill out the Motivation and Summary section of the template. If this is your first time creating a feature page, see this How-to for more information or work with your product manager. The deadline for creating or updating feature pages is 9 am on Monday, 5/4/26, and you should have EA videos to Mia by COB Tuesday, 5/5/26. Please see EA Video Guidelines or reach out to Mia Stephens with any questions.
General Announcements
Important Upcoming Dates
- JMP 20 EA3 Code Freeze - 4/30/26
- JMP 20 EA4 Code Freeze – 6/11/26
- JMP 19.2 Code Approval - 6/18/26
- JMP 19.2 Code Freeze – 7/9/26
- JMP 20 EA5 Code Freeze – 7/23/26
- JMP 20 Feature Freeze – 7/23/26
- Please visit Confluence for a full list JMP 19 dates and JMP 20 dates.
JMP Development Updates
Core
- Xan: Added “Clipped Marker Indicator” options, including a little arrow pointing to the clipped marker.

- Dave B:
- Fixed two alignment grid bugs exporting to html and one bug exporting to rtf
- Updated jmprunner to show jmp 20 EA builds
- Fixed a crash Mandy found caused by editing a journal, mouse clicking and undo
- Reproduced a customer reported crash with editing axis labels and currently working on a fix
- Reproduced a customer reported crash standardizing column attributes
- Dan S: Continuing work on Accessibility for TableBox and FrameBox, including fix for problem with click-to-focus in some tables. Fix for layout issues in HierBox. Improved context menu clicking for Ternary axes. Fix for extra < messages when creating a platform preset. Added option for column switcher < to return the filtered list of columns instead of all columns.
DOE and Reliability
- Caleb: Attended the DATAWorks workshop with Tom Donnelly and Addison Adams. I presented two talks there (one was my own and one was for Irene Ji who was unable to join at the last minute). Both talks were well received! There was also some engaging discussion about the use of AI, much of which focused on ensuring it was used as a helpful tool and not something to replace critical thinking. I'll be out next week for vacation (headed to Myrtle Beach!!).
Hosting and Interfaces
- Paul:
- Updating the update_jmp_python.py script to be Python version agnostic by using the sys.version_info information in the script for the appropriate versioning of the library and zip file names. The script then runs using the version of Python that it was executed with.
- Testing out Python 3.14.4 build of JMP on Windows x64 and ARM64
- JMP-29090 - Isolate JMP from the PYTHON* environment variables. Fixed in 20.
- Tech support EA help for a customer trying to use Python multiprocessing from the embedded JMP environment. There are 2 key tricks necessary to make multiprocessing work.
- The multiprocessing object needs to be told the python executable to be run. multiprocessing.set_executable( jmp.PYTHON_EXE)
- The code to be run in parallel needs to be in a separate .py file as it will be run by the JMP supplied python.exe not JMP itself.
- Helping Evan investigate performance issue with large parquet file going from parquet -> pandas -> dt .
- Daniel: Working on improving our embedded web browser in JMP. A search bar, backward button, and reload button have been added along with the ability to export the page a page as HTML. Coming soon are fixes to the Edit>Copy and Edit>Paste menu items so the selected text on a webpage is copied instead of the current URL.
- Michael H:
- Fixed a bug with right clicks in a modal dialog on Mac for 19.2 and 20.
- Changed the Mac ipstocrash tool (used to present a JSON .ips crash report in human-readable form) to defer to the Apple-supplied viewdiagnostic command, which does the same thing only better.
Interactive HTML
- Paul Spychala: I have been working on performance of JMPHTML reports. This includes using the new calculation methods we have written in 20 for BoxPlots (JMPHTML-15409) to load reports that previously ran out of memory. We also improved the performance of Area and Line segments when multiple segments were made with overlay role (JMPHTML-15365, JMPHTML-15469). Last we fixed the windows JMPHTML proj for CI-Releases (JMP-30545). I have also worked on updating our ESLint tool to the latest version to support proper ES2025 syntax and worked on updating much of our mocha testing framework to use modules.
- John Powell:
- Added support for Graph Builder Ellipse confidence intervals that Xan demonstrated last week(JMPHTML-15439).
- Updated Parallel Plot to recalculate only what's necessary rather than rebuilding the whole cache when resizing (JMPHTML-15450).
- Reviewed JMP Live 19.5 and Statistical Process Control (SPC) draft documentation.
- Watched SAS and JMP Q1 videos.
- Attended JEJUG meeting.
- Answered a question about marker label colors on the JMP User Community.
- Mike Stickles: Closed out work on performance issue with dense line graphs, created Jira bug JMPHTML-15455 to capture test case and notes on what little was figured out. Fixed issues JMPHTML-14977 and JMPHTML-14980 (making Order By Rows and Row Runs graphs be rendered static with appropriate log messages for Bars and Mosaics, respectively), committed changes after code review and sent to Testing. Currently splitting time between additional performance testing and working on enabling Pattern Format for dates in Interactive HTML (JMPHTML-14083).
Stat Testing
- Tonya: Testing the spec limit column properties for my platforms. Testing Process Screening new features. Updating unit tests due to recent changes with how spec limit column properties are saved. Bug verification.
Life Sciences Updates
- Drew: Had a successful automated run of all JMP Clinical unit tests on both 19.2 and 20.0 branches - 270 tests in each that takes about 6 hours to complete. Hopefully this eases the burden on Anisa, Susan, and Peggy and more quickly exposes regressions in code changes in JMP Clinical. Assisting Novo in triaging and fixing fairly recent performance issues they are having with their large, hundreds or seats of JMP Clinical deployment. Thanks to Kristen Slappy and Bob Hickey, we will now start hosting the installation benchmark files on the marketplace directly. This has enabled me to update the validation suite add-in so it can discover/download these files at every new release - and not requiring the add-in to be repacked and updated with each release.
- Meichen: Working on updating the features for the Survival platform. Just added the Cumulative Incidence Functions (CIF) to Survival — when you specify a Cause variable, you should be able to see a new section for CIF analysis and the Gray's test. This is a feature for when there are competing risks in survival analysis. I'm also working with Clay to wire in the PH Model to Survival. Also working on adding the RMST (Restricted Mean Survival Time) option to Survival.
- Richard: Working on a double-forest plot summary for continuous and binary outcomes.
Product Management and Product Marketing
- Dan V:
- Bryan F:
- JMP Live – Report Workflow
- Continued progress on report workflow rules and UI behaviors with PM and development.
- Shared updated Figma Make prototypes focused on reviewer selection and reducing vertical space consumed by banners.
- Icon Alignment with Fluent System
- Created new DOE and SEM icons aligned with the Fluent System design language.
- Workspace Items
- Prototyping workspace item concepts in Figma Make to explore clearer organization and user mental models, informed by prior design charrettes and solution goals.
- Mia:
- Organized an internal focus group with the DOE team on Goal-Oriented Augmentation, to be held May 7.
- Participated in an Easy DOE feedback session with Intel and members of the DOE team.
- Starting to use Figma Make to create rapid prototypes for some design concepts.
Technical Support and Engagement
- Wendy:
- Engagement continues to respond to questions from customers and members of Sales as everyone adjusts to the new JMP Trial process.
- Sanie Fragata attended JMP Academy this week and got his first look at the Cary campus. Needless to say, it is impressive and we are all grateful to get to work and live in such a beautiful area.
- 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 cases related to Restricted Party Screening):

Development Operations
- Nick:
- Jenkins was updated to 2.555.1, which was a major version update and changed the supported version of JAVA to version 21 and newer.
- Swarm updates were applied and we're now on latest.
- News Windows 11 baseline machines created for Japanese, German, and French for DailyUT testing.
- Built a reusable and compact scanner, called jmpPackageScanner, our Security team can use to do package scans via Snyk in various ecosystems. This allows scanning of packages, such as duckdb, to quickly identify if there are known vulnerabilities and generates a report that can be shared with SAS Security for quick approvals and leverages quick testing across all package managers Snyk supports.
- Bob:
- Worked with Tech Support on special note to help customers with silent uninstalls of JMP
- Added code to nightly installer processes to skip installer build attempt if nightly executable builds are purposely not created
- Added step to create JMP Live 19.6 set of installer files – currently using JMP Pro Live 19.2.0
- Attempted to design a process to extract data from SalesForce with regard to installer downloads
- Shannon L: Security fixes for 19.1.2 are underway, with the release scheduled for May 19. Atlassian administration and user support across several groups at JMP this week, including Finance, DigiOps, Security, and more. Weekly technical meetings, including JMP emp user group meeting. Oxygen program management work. JMP Marketplace Monetization program management work. Security program management work, including process improvements for tracking JMP product vulnerabilities.
- Melanie: Put together a plan for Sample Data translations for 19.2 and the work to be done for 20.0 with Krzysztof and Trish – Thanks! • Worked through some Jira updates with Shannon Leslie • Continued working with the team on improving build processes for days with no source code changes • Investigated test failures in various places • Finalized and closed a few 19.1.2 branching task Jiras.
- Shannon C: Reviewed open JMPTEST items for crash and unit test failures and resolved some older issues that are no longer occurring. Investigated several crashes for technical support and development and added matching cases and comments. Held team technical meetings and 1:1s. Attended JEJUG meeting and watched JMP and SAS company updates. Congrats to all on a strong first quarter!
- Jim: Worked on JMPTOOL-1708.
Localization
- Krzysztof: Designing new workflow for merging localized Oxygen topic files into chapter files based on data maps. Scoping the work for automating localized Oxygen files validations and QA. Prepared and launched machine translated (+ LLM smoothing) caption files for Education group review (all languages). Preparing for the localization launch of 19.2 SampleData.
- Allison: Validated JA localized 19.0 Documentation pdfs, sent the localized pdfs to QA for validation and pushed the localized screenshots and fm files to P4 and labeled them; communicated with vendor about the metadata and settings of the localized pdfs; I also completed a couple more PM related courses in PLATO.
- Sandy: Worked on finished adding file validation back to end of populate job, finished adding more information to a vendor report, and began looking at validation of new oxygen files formats for translation.
- Sohail: Completed LLM translation polishing for education captions files, manually cleaned Euro languages, and tested prompts and infrastructure for term explanation script.
Documentation
- Susan C:
- Sent the updated JMP Live/Public resources (Admin/User help, Install help, and SPC help) for review
- Implementing review feedback
- Finished updating the 19.5 EN and localized templates
- Created Jira & subtasks for 19.5 JMP Live/Public RNs
- Planning for dot dot RNs, dates & content
- Devon: JMPDOC-2030 & JMPDOC-2033: Pushing converted XML doc books to Perforce.
- Jill: Reviewing dynamic table update doc changes and attending JMP Academy.
- Chris: XML cleanup.
System/Host Testing-Cary
- Eric:
- Dup’d JMPTEST-1452 DataTable/ODBC/testODBCPromise.jsl test failure to JMP-23605: Mac only: JSL Promise has failure for ODBC unit test of “Connection error (not a promise) test” and edited test to mark it as a known failure until JMP-23605 is fixed.
- Re-submitted my request for GitHub Copilot license after it failed to go through last week.
- Opened JMP-30512 Attempt to refresh schema-tables list for new SQLite data connection causes JMP 19.1.2 to crash. Dup’d to JMP-29470; Closed JMP-30512 as “Won’t fix” (for 19.1.2) since deemed unrelated to the sqlite@3.51.3 upgrade for CVEs and also because 19.1.2 is for security only.
- Attended JMP Academy Wednesday and Thursday.
- Met Systems Engineers Liang Huang (Singapore) and Donny Kopp (Denver, CO) at JMP Academy and scheduled a meeting with them next week to discuss Data Connectors sales training resources.
- Experimenting with JMP Assistant add-in to aid in JSL test script writing.
- Mandy: Worked mostly this week on testing a few Data table fixes, (Recode multiples), and a Tabulate/ID issue - met with Clinical and Developer on this issue, to be careful how this is fixed and changed due to its impact on affecting Clinical. Worked on simulating some data tables, trying to come up with something to use as a new table for JMP 20, adding tags, and filter views. Tracked down a crash and another issue from an internal JMP person that turned out to be a JSL issue. Attended the 1st testing meeting Joseph had for testers and others and attended the JEJEUG meeting.
- Audrey: Working with new SAS Viya servers maintained by a SAS group for internal use, trying to find a resource that we can rely on for our SAS testing. Modified the script which manages our multiple streams for unit tests to accommodate our new Third Party stream of tests and will be working with Justin Kusch and Jim Borek to make sure that’s working smoothly in the next week. I18N testing. Summer intern prep.
- Hunter: Installed the first JMP 19.1.2 nightly builds and verified online and offline authorization cases for all 12 product and host combinations. Investigated several reported problems and crashes. Verifications. Reviewed more localized documentation and updated the related JIRA.
Web Testing – Cary
- Standing up two new servers to support authentication testing against Okta and Entra ID.
- Ongoing Jira verification in the authentication and Personal Access Token (PAT) areas.
- Migrated wt-fixldap, wt-fixlocal, and wt-fixpublic from 19.1.0 to JMP Live 19.6 with JMP 19.2 for the pool server.
- Completed installer testing for Keycloak across JMP Live versions 19.1.2, 19.5, 19.6, and 20.0.
- No issues found; Keycloak appears more verbose during startup. Behavior is noted and under observation.
- Attended a customer call related to login issues following their move to a new identity provider.
- Assisted a customer in regaining access to JMP Live after an admin password was forgotten.
- Reviewed JMP Live 19.5 documentation.

- Seema: Spent 2 days in JMP Academy and learned so much about what different areas of the company do and how everyone works together. The best part was meeting so many folks in the different groups and from different countries.
- Accepted and Closed:
- Some error messages contain extra period at end
- Empty PAT value when generated from JMP Live
- Add ID values to Warnings panel
- Report selection does not work in Publish window if you have accessed the window via Previous button
- Permit regeneration notice to be moved?
- Very surprising characters showing up in qc_ids
- Created Jiras:
- Warnings panel default # IDs displayed not consistent with default # rows displayed
- Error on publish when default folder selection is one the use does not have download permissions to
- Correctly sorted IDs don't always match correctly sorted row numbers in Warning Panel
- In Progress:
- CCB: use Unicode Unicode 0x1F as delimiter in warnings JSON qc_ids string
- PS: use Unicode Unicode 0x1F as delimiter in warnings JSON qc_ids string
- Deal with semicolons in ID column in PS and CCB
- Hui:
- Reported 20 defects across Control Chart Builder, Process Screening, and Graph Builder, focusing on data integrity (ID roles, missing values), tooltip failures, performance lag, and critical crashes, including a blank Control Chart on URL relaunch.
- Identified a recurring HTML5 tooltip issue when summary statistic terms are used as column names, affecting Markers and multiple segment types (JMPHTML 15460). The behavior follows a consistent pattern; Paul is coordinating with the JMP Graph Builder team to confirm desktop behavior and root cause, and a shared fix may address this class of issues if confirmed.
- Verified 22 closed defects, primarily critical crash fixes, performance improvements for large reports, restored explanatory messages, and new ID role support in CCB to improve long term resilience.
- Investigated all linked “missing log message” issues, regardless of Test Ready status, to confirm whether they were resolved by Praveena’s fix (JMPHTML 15356) and to identify any remaining gaps.
- Collaborated with John Powell to clarify and verify heatmap performance behavior, validating the new approach of updating (not clearing) the heatmap cache during resizing (JMPHTML 15361), and completed verification of all Process Screening tickets, preparing to go through Aurora’s cases next.
- Taylor:
- Attended JMP Academy this week where I learned a lot more information about the individual teams and the company as a whole. I also worked on setting up 19.6 on my local dev machine so I can begin testing that version.
- Accepted and Closed:
- Unable to upload new data table
- Both log in and sign in are used in the JMP Live local login dialog.
- Outdated reports appear, then disappear, come back on refresh
- Cannot select folder within different space when moving post
- Anna: Verified HTML5 performance fixes. Checked Dan’s Ternary Plot axes fixes. Testing Dan’s Column Switcher filter list update. Adding new imageTests for FIXED Jiras.
Note from Shannon
Thanks very much to Jill Amaya for sharing these mathematical Mom/Dad jokes! :smiling_face_with_smiling_eyes:
What kind of beats do mathematicians like to dance to?
Logarithms
Why did the obtuse triangle go to the beach?
It was over 90 degrees.
Why was the mathematician such a terrible gardener?
All of his plants had square roots.
Regarding my XKCD from this morning, Mike Stickles pointed out that it’s not a good idea to give the robots training data about where you’d hide…and Shannon Leslie shared this funny find from social media that went hand in hand with the theme:
