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.
1. Can't make any money from it
2. Doesn't benefit competitiors
3. Open
That's like 2 flamefests in one!
It's a dinosaur of a language .... Sadly NetRexx is just not the same thing.
..:(
..
Sad that it's still not GPL'd
After all it's only used on Mainframes these days
Quidquid latine dictum sit, altum videtur
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.
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.
Rexxcelent.
It had some odd quirks but it seemed like a pretty decent language. I worked in a shop that used it for some maintenance jobs, though nothing production. With the other languages out there now (and open) I don't think ORexx will catch any big waves, but it will probably help the odds-and-ends legacy shops. Hey, it couldn't hurt.
I'm sure "SlashdotMedia" will improve on all the wonders that Dice Holdings blessed us all with
I don't think that all my Rexx scripts that customized the WorkPlace Shell's Launchpad applet will migrate very easily. The WorkPlace Shell is the one piece of software that I would have like to have seen IBM release as open source.
Granted that Rexx isn't as useful as Eclipse is to most users, this is another great example of IBM's committment to open source.
For me it is also alot easier for me to convince management and legal to use code that are related to IBM ( a reputable commercial company ) or other companies that use the Commmon Public License than code under the GPL. No offense to GPL but a business reality.
I hope that this trend continues.
OS/2 Warp came with an extra CD containing an integrated suite, IBM Works, written in Rexx, it was quick and functional so I guess it's a decent language given what they did with.
Trolling using another account since 2005.
I was thinking about this the other day. I used to write REXX scripts on the Amiga (way way back) to integrate a variety of applications. DCOP gives quite a bit of functionality there and fits very nicely into the REXX paradigm (without an application ever having to explicitly know REXX is talking to it).
I went to work several years ago for a job mainly involving mangling files in various ways and into various things. REXX was used almost exclusively for this. I enjoyed coding in it, I guess.. right until the moment I disovered Perl, when I dropped that turgid monstrosity like a hot rock.
REXX is sort of like Perl's retarded younger brother.
REXX would need brass knuckles in order to even beat the crap out of QBASIC.
If languages were pets, REXX would be a pet rock.
REXX is my favorite language to hate.
Seriously, though -- in my opinion, REXX is of primarily historical interest. Come to think of it.. it might make a good first language for a young person. It just seemed so limited in what it could do. Why use REXX when there's Perl?
I must in fairness point out that these are the words of someone who used REXX some ten years ago, wasn't a terribly proficient programmer then, and hasn't touched the language since.
I do have a fondness for it, however, and I'm glad it's finally open-sourced.
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
Compared with i.e. perl (to which i moved when started with Linux) is far easier to read, for simple text parsing is far more clear and scripts are easier to maintain. But if you need to get the output of other programs with it perl wins hands down (that was the first thing that jumped into my sight) and once you get the trick with regular expressions, rexx "normal" way of parsing looks very limited.
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 ]==--
Object Rexx is kind of new and allows integration of object oriented programs on different platforms. It works on many platforms AIX, OS/2 (had to put it in), the other windows, linux and solaris. It is a very useful tool and is backwards compatible with REXX. People with a more mainframe background will choose it over perl (which is unix based in its syntax). It's also useful for talking to AS/400s. There are a few of those out there.
And _that_ reminds me of one of the weirdest quirks of Rexx: it has DYNAMIC SCOPE!! The variables you have access to from within a procedure depend on where that procedure was called from. How's THAT for wacky!
OS/2's desktop (workplace shell) was exposed as objects and was very consistant no matter how different parts were viewed. Unfortunately, modern desktops including KDE, Gnome, and Windows XP either don't expose the parts properly or treat 'the desktop' and CLI environments as if they aren't dealing with the same computer.
Without an OS that deals with the system as objects, I don't see the value of Rexx above any of the dozens of others out there.
(I'd like to hear from OS X users if the GUI/CLI split is there or if both are fully integrated.)
A firewall can not protect you from yourself. Turn off what you do not need. Do not use the firewall to do your work.
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.
Rexx is a scripting language. I used it for things that in the Un*x world you would use a shell (ksh, bash, etc) for, or in some cases, what I would use awk for on Un*x.
This is the object-oriented version, which I've never played with. I strongly suspect it is comparable to things like Python and Ruby.
The syntax is reasonably clean (one reason I compare it to Python and Ruby). If you hate Python and Ruby and love Perl, you won't like Rexx. If you're on the opposite end of the spectrum (I am), you may like it. (Although if you already know Python or Ruby, I don't know that there would be any great advantage to doing Rexx.)
Rexx had one feature which I absolutely loved, and I've never seen another language with anything nearly as good. It had a trace function which showed you what the script was doing, first as the actual code, then the results of that code. (A similar function would be "bash -vx script".)
What made Rexx's debug facility so much better than everything else was that if turned all the way on (you could turn on and off various things, like whether you wanted to see variable values), it would show you not only the original code and the result, but all the intermediate results, as well.
For example, say you had a line that said something like:
x = ((( a + b ) * ( c / d )) * e) ^ f
To make the example simple, a=1, b=2, etc.
Rexx would show you:
x = ((( a + b ) * ( c / d )) * e) ^ f
x = ((( 1 + 2 ) * ( 3 / 4 )) * 5) ^ 6
x = (( 3 * .75 ) * 5) ^ 6
x = (2.25 * 5) ^ 6
x = 11.25 ^ 6
x = 2027286.5295... (I'm not bothering with the whole thing, ok?)
I had one program that I had written in clist language. I found a bug, and past experience led me to think it would take about two days to find and fix. Since I wanted to learn Rexx, I ported the program over to Rexx (which wasn't trivial, but it's also not important to my point). I still had the bug. Using the trace facility in Rexx, it took me 15 minutes to find and fix the bug. I was in love with the language from that point on.
For a real blast from the past, check out the REXX FAQ that I maintained for a couple of years. Copies are still floating around the net, including here:
t
http://www.funet.fi/pub/languages/rexx/rexxfaq.tx
It seems so... old, I guess. But REXX itself was fun to use, and I spent a lot of time using it and writing applications with (and for) it. It was very approachable, a good way to learn basic programming concepts. It definitely rocked on the Amiga because it was so well-integrated with the system. If OS/2 had not failed, it might still be here, because it was also decently integrated there.
Eric
Sounds like a classic case of "The Innovator's Dilemma" - unlike a startup who was willing to risk on a disruptive technology, there was no immediate corporate customer interested in spending big $$$ on your system, so your IBM managers did the sensible thing and pulled the plug.
> Using Rexx in conjunction with Bash scripting I can accomplish most of the everyday tasks I face as a sysadmin.
;-)
;-)
Hey, I thought I was the only one who used primarily Rexx and bash!
I'd actually _like_ to learn Perl, but I've yet to run across a text-processing task I couldn't get done in Rexx.
I'll often load a file into the (GPL'd) Hessling Editor ("THE"), which uses Rexx an an extension language. What the editor's native commands (quite powerful in their own right) won't do on their own, a Rexx macro will.
Common scenario: I'll have a group of text files all of the same sort that need some complex editing. I'll load _one_ of the files into THE, and begin using native commands and Rexx to do what needs to be done. Meanwhile, I'm keeping track of what I'm doing in another buffer: i.e. I'm assembling a macro that will do just what needs to be done to all the other files in the group, and will do it in a flash...
Rexx _does_ have a niche, and (so I've thought for a long time) _could_ find a place in the hearts of many *nix users.
More precisely, what I've thought is that if there were an open-source *OO* Rexx (Regina, nice as it is, is not ObjectRexx) Rexx might have a chance.
I wonder if it isn't too late though... Perl/Python/Ruby etc. are pretty entrenched (and well they should be -- I _still_ maintain Rexx could have a place in the ecology, however).
This is an interesting development, to be sure. Maybe it's _not_ too late! At any rate, if you won't give Rexx a try, do me a favor and disbelieve the poster who says QBasic is better.
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.
I hope they don't think that they are going to get karma from open sourcing stuff that they just find laying around I mean sure it's useful but really it doesn't take anything of IBM to give it away. It's kinda like it's not really doing charity if you give something away that you were gonna throw away.
Your CPU is not doing anything else, at least do something.
Actually, solutions are to services as custom-made products are to assembly-line products.
Instead of offering a service that a customer will decide whether or not they need it, a solution offers everything to achieve the list of goals a client requires.
The Penguin Producer
REXX (and then Object REXX) was my favorite high-level language (especially for scripting). With the demise of OS/2, the existence of Object REXX on other platforms was not freely available and so I didn't have access to this tool that made me highly productive for some situations. After searching for a decent Object REXX replacement for a number of years, I finally found Python - which I found to be a good replacement. Like Object REXX, Python has these benefits: (1) strong string handling capabilities, (2) easy to learn and use, (3) can be used from very simple scripts all the way up to full-blown apps (including GUI apps), and (4) very readable and maintainable (perhaps the most important benefit).
Given the similarities between Python and Object REXX, I now wonder if there would be any compelling reason for anyone to pick up Object REXX as a new language. Sadly, many will see it as a "fringe" language and may never even consider it.
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.
Solutions is "they fix problems you have". But if you squint your eyes, you see that they create half of them. Here are some of the things you need IBM Global Services to solve for you
- Anything involving EBCDIC (spelling?)
- Enterprise Java, with particular reference to Entity Beans, that were designed by IBM, so the story goes.
- Integrating Mainframe apps with modern code
- Web Services built using SOAP
I'd point to web services and EJB as examples of recent dev nightmares that came from IBM. Horrible things that convince you distributed apps are easy, but leave you with a nightmare that needs paid experts to fix.Which is what scares me about Object REXX. It could just be there to add complexity to the mix.
IBM Works wasn't written in REXX. It was written in C (and/or C++), and was originally Footprint Works (before IBM bought out Footprint for their banking software).
Yaz.
Many of the icons for OS/2 Warp were designed by Susan Kare, who also designed many of the icons for the original MacOS and for Windows 3.x...
Here are some of the Warp icons she created for IBM.
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.