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
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.
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?...
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.
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.
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
I guess you meant CORBA, and no, even if OSS was an entity (perhaps you meant OSI) it is far from abandoned.
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!
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
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.
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.
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 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
Probably she asked Cutler and Ballmer to open source old versions of Windows NT. Then she woke up six months later in hospital and decided that maybe suggesting open sourcing OS/2 was a better idea.
echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
Online petition http://www.petitiononline.com/sombsom/
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_
Right. BTW, it originally was MS's threat to stop selling Windows (probably Windows 95, then) to IBM's PC division which made them stop actively marketing OS/2 for the home and small business market in the mid-nineties. At a time when the battle was not yet won for MS, IBM gave in, not having enough confidence in their own, much better product.
I'll make a case for PHP. It makes a rather fine language to write things that are best output in HTML. Like dynamic HTML pages. Kinda like what it was originally built for.
...
It's easy to learn, if you're familiar with the C syntax
Adding all the other garbage to it is an Epic Fial.
"Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/
"It's easy to learn, if you're familiar with the C syntax ..."
There is a trade-off. This ease of assimilation drags PHP's expressive power and level of abstraction closer to what you see in C. This is a very low standard.
http://www.dieblinkenlights.com
If I had that kind of control over the chair industry, I could hurt Microsoft a lot more than that.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
Well, I didn't have a lot to say for it. It seems to me like it's very easy to write some seriously godawful stuff in PHP, and although most of the people that have used the stuff I've written consider me brilliant, if they were programmers, they'd probably be all like "WTF?" looking at it.
But then, I look at most everyone else's PHP code, and it makes absolutely no sense whatsoever, so I guess we'er all in the same boat there.
"Champagne for my real friends - and real pain for my sham friends!" http://ericblade.postalboard.com/