В январе 2013 года Roger Brown опубликовал под LGPL свои разработки по клонированию закрытой библиотеки IBM SOMobjects.
О том, что такое SOM, можно прочитать на русском в моей статье. Некоторое, возможно, не во всём объективное сравнение с другими объектными системами (COM, XPCOM, UNO, GObject, WinRT) можно найти в моём обзоре.
SOM главным образом ассоциируется с OS/2, где это была основная объектная система, и OpenDoc, почившим в бозе конкурентом OLE. Однако SOM — это нечто более значительное, чем просто объектная система OS/2, и спустя много лет периодически выходят журналистские статьи и петиции с просьбами к IBM опубликовать исходные коды если не всей OS/2, то хотя бы SOM.
Лучшее из OS/2 на платформе Linux
Будет ли результат похож на OS/2? Ни в коем случае! Но зато разработчики Linux получат отличную объектно-ориентированную инфраструктуру, способную сделать настольный вариант этой ОС гораздо более привлекательным для независимых поставщиков ПО. В результате должна появиться масса новых приложений, которые, в свою очередь, стимулируют интерес пользователей настольных систем к Linux.
Теперь эта мечта стала ближе.
Объектная система, такая как SOM, может быть привлекательна для разработчиков на малопопулярных или новых языках. В отсутствие подобной системы разработчики на разных языках делают привязки независимо друг от друга, и работа одних не помогает другим. Кроме того, уровень C ABI, на котором обычно определено взаимодействие, оставляет множество неопределённостей, которые делают сложной автоматическую генерацию. Например, по опыту автора с libyaml, даже в таких пустяках, как преобразование из string в const char *, могут быть фатальные особенности: в одних местах недопустим указатель на \0, в других местах недопустим NULL. Отсутствие общего стандарта приводит к тому, что интересные идеи приходится портить, нацеливая компиляторы на платформу, где такой общий стандарт есть: JVM или Mono.
В случае с SOM одни люди могли бы разрабатывать emitters для компилируемых языков программирования (как в FPC/2), либо обёртки somDispatch() для скриптовых языков (как в Object REXX), а другие люди могли бы вместо привязок только для своего языка делать фасады для SOM, которыми могли бы пользоваться все остальные.
Если SOM наберёт популярность, можно будет ожидать свои аналоги Objective-C, C++/CX, Cyclone или Vala для SOM. У IBM такой эксперимент (Direct2SOM) остался на стадии беты, когда работы над библиотекой были прекращены.