IBM Open Sources Object Rexx
dryeo writes "IBM has Open Sourced Object Rexx. IBM Announcement. Source code has been turned over to The Rexx Language Association under the Common Public Licence. Rexx is an interpreted language which has been included in platforms such as the Amiga, OS/2 and AIX, and most IBM mainframes. For a quick overview check out Rexx for everyone."
A lot more information on Rexx can be found here on IBM's website. This is the main page and has links to courses, function libraries, etc.
That's like 2 flamefests in one!
Is there, for instance, any reason I'd want to use it on Linux?
Yes. You've used Rexx and have a lot of Rexx applications/megascripts written for your OS/2 or Amiga based systems and you want to migrate.
Come on, that wasn't so hard to figure out.
I once developed (and sold) an entire jail booking system on Amiga 3000 computers using off the shelf products and tying them together with ARexx. Everything from mug shots to personal items inventory to tamper-resistant wrist bands with photos and bar codes.
IR-24 capture card, Art Department, Superbase & ARexx.
THAT was computing power!
-Charles
Learning HOW to think is more important than learning WHAT to think.
IBM is a traditional American company, and back in the old days, IBM managers hired people who were smart and were willing to work[1]. There are many instances of data entry clerks becoming full fledged programmers and even project managers. Rexx, which was invented by an IBMer in the 1960s (?), is a perfect match for this kind of employee. Rexx is very easy to learn. It has no pointers or references (ala Perl). At the same time, Rexx has powerful facilities for string manipulation since most Rexx programs are string-oriented applications like processing queries for a database. Every installation of OS/2 comes with Rexx.
Rexx could actually have precluded the need for Perl if IBM had open sourced it 20 years ago.
By the way, the inventor of Rexx became an IBM fellow.
note
----
[1] IBM traditionally refuses to hire anyone without American citizenship. This rule was relaxed to allow the hiring of permanent residents. Nonetheless, as a matter of corporate policy, IBM managers generally do not hire people with an H-1B visa.
*cough* eclipse *cough*
Back in my mainframe days, Rexx was the replacement for EXEC and EXEC2 on IBM's VM system leading us to say:
"REXX is king of the EXEC's"
Thank you thank you. I'll be here all week.
You were mistaken. Which is odd, since memory shouldn't be a problem for you
Object Rexx is not the one used on IBM Mainframes.
Mainframe rexx is more like the (already open source) regina, only without the IO functions, and its been 'functionaly stabilised' (aka no new features) for a while now.
Personally I cant see much use for this Object Rexx, what they need to do is fix the error handling and data passing problems in the non-object Rexx interpreters.
**TODO** Steal someone elses sig.
I disagree.
I think the main philosophy here is that IBM is not in the software business. It's not in the hardware business either. IBM is in the solutions business. That is, the hardware, OS, software, support and the whole enchilada that goes with it.
(Sure, IBM had its years with the PC, trying to dominate the retail market. But they failed at that, despite still making a pretty darn good laptop, they're not the force they once were.)
Out of this context of selling solutions.. it doesn't matter to them if the software is open source or not. Open source can even serve to increase their profit margins, saving them development costs.
IBM bought Transarc and open-sourced their AFS implementation (now OpenAFS).
Was that because it had no commercial value? I don't think so.. Transarc had made some money off it.
Rather, it was because it was a useful part of the solutions IBM offered. And they could make more money off it as such than selling it retail. (which I believe they still do, but it's hardly why they bought it)
Rexx, on the other hand.. Well, that's certainly a case of something they couldn't make money off to begin with.
The power of rexx (or the arexx implementation on the Amiga) was that there was a unified scripting language available across applications from different vendors, I added arexx support into the version 2.0 of the image processing/paint software 'Photogenics' for the Amiga, and the beauty of this was you could script applications from different vendors with ease, so if you wanted to batch process a directory full of images and you needed to run the image first through Photogenics and then through (rival) Art Department Professional or ImageFX, you could do that easily.
Please read my Canon EOS tech blog at http://www.everyothershot.com
I did a co-op with one of IBM's software R&D groups in Boca Raton back in 1995 (just before they turned Boca the "Grave of OS/2")... at the time, Java had just been making waves with Netscape turning LiveScript into JavaScript (the bane) and the first baby-tiger book was hitting the shelves.
I recall that IBM had an entire crew of Rexx developers who spent most of their time crying into their coffee-machine cups of mirth about how they had developed a virtual machine, bytecode-based system "a whole decade before Visual Basic and Java."
It was a classic case of "we got their first and didn't do anything with it" that IBM was famous for throughout the 80's and 90's.
The project I was on, for example, had developed a web/CGI-based mail/newsgroup/PIM system that included (I kid you not) a 3D chat system myself and two other developers built as a Netscape 1.0 helper application. Mind you this was before Hotmail/Yahoo! mail/GMail were even on the horizon... They demo'd it a few times and then broke the team up... priceless...
Oh, look... my cup of mirth is getting low...
l8r,
Levendis47
--==[ AOL YIM ICQ : Levendis47 : levendis47@yahoo.com ]==--
Obviously have never had to program in CLIST
At my first computer programming job out of college, I was required to write scripts that processed JCL dumps. the scripting language of choice, back then, was CLIST. It was the most horrid "language" I have ever had to program in.
Fortunately, IBM had just released the first version of MVS/TSO that included support for REXX. Unaware that this was a recent thing, I grabbed the offical MVS/Rexx reference book (an internal IBM publication at the time, I believe), and took a week to self teach myself REXX, and ditched CLIST.
When IBM had their Great Layoff of '93, they purged all of the contractors first. As I wrapped up my project to hand over to my IBM supervisors, a look of shock and amazement came over their faces.
IBM'er: "You, you... programmed this in REXX!!!"
Me: "Yeah, so? It was a lot easier to do it that way."
IBM'er: "But, but... nobody here knows REXX!!! What are we going to do?!?!"
I was floored. Because I had a Computer Science degree, I was able to master a simple procedural programming language on my own, with one flimsy, poorly written internal reference document, within a week. The IBM'ers, on the other hand, had no degree, and were totally dependant on internal IBM training and certification in order to understand anything as "advanced" as a new programming language.
That, my friends, is the power of a good University degree.
On the Amiga, applications support Rexx in two ways: they can be commanded using Rexx, and upon certain events they can be made to launch specific Rexx scripts. Rexx commands applications in a markedly different way from the normal UNIX way of working: it assumes the application is already running, and sends commands to make it do different things. If I had a mailer, a Rexx-script for it could look somewhat like this (I forgot the syntax, bear with me...)
ADDRESS KMAIL.0
# now commands are going to the first instance of kmail that is running. Now we'll create a mail. Rexx has highly convenient associative variables for this.
mail.address = "johannesg@slashdot.org"
mail.subject = "Rexx is bloody useful"
mail.body = "at least, if all applications support it"
SEND mail
# Now we will store that mail in our mysql database:
ADDRESS MYSQL.0
SQL INSERT INTO sentmail VALUES mail
COMMIT
And done! We have linked together two already-running applications, to make a new, unique solution.
Similarly, my mailer _should_ just run a Rexx script when mail is received. The script should decide what to do with the mail, which could be classifying it, testing it for spam, forwarding it to another account, or for all I care making an immediate hardcopy and faxing it to my holiday address. None of those functions should be built into the mailer; instead, the user can configure the scripts precisely for his own needs.
This has some major benefits:
- Tools can remain lean, concentrating on core functionality. As long as the Rexx-interface is powerful enough, and the right triggers are provided, any user functionality you can imagine can be added by interfacing other applications to it.
- Complex tools for a specific purpose can be cobbled together by throwing a few existing applications together with some scripting glue.
- The GUI becomes as easy to script as the shell is today.
Of course I am not saying Rexx is the only way to do this, and indeed the KDE people are already moving in this direction with DCOP (I think). However, I believe noone in the Linux world has yet realized how amazingly powerful and useful this concept is.
So in the end, this isn't about Rexx at all - it is about how incredibly useful the concept of scripting together sets of applications is. The language really doesn't matter, since the Rexx interface works on the level of exchanging strings between the script and the addressed application (i.e. it might as well be Perl, or Python, or Ruby, or ...). Rexx is only special because it did this so incredibly well on the Amiga that I still miss it on a weekly basis.
4758 Secure Coprocessor Driver for Linux
This project is a Linux device driver for the IBM 4758 PCI Cryptographic Coprocessor, which is a tamper-sensing and responding, programmable PCI card. It provides a highly secure subsystem in which data processing and cryptography can be performed.
ATM on Linux
ATM support for Linux is currently in pre-alpha stage. There is an experimental release, which supports raw ATM connections (PVCs and SVCs), IP over ATM, LAN emulation, MPOA, Arequipa, and some other goodies.
Abstract Machine Test Utility (AMTU) for Linux
Abstract Machine Test Utility (AMTU) is an administrative utility that checks whether the underlying protection mechanism of the hardware is being enforced. This is a requirement of the Controlled Access Protection Profile (CAPP) FTP_AMT.1.
Ananas Project: Summary
This is the source for Working XML, a column on developerWorks with companion project code that demonstrates the evolution of full-fledged XML applications. This is distributed under the artistic license.
Apache HTTP Server
The Apache project develops and maintains an open-source HTTP server for various modern desktop and server operating systems.
BlueHoc simulator
BlueHoc is a tool that predicts the performance of Bluetooth wireless hardware technologies. BlueHoc simulates the baseband and link layers of the Bluetooth specification.
COIN (Common Optimization INterface)
Developers can use Common Optimization INterface (COIN) to build optimization solutions. IBM mathematical optimization researchers opened the code they use in finding the optimal allocation of limited resources. The code has many applications in a variety of industries.
Channel Bonding
The Channel Bonding project works on methods to join multiple networks on Linux into a single logical network with higher bandwidth. The project team works with the Beowulf Ethernet Channel Bonding project, where bonding work began.
Consensus prototype
Consensus is a joint European project carried out by six companies. The project is partially funded by the European Commission. The project goal is to provide technology to support single-authoring for mobile devices. developerWorks hosts the open source implementation developed by the Consortium. Detailed information about the project is at the Consensus Project home page (http://www.consensus-online.org).
Content Query System (CQS) Project: Summary
Content Query System (CQS). CQS is a distributed peer-to-peer query system for the purpose of discovering content or data. XML messages are passed between systems and query "engines" are used to access the data that is being made available on the system.
Crypto Accelerator Driver
Device Driver Support for the IBM eServer Cryptographic Accelerator.
Crypto Interface Library
Generalized Interface library for the IBM eServer Cryptographic Accelerator Device Driver. Note, this is a low level api for the Specified adapter, it is not intended to be an interface which is written to by applications. Applications should use the openCryptoki PKCS#11 api for interfacing to the token.
Dynamic Probe Class Library (DPCL)
DPCL is an object-based C++ class library that allows tool developers and sophisticated tool users to build parallel and serial tools using a technology called dynamic instrumentation.
Embedded IBM PowerPC 4xx Linux Support
This project contains packages which enable adding support for IBM PowerPC 4xx Embedded Processors to
STFU about slashdot bias.