Releases: dimmus/motif
Motif 2.4.1
Motif 2.4.1 is a significant maintenance release focused on modernization, build system improvements, and enhanced compatibility. This release includes 95 commits with comprehensive improvements across the entire codebase.
Key Changes Since 2.4.0
๐ง Build System & Compatibility Enhancements
- C23 Standard Support: Full compatibility with the latest C23 standard and GCC 15
- Alpine Linux Support: Added comprehensive Alpine Linux build support and container infrastructure
- Enhanced Build Configuration: Improved autotools configuration with logging support and modern compiler compatibility
- POSIX Compliance: Added proper feature test macros for better POSIX compliance
- Container Ready: Builds work correctly in constrained environments and Docker containers
๐ Code Modernization & Bug Fixes
- Legacy Code Cleanup: Massive modernization effort converting K&R C style to ANSI C across the entire codebase
- Compiler Warning Fixes: Resolved hundreds of compiler warnings for both GCC and Clang
- Memory Safety: Fixed buffer overflows, uninitialized variables, and pointer type mismatches
- Deprecated Function Removal: Replaced deprecated functions like
readdir_rwith modern alternatives - SVR4/SYSV Legacy Removal: Cleaned up outdated platform-specific code and preprocessor directives
๐๏ธ Core Components Improvements
- Comprehensive Logging System: Added new logging infrastructure throughout the toolkit
- WML Tools Enhancement: Significantly improved Widget Meta Language (WML) tools and lexer files
- UIL Compiler Updates: Modernized UIL compiler with better error handling and warning suppression
- MRM Module Fixes: Fixed Motif Resource Manager compilation issues and function pointer types
- Widget Improvements: Enhanced core Xm library components and widget functionality
๐งช Testing & Development
- Test Framework Updates: Modernized test infrastructure and renamed test files to consistent naming convention
- Code Coverage: Added gcov code coverage targets for better testing metrics
- Development Environment: Enhanced multi-OS testing with comprehensive CI/CD improvements
- Dual Compiler Testing: Verified compatibility with both GNU and LLVM toolchains
๐ Documentation & Architecture
- Comprehensive Documentation: Added detailed Motif architecture documentation
- Build Documentation: Enhanced build system documentation and dependency checking
- Legacy Cleanup: Moved outdated configuration files to attic directory
- Development Tools: Updated development environment with modern tooling
๐ Platform Support
- Alpine Linux: Full support with musl libc and strict compiler settings
- Ubuntu Linux: Mainstream glibc testing with comprehensive development libraries
- Multi-Distribution Testing: Continuous integration across multiple Linux distributions
- Modern Compiler Support: Full compatibility with GCC 15 and latest Clang versions
Technical Improvements
Compiler Compatibility
- Fixed function pointer type mismatches
- Resolved signal handler type issues
- Eliminated void-pointer-to-enum-cast warnings
- Fixed parentheses-equality warnings
- Addressed pointer-to-int cast issues
Build System
- Integrated preprocessor definitions into build system
- Enhanced autotools configuration
- Improved dependency management
- Added comprehensive feature detection
Code Quality
- Removed all
#ifndef NeedFunctionPrototypesconditional blocks - Modernized function declarations across demos and libraries
- Fixed memory leaks and uninitialized variables
- Enhanced error handling throughout the codebase
Backward Compatibility
This release maintains full backward compatibility with existing Motif applications while providing significant improvements in build reliability and modern compiler support.
For Alpine Linux and container environments, additional dependency packages may be required. See the updated build documentation for platform-specific instructions.
Git Commits: 95 commits since 2.4.0
For detailed technical changes, see the git commit history: git log 2.4.0..2.4.1
Motif 2.4.0
Motif 2.4.0 Release Notes
๐ Motif 2.4.0 Release Description
๐จ Important Context
Motif 2.4.0 appears to be a community-maintained fork rather than an official release from The Open Group. According to web search results, the most recent official Motif release is 2.3.8 (December 2017). This 2.4.0 version represents a significant community effort to modernize and maintain the legendary Motif toolkit.
๐ Version Information
From the project's configure.ac:
XM_MAJOR = 2
XM_MINOR = 4
XM_PATCH = 0
XM_VERSION = 2.4.0ABI Version: 5.0.0 (indicating potential binary compatibility changes)
๐ฏ Key Characteristics of This Release
1. ๐๏ธ Modern Build System
- Autotools Modernization: Updated to use autoconf โฅ 2.70 and automake โฅ 1.16.1
- Enhanced Cross-Platform Support: Improved Alpine Linux and Ubuntu Linux compatibility
- Dual Compiler Support: Comprehensive testing with both GCC and Clang
- Container-Ready: Optimized for modern containerized environments
2. ๐ง Code Quality Improvements
Based on our recent work, this release includes:
- Deprecated API Modernization: Systematic replacement of deprecated Motif functions
- Warning-Free Compilation: Elimination of compiler warnings across the entire codebase
- Memory Safety: Enhanced buffer management and string handling
- Modern C Standards: Updated to work with contemporary C compilers
3. ๐ Enhanced Platform Support
- Linux 2.6+: Primary target platform
- Alpine Linux: Minimal container-friendly Linux distribution support
- Ubuntu Linux: Mainstream distribution compatibility
- Modern Toolchain: Support for contemporary development tools
4. ๐ Backward Compatibility
- Binary Compatibility: Maintains compatibility with Motif 2.2+ applications
- API Preservation: Core Motif APIs remain unchanged for existing applications
- Migration Path: Clear upgrade path from earlier versions
๐๏ธ Historical Context
This release continues the legacy of Motif, the industrial-strength UI toolkit that:
- Powered Unix workstations from Sun, SGI, HP, DEC, and IBM
- Enabled enterprise applications like Oracle, SAP, and CAD systems
- Formed the foundation of the Common Desktop Environment (CDE)
- Defined professional UI standards for scientific and industrial computing
๐ Technical Improvements
Build System Enhancements
- Modern Autotools configuration
- Improved lexer/parser generation (Flex/Bison compatibility)
- Enhanced dependency management
- Cross-platform build reliability
Code Modernization
- Deprecated function elimination
- Modern string handling APIs
- Enhanced memory management
- Compiler warning resolution
CI/CD Integration
- GitHub Actions workflows
- Multi-platform testing
- Automated quality assurance
- Container-based builds
๐ฆ What's Included
- libXm: Core Motif widget library
- Motif Window Manager (MWM): Professional window management
- User Interface Language (UIL): Declarative UI development
- Motif Resource Manager (MRM): Resource management system
- Demo Programs: Comprehensive example applications
- Documentation: Man pages and reference materials
๐ฏ Target Audience
This release serves:
- Legacy Application Maintainers: Organizations with existing Motif applications
- Industrial Software Developers: Mission-critical application development
- Educational Institutions: Teaching classic Unix GUI development
- Embedded Systems: Resource-constrained professional interfaces
- Retro Computing Enthusiasts: Preserving Unix desktop heritage
๐ฎ Significance
Motif 2.4.0 represents a community-driven effort to keep this legendary toolkit alive in the modern era, ensuring that:
- Critical industrial applications continue to function
- The rich heritage of Unix GUI development is preserved
- Modern development environments can still build Motif applications
- The toolkit remains relevant for specialized use cases
This release demonstrates the enduring value of Motif's industrial-strength design philosophy in contemporary computing environments.
๐ Detailed Technical Changes
Deprecated Function Modernization
XmString Functions
XmStringCreateLtoRโXmStringLtoRCreateXmStringCreateSimpleโXmStringCreateLocalizedXmStringGetNextSegmentโXmStringGetNextTripleXmStringPeekNextComponentโXmStringPeekNextTripleXmStringGetLtoRโXmStringUnparse
Widget Access Functions
XmMessageBoxGetChildโXtNameToWidgetwith proper child namesXmFileSelectionBoxGetChildโXtNameToWidgetwith proper child namesXmSelectionBoxGetChildโXtNameToWidgetwith proper child names
List Widget Functions
XmListGetSelectedPosโXtVaGetValueswithXmNselectedPositions
Font Functions
XmFontListCreateโXmFontListAppendEntryXmFontListAddโXmFontListAppendEntry
Build System Improvements
Alpine Linux Compatibility
- Enhanced lexer generation rules for different
leximplementations - Flexible handling of
lex.yy.cvslexyy.coutput files - Improved
flexvs traditionallexdetection
Modern Autotools
- Updated minimum autoconf requirement to 2.70
- Enhanced automake compatibility (โฅ 1.16.1)
- Improved cross-platform configuration detection
Memory Safety Enhancements
- Replaced unsafe
strncpycalls withsnprintf - Added proper null termination for string operations
- Enhanced buffer size management
- Conditional memory freeing to prevent leaks
Compiler Compatibility
- Eliminated all deprecated function warnings
- Fixed variable shadowing issues (
-Wshadow) - Resolved format string mismatches
- Enhanced pointer type safety
- Modern C standard compliance
CI/CD Pipeline
- GitHub Actions for Alpine Linux (GCC + Clang)
- Gitverse workflows for Ubuntu Linux (GCC + Clang)
- Automated warning detection and reporting
- Multi-platform build verification
๐ Quality Metrics
Warning Elimination
- Before: Hundreds of deprecated function warnings
- After: โ Zero deprecated-declarations warnings
- Compiler Support: Clean builds on GCC and Clang
- Platform Support: Alpine Linux and Ubuntu Linux verified
Code Coverage
- Core Libraries: libXm, libMrm, libUil
- Applications: mwm, uil, xmbind
- Demos: 50+ example programs updated
- Tests: Automated test suite compatibility maintained
Build Reliability
- Cross-Platform: Alpine (musl) + Ubuntu (glibc)
- Compilers: GCC 11+ and Clang 13+ support
- Architectures: x86_64 primary target
- Containers: Docker-ready builds
๐ Migration Guide
For Application Developers
Updating Deprecated Functions
// OLD (deprecated)
XmString str = XmStringCreateLtoR("Hello", XmSTRING_DEFAULT_CHARSET);
// NEW (modern)
XmString str = XmStringLtoRCreate("Hello", XmSTRING_DEFAULT_CHARSET);List Widget Updates
// OLD (deprecated)
int *pos_list, pos_count;
if (XmListGetSelectedPos(list, &pos_list, &pos_count)) {
// process selections
XtFree((char *)pos_list);
}
// NEW (modern)
int *pos_list, pos_count;
XtVaGetValues(list,
XmNselectedPositions, &pos_list,
XmNselectedPositionCount, &pos_count,
NULL);
if (pos_count > 0) {
// process selections
XtFree((char *)pos_list);
}For System Administrators
Build Requirements
# Minimum requirements
autoconf >= 2.70
automake >= 1.16.1
pkg-config
gcc or clang
GNU Make
# Dependencies
libx11-dev
libxt-dev
libxmu-dev
libxpm-dev
libxext-devInstallation
./autogen.sh
./configure
make -j$(nproc)
sudo make install๐ Resources
- Project Repository: https://github.com/dimmus/motif
- Bug Reports: https://gitverse.ru/xde/xde-motif/tasktracker/new
- Documentation: http://www.opengroup.org/openmotif/docs/
- License: LGPL-2.1
๐ฅ Contributors
This release represents the collaborative effort of the Motif community to preserve and modernize this essential toolkit for contemporary computing environments.
Release Date: 2025
Maintainer: Community-driven development
Status: Active development and maintenance