19.1.1: Security Freeze 4/2/26 • 19.2: Code Approval Mode begins 6/18/26 • 20.0: open in main • 20 EA3 Freeze 4/30/26
Welcome to the JMP Development Update for March 27, 2026!
Thanks very much to Wendy Murphrey for sharing the happy announcement of Arn Cota’s upcoming retirement after nearly 30 years at SAS and JMP! Arn, I know I speak for all of development here - we wish you the best as you begin this new chapter! Wendy writes:
Arn began his career at SAS as a developer for Southpeak and, over the years, contributed to many SAS products including Supplier Relationship Management, Enterprise Guide, Enterprise Miner, Curriculum Pathways, and the Health Information Exchange. He eventually found his home at JMP in Technical Support, where he made a lasting impact on the team and those he supported. Arn’s last working day will be March 31st.
As you should have seen from Audrey’s note this morning, JMP QA has now signed off on JMP 20 EA2 and installers have been made available on MyJMP. Customers will be notified of their availability on Tuesday. Thanks for updating your feature pages so that our EA customers know what is ready to test! EA3 freeze is coming up next on April 30.
FYI that this week, my team rotated a token for Jira integration that is required for JiraBot, Swarm-Jira integration links and other Jira tooling integrations to work correctly. The expired token caused changelist links not to be added to Jira issues updated within the last day, but this linking integration should be working again. In the process, I noticed that including the full link to a Jira issue in a Perforce changelist description in or having a special character next to a JiraID can prevent the ID from being recognized so that a changelist link can be added. For now, please use the plain Jira ID (e.g., JMP-XXXXX) in your changelist description so that the identifier can be located and linked. DevOps will experiment next week to see if the flexibility of this matching mechanism can be improved.
With 19.1 now released, the 19.2 track is open for important fixes. We will enter Code Approval Mode for 19.2 on June 18. Please fix issues in 20.0 and have them tested before integrating to 19.2 wherever possible. We are also heading towards freeze for our 19.1.1 monthly security release, with final installer candidates planned to be created on April 5. After QA and other interested parties sign off, installers should be available in MyJMP by mid-April.
Thanks very much to JMP Graduate Research Assistant (GRA) and NCSU Statistics PhD candidate Sohyeon Kim for presenting at yesterday’s JMP Dev meeting! She shared her ongoing (and award-winning) research on the Multivariate Multinomial Logit Model with Correlated Outcomes, which recently received the Distinguished Student Paper Award from the Eastern North American Region (ENAR) of the International Biometric Society and an Honorable Mention from the ASA Mental Health Statistics Section. If you missed the meeting, you can find a recording here.
Finally, thanks to all who gave to the InterACT donation drive held in honor of International Women’s Day. As Nick Shelton noted in a comment on this recent Inside JMP article, “I’d also like to thank everyone who contributed to the InterACT donation drive. Thanks to the generosity of JMP employees, we had another successful year supporting this wonderful organization. Pany’s car could barely contain all the donated items!” Thank you very much to Pany for delivering JMP’s contributions.
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
Technical Support and Engagement
- Wendy: This week we celebrated Arn Cota’s upcoming retirement after nearly 30 years at SAS and JMP. (See more details in the main section above) Thanks to Arn, who made a lasting impact on the JMP Technical Support team and those he supported! His last working day will be March 31st.
- Below are the usual graphs for case volume as well as topics for both Tech Support and Engagement.
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:
- Windows 11 AMI Finished: Audrey is currently testing and found that the CPU Options for NestedVirtualzation doesn't bake into the AMI... So one little gotcha that needs to be set when launched from AMI manually... But I've already updated the DailyUTWatcher project to:
- Update the machines.json to now support sending CPU options
- Updated the Go code with the latest and greatest AWS Go Modules for EC2 support which included the NestedVirtualzation feature
- Moved us up about a year in AWS updates in the Go code
- This process is now ready for DailyUT and will support Windows 11 machines and their specific CPU option setup correctly.
- Also, I wrote a launchprofile for Windows 11, but it's a bit cumbersome to use. Instead I'm going to just make sure we educate and explain the option that needs selecting for Windows 11 so you have passthrough to hardware and can have access to the C8i machine's metal.
- Worked on JMPSI to figure out what was going on with late night Perforce issues. I believe this was related to a service that got corrupt. This has been fixed, but I'm continuing to watch to make sure it stays that way.
- Resolved an issue with Jira-Swarm integration where changelists did not get added to some Jira issues due to an expired token.
- Myron:
- JMPTOOL-2024: create new book name entries in JiraBot
- JMPTEST-1172: special builds not in dashboard; special builds need longer detection window
- JMPTOOL-2122: JiraBot filter now working; update all Jira API calls with new credentials
- JMPTOOL-2050: unit test file retention for AWS servers
- Bob:
- Worked with John Schroedl on getting Visual C++ Redistributable installers safely removed from version 20 installers without any customer/user impact (JMP-29434)
- Coordinated with Jim and Paul N. - update 19.1.1 and 19.2.0 Windows installers with new security files (JMP-30008)
- Uploaded version 20 EA 2 installers (EAP-362)
- Jim:
- Built JMP 20 EA #2 on mac OS and WinOS
- Altered JMP build scripts on WinOS to accommodate changes in the file dependencies
- Thanks to John Schroedl for assistance in applying the new signing certificate to WinOS build files
- Shannon L: JMP and JMP Live 19.1.1 release preparation, including security reviews. Work is continuing with the JMP Marketplace Monetization project, with stakeholder meetings for R&D, Finance, and MyJMP this week. Atlassian admin user support. Attended the Athena Leadership Conference on Tuesday. Weekly technical meetings, plus a review of published JMP documentation with Tech Support.
- Shannon C: Continued Q1 goal conversations and weekly team meetings. Jira triage and planning for crash migration. Met with doc and engagement about mechanisms for communication of changes in releases. Looked into several 19.0.X mystery crashes and a few UT failures.
- Melanie: Updated and improved branching and end of release tasks. Working on 2026 goals. Attended the Athena Leadership Conference in building C on Tuesday. Investigating and testing a variety of Jira work items.
Localization
- Allison: created and updated 19.0 JMP Doc Add-ins for KO and JA and handed off to Marketing to post on Marketplace; finished translating 19.5 JMP Live UI strings and handed off to reviewer; communicated with developer and vendor regarding queries related to JMP Live UI strings; looked for new resources to support Simplified Chinese localization; handed off localized documentation pdfs to Web team to post on the web.
- Krzysztof: Handed over video caption translations done with MT and LLM to Education group for review. Fixed translation errors in PortableUI for Japanese. Working on a process for combining Oxygen topic files into chapter files based on the DITA map. Re-training MT models with latest translations and terminology. Testing new L10N automation features.
- Trish: Worked with Legal to get clarity on using vendors in China. Working on getting translation team in place to complete Simplified Chinese translations for 19.2. Goals conversations completed.
- Sandy: Worked on restructure of dashboard validation classes, adding new feature to Korean report we provide vendor, and moving all files in commit/return process into same json file.
- Howard: Demonstrated JmpL10n Library and Dashboard APIs to the team. Finalized KOR Report approach when project is launched in the Dashboard. Some bug fixing.
- Sohail: Integrated test suite, added batching API, debugged empty API response errors.
Documentation
- Susan C:
- Qiana: Met with TS about the timing of doc being released and difference between RN, NF, and Security Bulletins. Met with PM about Oxygen migration. Attended the ATHENA Leadership Conference. Project planning and coordination.
- Devon: Continued work converting the FrameMaker documentation to DITA XML--up through about 3/4ths of the books.
- Jill: Reviewing the 3/23 UI string report, working on UG Jiras: JMP-27018, JMP-27513, and JMP-29711.
System/Host Testing-Cary
- Eric:
- Finished installing required ODBC drivers on my personal Windows laptop and Mac.
- Working to install the same required ODBC drivers (SQL Server, MySQL, Oracle, Teradata, DB2 and Postgresql_64bit) on the Windows and Mac environments for the dedicated Suffix Runs that require manual intervention.
- Reviewed Russ Wolfinger’s demo on Claude Code and Assistant 2.0
- Installed the Assistant add-in in JMP 19.1 and started learning how it works.
- Added company goals for 2026 in Workday.
- Added personal development goals in Plato
- Hunter: Completed testing with the JMP 20 EA 2 products on Mac and Windows. Authorization upgrade case testing for a fix in JMP 19.1.1. JIRA verifications. Investigation of several open host items. Reviewed more localized documents. Worked with Jim Borek to move Mac MDH374 to our host testing KVM switch in the lab where it is now available for remote access.
- Mandy: Created 3 EA2 videos for Dynamic Tables - Summary, Dynamic Tables - Transpose, Stack, Split and Column Tags - Auto Tagging. Completed journals for all 3 and examples that could be shared with the users. Worked on a few Jiras verifying and adding a few test cases as needed.
- Audrey: JMP 20 EA2 testing. Helping to test an auth fix for 19.1.1. Intern interviews. Intern program preparation. Working with Justin Kusch and Tony Gianni (from SAS) on SAS Viya 9.4 configuration investigation.
Web Testing – Cary
- Josh: JMP Live areas of focus this week:
- Pool Server regression testing
- Authorization changes to JMP Live 20.0
- Postgres installation testing on 19.1.1, 19.5, and 20 due to the need to address a vulnerability
- JMP Live 19.1.1
- Installer testing is around the corner
- Machine setup
- Confluence page updated
- Jira story and subtasks created
- The usual—answering internal and external questions

- Anna:
- Doing regression testing for Mike S.'s refactoring of bar charts.
- Reported Side by Side Interval | Range Bar chart labeling issue that Mike S. analyzed and determined was a Desktop bug.
- Reported Pie slice issue w/Totals calculations w/negative values for Desktop that Paul S. identified.
- Reported that Pie labels showing summary statistics for various Percentages should use Percent format.
- Reported Jira for Pie chart tooltips showing incorrect values when data has Hidden | Excluded values.
- Reported Contour bug on Desktop where Violin chart for data w/some Hidden rows drops violin but HDR plot includes it. HTML5 includes it. Depending on Dan S.'s response to determine which is correct behavior.
- Reported TS issue for Pareto Plot and noticed that exporting to HTML5 generates static image but no message written to LOG.
- Verified fixes for Data Viewer in JMP Live.
- Tested Justin's fix for problem Michael Senoyuit reported w/ Graphlets in JMP Live. Initially seemed good but in playing w/it more I got an error so will try testing again in tonight's build.
- Seema
- Accepted and Closed:
- Drop all warnings information about Process Screening platform if found alongside CCB
- Back end: Make available a count of processes in PS report with warnings not "Addressed"
- New data that has been imported via script not displayed properly without refreshing
- Remembered Setting Apply Button does not work
- Triage from graph causes all Warning panel categories to expand
- Front End: Handle new qc_group attribute
- Change control chart grouping string format in notification email
- Prefer qc_time over qc_rows / qc_sampleWithinPhase in DISAMBIGUATING_MARKER_ATTRIBUTES
- Created Jiras:
- Post with dependent posts appears to be deleted after message saying it cannot be deleted; page refresh displays post
- qc_ids error when trying to publish Control Charts with Warnings
- In Progress: several Jiras around Process Screening Warnings and qc_ids and other qc_*variables .
- Hui:
- Documented an HTML5 verification model in Confluence to reduce inconsistent coverage and improve repeatability across testing.
- Updated the Add in to support faster publishing to JMP Live 20 and updated the related Confluence documentation.
- Reached out to Aaron regarding JMP Live configuration capacity via JSL; contacted Alex Taylor to investigate about a WebJMP installer issue.
- Completed I18N testing for JMP Live 19.5. Overall, testing is in a good state, and I’m not seeing any new blockers. Thank Josh updating the I18N testing server during the test phase.
- Identified and reported HTML5 background and text color discrepancies relative to desktop JMP behavior.
- Natalie: HTML Automation report: 19.1.1 –– All Clean, 19.5 All Clean, 20.0 – All Clean! Continued to work with Steve’s new Process Screening libraries and step definitions. We investigated some performance related issues I was having on the JMP Live automation server and resolved those issues. I continue to create new test features using Steve’s amazing new code!
Core
- Evan: EA2-related work including last-minute changes (Linked Items -> Reports), feature pages, and videos. Telemetry Analysis of Dark Mode (40% of macOS and 23% of Windows users) and some other minor telemetry work. Reworking a11y peers for ListBoxBox to improve performance. Reviewing and incorporating Discovery Europe 2026 Lab feedback for Linked Items.
- Dan S: Improved script generation for JRP/Session/JMPLive to include more box properties (alignment, justification, wrap-width), particularly for TextBox. Fixed export to Interactive HTML issue introduced with Linked Item work. Fix limitation of 30k pixel height for TabPage content. Fixed script generation for Fit Group with By.
- Xan: Axis box sizing; WildTrack seminar; adding support for multiple overlay variables to Graph Builder.
Hosting and Interfaces
- Michael H:
- Fixed a bug that caused Mac JMP windows to draw a blank horizontal stripe at the bottom. The stripe would go away if the window was resized. The bug also caused the JMP Log window to shrink vertically a bit, each time JMP was launched. (JMP-4200)
- For PI Import, fixed a bug that caused my TableDisplay to have a glitchy appearance, where columns sometimes did not align properly. Candidate for 19.2.
- For PI Import, added an Attribute Name Filter for Asset Framework imports, that allows the user to filter attributes by name when adding all the attributes in entire framework branch. Also added informational notes below the table showing the number of streams that will be imported (AF and PI Tags). (JMP-30160)
- Fixed up our code base so it compiles cleanly with the newly released Xcode 26.4. Most of the fixes were needed because the new compiler is more aggressive about detecting functions that should be tagged “[[noreturn]]”.
- MacOS now has a mapping for “.sql” files. This was causing JMP to fail to assign the correct file type for files with this extension (detected by a C++ unit test). So I changed JMP to map this new UTI “org.iso.sql” to FileType::SQLCode, with a fallback to also map the legacy UTI “com.mysql.sqlcode” if it is encountered.
- Paul:
- JMP-30008 - HDF5 security update - JMP 20, 19.2, 19.1.1
- JMP-30176 - libcurl security update - JMP 20 - 3 medium, 1 low CVE
- Meetings and prototyping additional security measures for internet activation.
- GitHub Copilot
- Watched SAS’s GitHub Copilot training videos and received access.
- Installed adding to Visual Studio and Xcode
- 1st use was to ask it to look at JPyObject.cpp and embedPy.cpp for memory and security errors. It found 10.
- John Schroedl: Updated OpenBLAS numeric libraries to v0.0.32 on Windows at main. Updated libxml2 to v2.15.2 for our three current versions. Helped eliminate the separate Visual C++ redistributable install step. More icons updates. Investigating an issue with entering the AltGr+6 ('|') character on French keyboards. Entered Jira item based on customer complaint about poor contrast reading link text in selected table cells. Did some initial color investigation for this and David W. went far beyond with an elegant fix. Added SI examples for Run Program illustrating how to handle programs which write output in different encodings.
Interactive HTML
- Mike Stickles:
- Last week: Completed work on JMPHTML-489 (Refactor Interval bars to subclass); the scope was expanded to refactoring ALL implemented bar styles – Interval, Interval Side-By-Side, Range, Stacked, Bullet, and Nested - to subclasses. The work had the side effect of fixing bug JMPHTML-589 (GB: Bar: Labels not shown for Interval style), although the labels are not positioned as in JMP; a new Jira (JMPHTML-15357) has been logged to fix the positioning. Also completed ACT-Now training.
- This week: Completed work on JMPHTML-2000 (Replace getDescendants with more efficient call or detect siblings in C++), reducing the execution time of the offending method from around 1.6 seconds down to 5 ms in the test case. Found two performance issues (JMPHTML-1981, JMPHTML-1962) that seemed to have already been fixed, and sent them to testing for verification. Investigated JMPHTML-15368 (GB: Bar: Side-by-Side Interval shows different label value) and determined that this is actually a JMP issue, as the Side-by-Side Interval labels in JMP differ from the labels for the same graph using Interval or Range bars, but in HTML all three labels are the same. Testing agreed, and moved the issue to JMP (JMP-30165). Currently investigating other performance Jiras.
- John Powell:
- Updated RectSegment to avoid unnecessary calculations when resizing. Now, interactive HTML heatmaps with 300+ cells built from 1.2 M rows resize smoothly(JMPHTML-15361).
- Updated RectSegment to use a new calculation Paul created to handle highly nested groupings without crashing due to excessive memory use (JMPHTML-15372).
- Rewrote code used to parse number arrays quicker by avoiding expensive operations but found negligible improvements in Chrome likely due to Chrome’s aggressive optimizations of such expensive operations.
- Praveena:
JMP Live
- Aurora:
- 19.5: Minor bug fixing. Third party package updates.
- 20.0: Add support for ID role in CCB and PS platform triage. Consolidate some control chart audit logging. Remove 'after' from audit log before / after / changed. Align user display name rules with space display name rules. Convert some code to TypeScript. Fix a dependency cycle.
- Other: Started playing around with GitHub CoPilot.
Stat Documentation
- Michael C: Participated in panel interviews for Clay’s open position. Worked with my team to start converting the equations in the documentation into LaTeX format, in preparation for use in the converted doc files. Submitted goals for 2026 to Workday.
Stat Testing
- Tonya: Testing Process Screening new features Show Last N and Time Span. Testing changes to proportion charts in Process Screening. Rewriting Process Screening unit tests due to changes in how control limits are drawn. Bug verification.
Life Sciences Updates
- Richard: Finishing up a subgroup forest plot report. Draft a Funnel Plot add-in that handles continuous, binary, and count outcomes, with possible adjustment for follow up for binary outcomes.
Note from Shannon
Now that we’ve reached The Pollening, you might be interested in this website for monitoring pollen in Raleigh. Not surprisingly, right now tree pollen is extremely high, but grass and weed pollens are actually quite low at this time of the spring! The yellow clouds of pine pollen may be the most visible pollen this time of year. However, since pine pollen grains are so large, they’re less likely to be inhaled into the lungs and less likely to cause allergies than smaller grains of tree pollen from oak, maple, and birch.
Hope you all have a great weekend! Maybe we’ll get some rain to wash some of the yellow stuff away…
