Should IBM's SOM/DSOM Be Open Sourced?
Esther Schindler sends a note about two journalists for very different publications (herself one of them) urging IBM to open-source, not all of OS/2 — they've consistently refused to do that — but instead one of its most powerful features: SOM, the System Object Model. Steven J. Vaughan-Nichols writes at desktoplinux.com, "IBM, I'm told by developers who should know, still has all of SOM's source code and it all belongs to IBM. It's because IBM doesn't have all the code for OS/2 and some of it belongs to Microsoft that IBM open-sourcing OS/2 has proven to be a futile hope." And Esther Schindler takes the developer angle in a blog post at CIO.com: "Could the open-source community use a library packaging technology that enables languages to share class libraries regardless of the language an application was written in? I dare say it could, especially since the code to accomplish that goal was written (and shelved) more than ten years ago. All it takes to make that code available is to ask IBM to release SOM and DSOM as open-source." What are the business issues that would convince IBM to assent?
While SOM is very powerful and would of made a great addition to the Linux desktop I think it may be to late now as the common Linux desktop environments are quite entrenched. If only IBM had done this 10 years ago Linux could of had something to set itself apart.
https://en.wikipedia.org/wiki/Inverted_totalitarianism
If the great innovation offered by SOM is basically a design pattern or interface technique, do we really need IBM's source code? It seems to me that the great thing about SOM is the idea of how something is done, and that we could pretty quickly write our own implementation of that idea. No?
Srsly, folks. This is IBM we're talking about. They aren't foolish or desperate enough to give up complete control of one of the more useful features of an OS that they've already declined to open up. And MS is involved here... puh-lease. Not gonna happen. Give it up.
With spending like this, exactly what are "conservatives" conserving?
IBM has been pretty good at taking sucessful closed source technologies and open sourcing them (think eclipse, webspere community ed, jikes and all the patents they've made available to the os community). I think IBM's genius has been in fostering communities to ensure that the technologies are well supported.
That said, SOM & DSOM are old tech from the dinosaur mainframe days. With so many distributed apps using more flexible interoperating technologies (SOAP, XMP-RPC etc) I don't really think open sourcing D/SOM will make that big of a difference to most new application developers.
fsckr.com - go fusk yourself!
One of the advantages of SOM is that it allows a closed source environment to be extended. Don't like the file dialog, subclass it with a better one. Or a recent example, need transparent png bolted on your 10 year old OS, well create a few new classes and use Cairo to display them. Suddenly you have modern transparent icons, transparent widgets on the desktop etc.
Unluckily with GPL you can get into issues of whether closed source or just incompatible licensed libraries can be added. One of the ideas behind SOM/DSOM was that anyone could write a DLL and extend the WPS. Now it seems that in free software land you often have to worry about incompatible licenses.
If IBM ever does open source SOM/DSOM I hope it is with something liberal like the LGPL. Don't have to think about issues with linking and the important source stays open.
https://en.wikipedia.org/wiki/Inverted_totalitarianism
Its called .NET or Mono
I know this off-topic, but I find it hard to read anything by the author after the recent comments she posted in response to this article: http://comments.cio.com/node/176250?page=4
Disclaimer: the issue with the posts was the level of professionalism, not necessarily the stances on PHP.
Linux Desktop environment use bonobo implementing some of its services to achieve reusability and that too is not universal. (Gnome uses it). And, though not often, messed up interfaces could prove to be counterproductive.
IMHO, a good disciplined approach could produce solid architecture, providing robust environment. Though unrelated here Apache mesmerizes me, how it could achieve many concepts of OO.
hilarious
The good things about OS/2 I described before is blessed by the wonderful SOM. I really can't tell you all the good things about SOM here, but during the time I wrote apps at IBM in C Set, SOM really save us a lot of time and efforts.
What it would take is a good, solid distro to pick this up, and start porting major apps to use it, and writing code to go with it.
Oh, wait, they would need the code first. Never mind.
Ignore IBM and OS/2 and everything, just for a second, and review this hypothetical situation on its own:
A Big Computer Giant (BCG) purports to be very Open Source friendly. They defend OSS products and licenses, even using their own lawyers, and make a lot of money using/supporting OSS, in their own hardware, and in huge consulting contracts. It turns out they have this collection of source code that they aren't really using anymore, and they have complete rights to at least part of it. Let's just say they only have 2 real options when archiving the source code they own the rights to:
1. Keep it locked in some internal media or shelf, never to see the light of day, unless an internal developer finds it interesting and digs it up for an internal-only project. The internal project may never see the light of day either.
2. Put it on the Internet, and Open Source License it, preferably with an existing OSI license. Not only could the online repository be considered the source "archive", but it also leaves the possibility of growing a redundant, living archive. The source could then be provided by various OSS repositories and mirror hosts.
I know I'm preaching to the choir here, but shouldn't #2 always be the default, or at least the first option considered? Even if you're not an OSS nut (like me), you have to admit the hypothetical company looks pretty darn hypocritical if they don't choose #2, when given the choice, early and often.
So am I using a hypothetical situation to say that IBM (BCG) is a big hypocrite if they DON'T release and apply an OSI License to SOM/DSOM source, ASAP? Why yes I am! How could you tell?...
IBM may be the best friend that the open source community has, but they are still interested in IBM's interests. A case in point is IBM's Rational Clearcase. If you look at the supported systems you will see only commercial Linux offerings. Redhat, Novell, and SUSE. Notably missing are CentOS, Ubuntu, and other free Linux in the x86/x86_64 platforms. If IBM is so pro-open source, why are they not supporting FOSS Linux on thier commercial packages?
All should be open source. Source should never be hidden. It violates all ethos, it violates all truth, it violates my first GPL right to see the code!
In what way is Red Hat not FOSS? All the cod in the Red Hat distro - that is why Centos can exist. I think Suse is all FOSS as well.
SOM was a joke. Lots and lots of hyperbole about how this was so much better than the way Windows desktop works, but SOM was SOMe fragile crap. If something broke, and things ALWAYS broke, links would be dead and there was nothing you could do but hope running a third-party randy-dandy object fixer thing would get you going again. It was a complex nightmare to use even when it was working. It WAS OS/2 after all. It made RMB (right clicks), context menus, and icon links, nothing less than brain surgery. How and why this was considered a great white hope is beyond my brain to figure. I dumped OS/2 i 1999, after nearly a decade. Three years too late.
So would closing down the chair industry.
Why is everyone raving about SOM? Admittedly I never used OS/2, especially never coded for it, but from what I've read it seems like it does lots of the same things as COM. Why is SOM such a hot topic? People are saying that it could make Linux an attractive option for programmers if open-sourced and ported, doesn't DBus fill that niche? (on that note, is comparing SOM and DBus an apples-oranges comparison?)
So why do programmers care about SOM?
ROMANES EUNT DOMUS
It's not hypocritical because they didn't tell other people that they must open source everything. Also, you are somewhat familiar with the logistics involved by projects, archives, etc. You might consider that open sourcing is far from a 'default' choice, there are plenty of considerations:
1. it takes time to look over something to make it ready to see the light of day. You have a reputation to uphold.
2. you might want to make money off the software, now or in the future. as much as i love and support and contribute to open source, there's nothing wrong with that.
3. thanks to certain lawsuits, there is some perception in the industry that open source is risky. someone might sue you because you use linux. So, it takes work (lawyer time) to make sure code is clean
4. open source needs a community to really thrive. interested contributors, maintainers, etc. you would really like to see it 'picked up' by someone if it is going to be thrown over the wall
5. i don't think the safety of archiving is a major concern. probably more true for small companies that are not as likely to be around for the long term
demanding (not asking) that something on someone else's shelf be released is not really going to give co's a warm feeling about putting anything out there. you might reconsider your statement in terms of damage it could cause to open source...
just some things to consider.
According to this Sun has something similiar
I believe OSS abandoned COBRA as well.
The following quote supports the parent's point The most notable difference between SOM and COM is support for inheritance -- COM does not have any. It might seem odd that Microsoft produced an object library system that could not support one of the most fundamental concepts of OO programming, but they did have their reasons. The main issue is that it is difficult to know where a base class exists in a system where libraries are loaded in potentially random order. COM demands that the programmer specify the exact base class at compile time, making it impossible to insert other derived classes in the middle (at least in other COM libraries).
SOM instead uses a simple algorithm, looking for potential base classes by following the inheritance tree and stopping at the first one that matches; this is the basic idea behind inheritance in most cases. The downside to this approach is that it is possible that new versions of this base class may no longer work even if the API remains the same. This possibility exists in any program, not only those using a shared library, but problem can become very difficult to track down if it exists in someone else's code. In SOM only solution is extensive testing of new versions of libraries, which is not always easy.
I would ask the question of what SOM/DSOM would bring to the party, when much of that technology went into making CORBA. CORBA is here now, has multiple implementations, both commercial and open (source and beer).
The only thing I can point to is GUI components, but those were either tied to a specific implementation (OS/2) or to an additional frameword (OpenDoc) and I am not sure they would be of much value.
What do you know I wrote a novel
SOM implements a subset of the CORBA specification. Other technologies implement CORBA. Some already are open source (MICO). So... consider porting to another ORB.
And for the person who mentioned Apple... Apple implemented a subset of SOM specifically for OpenDoc. Though highly cool at the time, it was too castrated to be useful and has been surpased by other technologies for robustness (like J2SE/J2EE). Don't forget cool stuff like Spring... Lots has changed in 10 years.
/\/\icro/\/\uncher
Linux already has more more powerful D-BUS system (http://en.wikipedia.org/wiki/DBUS). It's already a base for PolicyKit, HAL daemons, soon it will be used in Upstart and so on.
It's MUCH MUCH easier to use than COM or SOM. And I still remember working with OpenDoc, so I don't really share good feelings toward SOM.
Not ever having used SOM I can't compare it directly but it seems to me that the basic idea is to have an object model with a hard to break ABI (i.e. you can add methods without breaking it) and interoperability with other languages.
Apple has distilled various Objective-C bridging efforts into a common bridge library that is now used by PyObjC (which predates the Apple/NeXT merger) and RubyCocoa and is slated for use with .NET. By virtue of being able to mix Objective-C into a C or C++ file (more or less simply by changing the extension from c to m or from cc/cpp to mm) you instantly get interoperability with C and C++. If you absolutely need to call Objective-C from plain C or C++ you can use the underlying objc_msgSend call.
Both the PyObjC and RubyCocoa bridges allow you to implement Objective-C classes in Python or Ruby so as long as you can stomach writing your interface declarations in Objective-C you can get most of the way there to the holy grail of cross-language object interoperability.
If you think about it, it's not much different from any other object model it's just that Objective-C happens to have a direct implementation in Objective-C whereas COM and SOM don't. The biggest downside of course is that you do need an Objective-C compiler and the only one is GNU. Then again, GNU is a decent enough compiler and runs on almost all platforms so it's not a huge deal. If you have really performance-critical code paths you can always write them in plain C with your vendor compiler and link to them.
Some of the ideas may survive in new solutions, but it can be a really bad idea to take this out of concept and trying to graft it upon a different platform. The amount of work involved for that operation may exceed the amount of work to re-create the functionality without source.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
there are already a lot of object models out there.
There's various incarnations of CORBA on linux, COM on windows, XPCOM which is used for firefox components, DBUS on Gnome and now KDE.
Component software is a Good Thing(tm), but all the various implementations essentially do the same thing, which is to allow a cross language interface to be specified in a way that doesn't require wrapper libraries to be written. Also, it is common to include some kind of remote procedure call specification.
>>In over a decade and a half, no one (but maybe Apple) came close.
Funny story, Apple uses COM.
Actually, it would be more accurate to say that apple doesn't have a component model (you have to use wrapper libraries or objective-c++). In a few instances where this is a pain (plug-ins) they just use com.
http://www.macdevcenter.com/pub/a/mac/2004/04/16/com_osx.html
It should be noted that Apple's com implementation is *very* basic and not really meant for developing cross platform COM libraries like the article suggests.
Is SOM/DSOM really that unique?
Rather than trying to resurrect a 10 year old source base, and to re-create a community around it, would it not be preferable to join an existing, related, project, and expand/improve it in order to cover SOM's unique features?
SOM/DSOM being 10 years old, I suspect that its support for Java, Python, PHP, and Ruby isn't very mature (ahem).
For instance, I have heard good things about this multi-language interface library (open-source project lead by facebook):
http://developers.facebook.com/thrift/
Would someone know how it compares to SOM/DSOM ?
Kidding aside, you make plenty of good points. Those points are not necessarily related to my statements, though.
I didn't say that the two forms of archiving (private vs. public) don't pose any difficulty, or that they are even of equal difficulty. I was just bringing up the fact that both forms of "archiving" are *available*, in this case and many others. Each method choice results in a different potential set of public opinions.
Calling someone a "hypocrite", and "demanding" something from them, are two very separate acts. One is a matter of stating opinion, and the other of calling to action. If you choose to equate them, that just shows a personal bias against the word "hypocrite", more than anything.
Because in real world companies exist to make money, not please OSS crowd.
- Arwen, I'm your father, Agent Smith.
- Well, you're just Smith, but my father is Aerosmith!
Releasing internal code as open-source has many costs associated with it, from software packaging issues to legal ones. Unless it's clearly a case where that code has some value to a larger community, paying those "free the code" costs may have no payback for the company. It's completely reasonable to say that the default position is "do nothing", which also costs nothing, and only consider the costs of releasing as open-source when there's a demonstrated need or desire to use the code outside of the company.
To think of it another way: if you were IBM, would you rather spend a hypothetical $1M cleaning up crufty old code and having your lawyers review it so you can release it, or spend the same amount of resources improving/extended existing open-source projects? Choosing to ignore your old code just because you're friendly to the open source community isn't necessarily hypocrisy, sometimes it's the only rational business decision.
I look forward to hearing more about IBM's "rational business decision" in any case. I find it funny that so many people are defending the decision before it's even made public. The term "rational" requires factual substantiation, not hyperbole. The term "hypocrite" has no such requirement.
And how many %% of OSS crowd really care about OS/2? I don't care, for instance. It's just small %% who remembers what OSS is and wants its source. You can't please everybody with finite resources.
As another poster in this sub-thread said, open sourcing any code isn't free at all.
- Arwen, I'm your father, Agent Smith.
- Well, you're just Smith, but my father is Aerosmith!
"Hello we are IBM. We love Open Source! We want everybody else to Open Source their software, but we like to stay closed source." That doesn't make them believable now is it?
Here be signatures
As far as I'm aware D-Bus is a message passing bus for interprocess communication... not a object binding library.
I think the main difference, in terms of approach, is that D-Bus can't communicate with libraries, but with running applications or daemons. Am I right?
Remember when Netscape put Communicator source on the internet, and everyone just whined how it didn't compile and how useless it was?
And that's when Netscape was the most popular browser, not some 12 year old abandonware desktop middleware that nobody used in the first place.
I don't think anyone active in the OSS desktop community wants a bunch of old unpopular OS2 crap. If anything, they have too many duplicate component models and they need to start standardizing, not add a new one.
Business. Numbers. Money. People. Computer World.
did any of you write os/2? no... did any of you pay for os/2's development? no... so who do any of you think you are to demand the release of its source?
rather than demanding source code for closed applications, go outside, and realise there is a real world where people couldnt care less about things like this. there are more important things than wether something that has been long since dead is forced to be open source or not. just let it go.
portfolio
Ray gwinns SIO comm drivers, OS2 Asteriods, WebExplorer, full page OS2 Warp ads in Time Magazine, HPFS, accidently rebooting the computer by hitting control-alt-delete because you were way too used to that key combination to login to Windows NT 3.51.
Oh and OS/2 Bot on IRC!! I wonder if OS/2 bot is still alive????
Those were the days... two years ago I swear I saw a dialouge on an ATM at a bank that looked like it came from OS/2's PMShell.
And all the while IBM had AIX which was(is?) lightyears ahead of all this windows and OS/2 crap... I don't get it.
Not that that's a bad thing. She was sort of like a double-, or triple-, agent. She's talk up OS/2 but at the same time use Windows, and then say how much better OS/2 was, but that Windows was better because it was Windows.
They would have to check the code. Maybe the responsible developers have left the company, or maybe they are on an active project. It would take time to assemble the original team (or what is left of it) and ask them: Do we have the exclusive rights to this code? And if they were unsure they would loose even more time trying to find out. Time is money. If those people get decent wages it could be a lot of money. If they were working on important projects IBM was to earn a lot of money for they would loose that too. If it would be free for them to release code I suppose a lot of companies would do that. Simply because they don't use it anymore.
If Linux really wants language neutral interface bindings, it already has it. There are numerous CORBA implementations, idl compilers and so on. For example GNOME offers ORBit (a Corba implementation) for embedding UI components via Bonobo. Bonbo appears deprecated and is being replaced by another language neutral offering called D-Bus. KDE also appears to be moving from DCOP which is yet another IPC model to D-Bus. I don't know what either platform's plans are for components since D-Bus is for IPC, not embedding components, maybe Bonobo and KParts will live on for a bit yet. Firefox is also built on top of a language neutral object model - XPCOM is similar to MS COM but cross-platform and has bindings for several languages.
I do think OS/2 should get something like WINE - an emulator / runtime that lets OS/2 apps run on Linux. Part of that could of course be SOM & WPS support. I'm less sure why Linux would need native SOM since there are already so many choices. Another one ported from 90s codebase isn't going to offer much.
But with COM you could use aggregation to resemble inheritance with the additional benefit of more control over the individual functions etc...
If only someone on slashdot could filter out the above stupidity. That's the third article I've read this one. It contributes absolutely nothing to the topic being discussed.
Anonymous coward: SHUT UP!
XML is like violence. If it doesn't solve the problem, use more.
As other pointed out: there are enough CORBA implementations out there. The only advantage of SOM was that ist offered igh performance in an non distributed environment while beeing compatible with it's distributed peer DSOM. But even that is not so cool any more.
What was realy cool was the only real application build with the SOM: The Workplace Shell. Neither KDE nor GNOME can to what the WPS could do.
I thought Amiga already did this in OS 3.0 (back in 1992) with DataTypes. Anyone could write a sub-class for the existing DataTypes (objects) as long as they were given SDKs. I don't know how this compares with the IBM's version but you could write DataTypes in any languages.
Yes, SOM/DSOM had some good points. However, it was also pretty horribly complex. Especially to implement, and even in many ways to use. As a result, almost all other approaches have gone for something simpler rather than trying to recreate it. One of the better ones IMO was NeXT's Portable Distributed Objects (PDO), which was so dirt-simple to use that NeXT engineers developed an infamous reputation in the 90s for writing letters to the editor in response to CORBA articles showing how to do the same thing in PDO in some ludicrously small fraction of the code. It was also incredibly fast. GNUstep has a reimplementation of PDO, though I don't think it's broken out into a nicely reusable library (I could be wrong).
Basically: weighing all the pros and cons, nobody else reached the conclusion that writing their own version of SOM/DSOM was the best option available, so they all did different things. I don't know if this was necessarily the right conclusion, but it's hardly that SOM/DSOM is some magical bit of code that nobody else could've reimplemented had they wanted to.
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Sitting here thinking on it, perhaps what IBM should do is analyze all bits of OS/2 to see what they do own. This is not just an exercise. One of the things I know IBM co-owns with Microsoft is the kernel, for example. Once they know what they ownint he free and clear, remove all bits that they do not own, and begin replacing them with pieces of Linux, writing layers to give them a new, IBM distribution. Call it Linux/2, or Linux OS/3. Compatibility with legacy OS/2 apps, features like SOM, a window-manager based on PM, and Linux brings with it Windows compatibility from WINE. Would be a nightmare scenario for Microsoft.
Karma Whoring for Fun and Profit.
Frankly, I don't care how it is achieved, but I am really getting tired of having different UIs to perform the simplest of tasks, particularly when newer applications seem to be defaulting to the GTK2 file dialog more often than not. That dialog is irritating enough on its own, but not having it be identical, from one application to another, really starts to get under one's skin.
If SOM is the best method to do this, then bring it on. It seems to me that, in 2008, there could at least be something which developers are attempting to use.
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
I was under the impression that IBM has returned the favour several times already. They do significantly contribute to OSS and I thought they were a model example for OSS/commercial interaction. I dont think they have to open source every piece of software they've ever written at the demand of the community, especially as it is pointed out, it will cost them money. Another thing, if this thing is so amazing and so needed, why the hell in 15 years or so has no open source project written something similar. If IBM did it, the community could do it. The fact they havnt means that not enough people care.
I did two contracts with IBM in the early 90's, one on the OS/2 2.1 change team. In both I "got" to deal with SOM and its implementation source code. It's a giant nasty C macro & function pointer hack. OS/2's Workplace Shell was very cool but the underlying implementation was pretty nasty stuff. One of my fixes was dealing with how slow it was populating icons in folders. SOM is a good example of the "Prototry" anti-pattern where one does an initial implementation of a cool trick then ends up shipping & extending it rather than ever bothering to architect it right in the first place. I can understand why IBM doesn't want this source out in public. FWIW - I also had to deal with some of the Microsoft source code, especially device driver stuff. Was the worse C code I've ever seen in production...
If you like SOM & Workplace Shell features you'll find it far easier to implement on top of Qt/KDE or wxWidgets or a smart functional integration of some Boost library features & a GUI than you'd ever have hopes of getting that code to work with anything modern or useful today. I loved OS/2. Borland had a Beautiful C++ compiler for it and CSet/2 was one of the better standards compliant compilers at the time as well. They're all bit rot by now though. Appreciate the memories but let this one die.
Yeah, why does it matter anymore which language some binary was written in, in order to link it to another binary library? Everything uses a stack of pointers or values to pass arguments, and a symbol table to resolve references to instructions and data external to the binary package stating the reference. That seems to offer a language-neutral resolution of those references across binary packages, regardless of which language was used to generate them.
Sure, there could be some differences, like argument ordering on a stack, and even datatype conversion between them (eg. Pascal "count+data" vs C "NULL terminated" strings), even byte endianness. But those are deterministic differences that could be directly mapped to one another in a wrapper (even at the expense of some performance). And having the sourcecode for both could allow analysis that reverse engineers any incompatibility at link time to wrap or rewrite it.
Is there really no hope for reconciling the binaries for inter-language linking without extra programmer intervention?
--
make install -not war
Everything should be open sourced
nt
Wrong knid of free. RHEL5 asks for an activation key, which I agree can be skipped, but ultimately if you want it patched and to get useful features you want it activated. Which is all besides the point. If IBM is such a friend to FOSS, they'd support more than just commercial (backed by a business) flavors of Linux.
Since your BCG fed the lawyers, wouldn't that count as participation?
Online petition http://www.petitiononline.com/sombsom/
No, IBM loves Windows. Even when presented with customers begging for a Linux based solution, IBM Global Services pumps Windows... into the orifices... of the customer. IBM is a big company, made up of many parts that don't much talk to each other, and which are not well coordinated from the top. Part of IBM spends a lot of money making Linux advertisements and running them on television. Another part of the company gets a little money to build some Linux developer tools. The rest of the company ignores Linux, and pretends that those commercials and developer tools are just to get the conversation started with the customer, then sells them Windows.
How could they be a hypocrite for not releasing that code if they ARE helping the open source movement with their lawyers and stuff? They're only a hypocrite if they take and take and never give anything back, which they do. They don't have to give up EVERYTHING they could just to not be hypocritical.
expandfairuse.org
18-1/2 missing minutes? What 18-1/2 missing minutes? I love the private sector.
``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
That was too long ago! You're talking about something that happened 12 months ago? Ancient history.
(Excellent point.)