Skip to content

Releases: dimmus/motif

Motif 2.4.1

03 Sep 17:56

Choose a tag to compare

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_r with 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 NeedFunctionPrototypes conditional 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

23 Aug 16:35
ef277cc

Choose a tag to compare

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.0

ABI 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 โ†’ XmStringLtoRCreate
  • XmStringCreateSimple โ†’ XmStringCreateLocalized
  • XmStringGetNextSegment โ†’ XmStringGetNextTriple
  • XmStringPeekNextComponent โ†’ XmStringPeekNextTriple
  • XmStringGetLtoR โ†’ XmStringUnparse

Widget Access Functions

  • XmMessageBoxGetChild โ†’ XtNameToWidget with proper child names
  • XmFileSelectionBoxGetChild โ†’ XtNameToWidget with proper child names
  • XmSelectionBoxGetChild โ†’ XtNameToWidget with proper child names

List Widget Functions

  • XmListGetSelectedPos โ†’ XtVaGetValues with XmNselectedPositions

Font Functions

  • XmFontListCreate โ†’ XmFontListAppendEntry
  • XmFontListAdd โ†’ XmFontListAppendEntry

Build System Improvements

Alpine Linux Compatibility

  • Enhanced lexer generation rules for different lex implementations
  • Flexible handling of lex.yy.c vs lexyy.c output files
  • Improved flex vs traditional lex detection

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 strncpy calls with snprintf
  • 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-dev

Installation

./autogen.sh
./configure
make -j$(nproc)
sudo make install

๐Ÿ”— Resources

๐Ÿ‘ฅ 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