Thursday, October 28, 2004
Tuesday, October 26, 2004
The month Microsoft lost me...
This month I turned 27, maybe that's got something to do with this, maybe not, but something about me has changed. The tide has turned, and boy has it turned. It's not that I've suddenly gone anti-Microsoft, it's just that this month I started to think that my interests will be better served without them.
As changes go people might think that this is not a big deal, but for me it is. I have been mocked for most of my "adult" life for being very pro-Microsoft, and quite frankly for good reason. Until recently they've always done well by me. Not that they know this, I have had no direct contact with them, but they have been a major factor in my life as a techie up to this point.
In the beginning
You see I wasn't going to be a developer, in fact I wasn't going to be anything to do with computers. I was always going to be a sound engineer, I was going to mix live concerts, record the great orchestras and bands. But that was the early nineties, when I was in high school, and that was when the recording industry began to go digital. The first ADAT machines were launched, 8 track digital tape machines recording onto S-VHS video tape. It was when MIDI was branching out from simple drum machines and when SMPTE synching seemed like the most important task in the world.
Obviously to be the best sound engineer I knew that I had to learn all I could about this strange new digital world ... that was when I became hooked on computers. I saved up for 18 months till I could afford my first machine, a 486 with 8Mb RAM and 40Mb Hard disk. Wow, was that a machine that gave all it could. I still have most of the parts lying around, and the case has a Cyrix chip motherboard wedged in there now.
---------------------------
As a quick aside, it is funny how things stick with you. Even now, as I am writing code and designing systems, I still think of things as sound channels. Inputs are microphones which are pulled together in the mixer which can process the signals in many combinations to produce different sounds. Channels have outputs which can be fed back into other systems as inputs until one is considered the final output and fed back to the user.
---------------------------
Windows 3.1 - 2000
So back to our story. In those days I was a wet behind the ears computer newbie, and so Microsoft was king. I started with Windows 3.1, a great operating system but one which was bettered by Windows for Workgroups 3.1.1. Now that was the greatest of the pure 16bit operating systems from Microsoft. With its 32 bit filesystem access, add in WinG (the predecessor to DirectX) and the Win32 extensions (which given a push would run Office95) and you had a great and stable system.
Of course I was utterly fascinated with all of this and constantly consumed knowledge about computers. So much so that Win 3.1.1 was soon not enough. It was then that I first braved the world of beta operating systems, and for most of the next 5 years my computers always had some beta software on them, mostly the os.
I went through 5 different Win95 betas onto the production code, then Win95 OSR2 (when Microsoft finally got it right). After that came Windows NT 3.5.1 with the Alpha of the NT4 desktop (the first Win 95 like desktop for NT), that never really worked. Next up were a couple more Win 9x betas till finally the leaked (as in Microsoft Germany "accidentally" opened up the FTP server and didn't close it for a week) Windows 2000 code, at the point when it was still called NT5.
---------------------------
As another little aside, my friends found it hilarious that after warning me off of installing a Windows beta it booted up to reveal its build number as 666. This was the only beta I ever had trouble with, and in fact that wasn't Windows' fault.
---------------------------
I love Windows 2000, I still use it at work, and at home I am writing this on Windows 2000. But that is soon to change.
What I really need
So we are back to present day, and the title of this post tells you that something has changed, that I am, or at least am about to, move away from my reliance on Microsoft. I suppose it started towards the end of last year. In fact last autumn, when I began to start coding at home again, trying to recapture the fun of being a developer. I was really starting to get back into it when the proverbial "shit" hit the fan at work, and so began another drawn out sequence of late nights in the office, some right through till morning. This obviously put somewhat of a crimp in my home coding time.
Flash forward to January of this year when a good friend of mine is living on my sofa after having just moved to London. He wants to use my computer to hunt for jobs on the net, but it doesn't appear to be playing ball. I've not use it for three months by now, so I really don't know what state it is in, but something has definitely gone wrong, at the BIOS level. It's old anyway, so I don't really bother fixing it, thinking I'll get another one soon.
Flash forward again to the summer, and I actually want to, finally, get back into my home coding and still have not fixed my computer. It's just about usable, if I reset the BIOS on each boot.
At around this time I got an offer of some old machines from a friend of mine who works for a large London university. These machines are old, slow, but I had a need for a few specialist servers for running CVS/Maven/Tomcat etc and these seemed to fit the bill. However I knew that they would have to be running Linux to be able to get any real use out of them. Beside I like to remain legal and the thought of paying for that many MS Windows Server licenses freaked me out.
At that point I had decided to set up three of my computers as servers with Linux, keep this one as Windows for .NET testing and running my Matrox rt2500 with Adobe Premier and get a new workstation. Then a thought struck me, I asked myself, "What is it you really want to be doing on your computer?" and the answer was simple. Write code and articles.
The wonderful world of Open Source
As a developer I understand and truly appreciate the world of Open Source. I use OS APIs all the time at work and at home, and as I'm sure you've read in my other posts, my company is about to release all of our software as Open Source. Perhaps this had something to do with it as well, maybe I was finally ready to shed the shackles of commercial software reliance.
Or perhaps not.
The Novell Effect
I've always liked Novell. I went to a presentation from them the year they launched NDS (Novell Directory Services) and it blew me away (that was when I still wanted to be a network guy not a programmer), it also made me want to cry because I knew that they had already blown it and were being quickly overtaken by Microsoft. But I guess I underestimated them. Their come back with Linux has been inspired, I don't think they could have done it better.
Porting Novell Netware to run on Linux is a no brainer, but buying Suse so they could offer a version of Linux with their convoluted Unix IP insulating people from the insanity grenade that is SCO and their lawyers, is fantastic.
But they have gone further than that, fully embracing the Open Source world and becoming a partner with it. So I guess the imminent release of Suse Professional 9.2 probably had something to do with it as well.
Linux and me
So I had asked and answered my question about what I really wanted to use my PC for and Linux offered it all. I had realised the cost of legally supporting Microsoft on all my machines and almost fainted and finally Novell had entered the game and really impressed me. So here I am, enjoying the last few weeks of Windows before I say goodbye to it, at least for now.
I cannot, and will not say that I will never be back. To tell you the truth all the Longhorn stuff I've seen looks and sounds really great (even without WinFS). But right now Linux is the right choice, I know this. I think Microsoft has some really big troubles ahead of it, they are on for a 2006/7 release of Longhorn, where will the Linux desktop and server be by then? Another 4 or 5 releases, another kernel. Look at the money that is pouring into Linux from IBM, Novell and Sun. I've enjoyed my time using Microsoft software, I still won't say much against it, but I am really looking forward to my time with Linux.
---------------------------
Final aside. Although I had already made my decision to move to Linux, something else happened that would have pushed me over the edge anyway. PC Pro, a fairly Microsoft leaning magazine, did a group test of Office software. This is the first time they've done a group test like this that I can remember since Office 95. In the test Open Office won (with Star Office recomended for businesses that wanted to pay for the support). They went to great lengths to say that it did not win simply because it's free. To me that's about the biggest IT news of the year!
---------------------------
As changes go people might think that this is not a big deal, but for me it is. I have been mocked for most of my "adult" life for being very pro-Microsoft, and quite frankly for good reason. Until recently they've always done well by me. Not that they know this, I have had no direct contact with them, but they have been a major factor in my life as a techie up to this point.
In the beginning
You see I wasn't going to be a developer, in fact I wasn't going to be anything to do with computers. I was always going to be a sound engineer, I was going to mix live concerts, record the great orchestras and bands. But that was the early nineties, when I was in high school, and that was when the recording industry began to go digital. The first ADAT machines were launched, 8 track digital tape machines recording onto S-VHS video tape. It was when MIDI was branching out from simple drum machines and when SMPTE synching seemed like the most important task in the world.
Obviously to be the best sound engineer I knew that I had to learn all I could about this strange new digital world ... that was when I became hooked on computers. I saved up for 18 months till I could afford my first machine, a 486 with 8Mb RAM and 40Mb Hard disk. Wow, was that a machine that gave all it could. I still have most of the parts lying around, and the case has a Cyrix chip motherboard wedged in there now.
---------------------------
As a quick aside, it is funny how things stick with you. Even now, as I am writing code and designing systems, I still think of things as sound channels. Inputs are microphones which are pulled together in the mixer which can process the signals in many combinations to produce different sounds. Channels have outputs which can be fed back into other systems as inputs until one is considered the final output and fed back to the user.
---------------------------
Windows 3.1 - 2000
So back to our story. In those days I was a wet behind the ears computer newbie, and so Microsoft was king. I started with Windows 3.1, a great operating system but one which was bettered by Windows for Workgroups 3.1.1. Now that was the greatest of the pure 16bit operating systems from Microsoft. With its 32 bit filesystem access, add in WinG (the predecessor to DirectX) and the Win32 extensions (which given a push would run Office95) and you had a great and stable system.
Of course I was utterly fascinated with all of this and constantly consumed knowledge about computers. So much so that Win 3.1.1 was soon not enough. It was then that I first braved the world of beta operating systems, and for most of the next 5 years my computers always had some beta software on them, mostly the os.
I went through 5 different Win95 betas onto the production code, then Win95 OSR2 (when Microsoft finally got it right). After that came Windows NT 3.5.1 with the Alpha of the NT4 desktop (the first Win 95 like desktop for NT), that never really worked. Next up were a couple more Win 9x betas till finally the leaked (as in Microsoft Germany "accidentally" opened up the FTP server and didn't close it for a week) Windows 2000 code, at the point when it was still called NT5.
---------------------------
As another little aside, my friends found it hilarious that after warning me off of installing a Windows beta it booted up to reveal its build number as 666. This was the only beta I ever had trouble with, and in fact that wasn't Windows' fault.
---------------------------
I love Windows 2000, I still use it at work, and at home I am writing this on Windows 2000. But that is soon to change.
What I really need
So we are back to present day, and the title of this post tells you that something has changed, that I am, or at least am about to, move away from my reliance on Microsoft. I suppose it started towards the end of last year. In fact last autumn, when I began to start coding at home again, trying to recapture the fun of being a developer. I was really starting to get back into it when the proverbial "shit" hit the fan at work, and so began another drawn out sequence of late nights in the office, some right through till morning. This obviously put somewhat of a crimp in my home coding time.
Flash forward to January of this year when a good friend of mine is living on my sofa after having just moved to London. He wants to use my computer to hunt for jobs on the net, but it doesn't appear to be playing ball. I've not use it for three months by now, so I really don't know what state it is in, but something has definitely gone wrong, at the BIOS level. It's old anyway, so I don't really bother fixing it, thinking I'll get another one soon.
Flash forward again to the summer, and I actually want to, finally, get back into my home coding and still have not fixed my computer. It's just about usable, if I reset the BIOS on each boot.
At around this time I got an offer of some old machines from a friend of mine who works for a large London university. These machines are old, slow, but I had a need for a few specialist servers for running CVS/Maven/Tomcat etc and these seemed to fit the bill. However I knew that they would have to be running Linux to be able to get any real use out of them. Beside I like to remain legal and the thought of paying for that many MS Windows Server licenses freaked me out.
At that point I had decided to set up three of my computers as servers with Linux, keep this one as Windows for .NET testing and running my Matrox rt2500 with Adobe Premier and get a new workstation. Then a thought struck me, I asked myself, "What is it you really want to be doing on your computer?" and the answer was simple. Write code and articles.
The wonderful world of Open Source
As a developer I understand and truly appreciate the world of Open Source. I use OS APIs all the time at work and at home, and as I'm sure you've read in my other posts, my company is about to release all of our software as Open Source. Perhaps this had something to do with it as well, maybe I was finally ready to shed the shackles of commercial software reliance.
Or perhaps not.
The Novell Effect
I've always liked Novell. I went to a presentation from them the year they launched NDS (Novell Directory Services) and it blew me away (that was when I still wanted to be a network guy not a programmer), it also made me want to cry because I knew that they had already blown it and were being quickly overtaken by Microsoft. But I guess I underestimated them. Their come back with Linux has been inspired, I don't think they could have done it better.
Porting Novell Netware to run on Linux is a no brainer, but buying Suse so they could offer a version of Linux with their convoluted Unix IP insulating people from the insanity grenade that is SCO and their lawyers, is fantastic.
But they have gone further than that, fully embracing the Open Source world and becoming a partner with it. So I guess the imminent release of Suse Professional 9.2 probably had something to do with it as well.
Linux and me
So I had asked and answered my question about what I really wanted to use my PC for and Linux offered it all. I had realised the cost of legally supporting Microsoft on all my machines and almost fainted and finally Novell had entered the game and really impressed me. So here I am, enjoying the last few weeks of Windows before I say goodbye to it, at least for now.
I cannot, and will not say that I will never be back. To tell you the truth all the Longhorn stuff I've seen looks and sounds really great (even without WinFS). But right now Linux is the right choice, I know this. I think Microsoft has some really big troubles ahead of it, they are on for a 2006/7 release of Longhorn, where will the Linux desktop and server be by then? Another 4 or 5 releases, another kernel. Look at the money that is pouring into Linux from IBM, Novell and Sun. I've enjoyed my time using Microsoft software, I still won't say much against it, but I am really looking forward to my time with Linux.
---------------------------
Final aside. Although I had already made my decision to move to Linux, something else happened that would have pushed me over the edge anyway. PC Pro, a fairly Microsoft leaning magazine, did a group test of Office software. This is the first time they've done a group test like this that I can remember since Office 95. In the test Open Office won (with Star Office recomended for businesses that wanted to pay for the support). They went to great lengths to say that it did not win simply because it's free. To me that's about the biggest IT news of the year!
---------------------------
Tuesday, October 19, 2004
Open-Harmonise details: Publishing engine
In my previous post (More details on our open source initiative...) I promised to write a series of posts providing more details about Open-Harmonise. I decided to start this series with a description of the publishing engine.
This article only covers some very simple examples, what it does not show is the true power of Open-Harmonise which is building pages through complex metadata matching. I'll show you this another time once we have covered the basics.
End-To-End XML
One of the main features of Open-Harmonise is its end-to-end XML publishing. Many different publishing frameworks/engines talk about this, and some do do this. Our approach is perhapse a little different.
The core of the system takes/pulls in a whole bunch of XML from different sources, it then publishes the data pointed to by this XML into a final XML output document. After this it is down to the developer to assign an XSLT/FO translation to this XML output to get the final published output (HTML, WML, PDF etc).
There are three main XML inputs to the Open Harmonise publishing framework;
1) State XML
2) Page template XML
3) Object template XML
These contain the rules that describe the contents of the output XML, these rules point to specific data to be published or describe searches to be run over the repository the results of which will be published into the output.
The data fed into the output XML, based on these rules, can come from any Publishable object, either one of the built in objects or from other objects that developers add to their Open-Harmonise server.
This article is going to focus on these XML rules files and the XML output, leaving details of the data sources till later.
State XML
One of the most powerful features of Open-Harmonise is that it is abstracted away from the name/value pairs of HTTP requests. Instead the publishing engine expects an XML request to operate on, for example;
The above is a very simple example of an XML state in Open-Harmonise. The referer information is generated automatically if it is available, however the rest must be passed into the request. Now obviously, while XML can be posted into a HTTP request, this is not something that can be done with a simple HTML link.
As I said before, the Open-Harmonise publishing engine is abstracted from the name/value pair of HTTP request, in fact it is abstracted from any type of request. It can just as easily be place behind a Web Service. All of this is dealt with by protocol handlers, included with Open-Harmonise are handlers for dealing with;
1) HTTP name/value pair
2) HTTP post
The second of these simply grabs an XML document from the HTTP post request, therefore the above State could be sent as a complete XML document. This is typically how we handle requests from Flash applications.
The first of these is how HTML links are handled. It requires that the State XML is encoded into name/value pairs before the request is made, i.e. in the link on a web page. This handler then decodes these back into XML.
The encoding scheme is very similar to XPath, therefore will be familiar to anyone who has worked on XSL coding. The State example given before would look like this.
http://webdav/servlet/XRM?page/@id=1001&session/@id=D_TagLSNNxiLWK1U5BasjO
Although the referer element in the example XML will have been generated automatically by Open-Harmonise, you can probably see how you would create such an element as a name/value pair.
referer/page/@id="1000"
When creating the XSLT for translating output XML into HTML there are several utility xsl:templates to assist in creating such complex links.
Page Template XML
In the example State XML from before there are references to Pages. These are definitions of logical pages within Open-Harmonise. A logical page is made up of a XML file for the Page Template (the rules for the page contents, that were mentioned before) and a XSLT file for translating the output XML into the final desired format. In this section we will look at the Page Template XML and its role in the publishing engine.
This example of a Page Template XML file includes a static title for the page and a navigation group called "mainnav". Inside the navigation group a Section object will be published. Sections are the grouping objects for Documents and Assets, they normally form part of the administerable structure of a website built on Open-Harmonise.
The Section element, in this example, has no identifier (id attribute). It could, it could instead have a Path element under it as an identifier. Without any identifier the publishing framework will first of all check the State XML to see if there is a Section element in it which does have an identifier. If there is this will be the Section that is published. If there is not, then a new Section will be created and published.
This last case, may at first seem like a last ditch attempt to publish something instead of throwing an error, however this is not the case. This is a the basis for publishing web forms. For example if you wanted someone to be able to register themselves on your site, you would publish a new User object. When this is submitted to another page, encoded as XML, it will appear in the State XML for that page and can then be saved as a new User.
These are just a couple of examples of what you can do with the Harmonise Page Template XML, however the schema has many elements in it. Here is a list of some of the more useful ones.
* Search - publishing a search form
* List - publishing a list, which could be the results of a Search or a match using information from another object from the State or the currently logged in User
* include - XInclude for building pages from fragments
Mostly elements in the Page Template XML match to Objects within an Open-Harmonise server, so you can easily add to the power of Open-Harmonise by developing your own Publishable Objects.
Object Template XML
In the Page Template XML example shown in the last section there was a Template element surrounding the Section element that we wanted to publish. This points to an Object Template XML file, which tells the Object which elements of itself to publish. While we could put these XML instructions directly into the Page Template XML, these tend to be very small reusable parts, which is why we split them out into Object Templates.
This above example shows how we can tell the Section object to publish its Name and Summary information. These elements are generic to almost all Open-Harmonise objects along with other elements such as Profile, which tells an object to publish its metadata information.
Objects within Open-Harmonise can also have elements specific to themselves, for example Document (which contains an XML document) has a Contents element.
Because Templates are so small and reusable you can quickly build up a library of often used ones. Doing this enables to you build sites more and more quickly.
Conclusion
In this article I have given you a basic introduction to the Open-Harmonise publishing engine. As you can see it is designed to be very simple to implement with. However using these simple techniques and XSLT/FO to translate the output XML you can create complex information solutions, as we have for http://www.nc.uk.net and http://www.designcouncil.org.uk.
This article only covers some very simple examples, what it does not show is the true power of Open-Harmonise which is building pages through complex metadata matching. I'll show you this another time once we have covered the basics.
End-To-End XML
One of the main features of Open-Harmonise is its end-to-end XML publishing. Many different publishing frameworks/engines talk about this, and some do do this. Our approach is perhapse a little different.
The core of the system takes/pulls in a whole bunch of XML from different sources, it then publishes the data pointed to by this XML into a final XML output document. After this it is down to the developer to assign an XSLT/FO translation to this XML output to get the final published output (HTML, WML, PDF etc).
There are three main XML inputs to the Open Harmonise publishing framework;
1) State XML
2) Page template XML
3) Object template XML
These contain the rules that describe the contents of the output XML, these rules point to specific data to be published or describe searches to be run over the repository the results of which will be published into the output.
The data fed into the output XML, based on these rules, can come from any Publishable object, either one of the built in objects or from other objects that developers add to their Open-Harmonise server.
This article is going to focus on these XML rules files and the XML output, leaving details of the data sources till later.
State XML
One of the most powerful features of Open-Harmonise is that it is abstracted away from the name/value pairs of HTTP requests. Instead the publishing engine expects an XML request to operate on, for example;
<state>
<page id="1001">
<referer>
<page id="1000"/>
</referer>
<session id="D_TagLSNNxiLWK1U5BasjO">
</state>
The above is a very simple example of an XML state in Open-Harmonise. The referer information is generated automatically if it is available, however the rest must be passed into the request. Now obviously, while XML can be posted into a HTTP request, this is not something that can be done with a simple HTML link.
As I said before, the Open-Harmonise publishing engine is abstracted from the name/value pair of HTTP request, in fact it is abstracted from any type of request. It can just as easily be place behind a Web Service. All of this is dealt with by protocol handlers, included with Open-Harmonise are handlers for dealing with;
1) HTTP name/value pair
2) HTTP post
The second of these simply grabs an XML document from the HTTP post request, therefore the above State could be sent as a complete XML document. This is typically how we handle requests from Flash applications.
The first of these is how HTML links are handled. It requires that the State XML is encoded into name/value pairs before the request is made, i.e. in the link on a web page. This handler then decodes these back into XML.
The encoding scheme is very similar to XPath, therefore will be familiar to anyone who has worked on XSL coding. The State example given before would look like this.
http://
Although the referer element in the example XML will have been generated automatically by Open-Harmonise, you can probably see how you would create such an element as a name/value pair.
referer/page/@id="1000"
When creating the XSLT for translating output XML into HTML there are several utility xsl:templates to assist in creating such complex links.
Page Template XML
In the example State XML from before there are references to Pages. These are definitions of logical pages within Open-Harmonise. A logical page is made up of a XML file for the Page Template (the rules for the page contents, that were mentioned before) and a XSLT file for translating the output XML into the final desired format. In this section we will look at the Page Template XML and its role in the publishing engine.
<HarmonisePage>
<PageTitle>Test page</PageTitle>
<Navigation name="mainnav">
<Template id="10">
<Section/>
</Template >
</Navigation>
</HarmonisePage>
This example of a Page Template XML file includes a static title for the page and a navigation group called "mainnav". Inside the navigation group a Section object will be published. Sections are the grouping objects for Documents and Assets, they normally form part of the administerable structure of a website built on Open-Harmonise.
The Section element, in this example, has no identifier (id attribute). It could, it could instead have a Path element under it as an identifier. Without any identifier the publishing framework will first of all check the State XML to see if there is a Section element in it which does have an identifier. If there is this will be the Section that is published. If there is not, then a new Section will be created and published.
This last case, may at first seem like a last ditch attempt to publish something instead of throwing an error, however this is not the case. This is a the basis for publishing web forms. For example if you wanted someone to be able to register themselves on your site, you would publish a new User object. When this is submitted to another page, encoded as XML, it will appear in the State XML for that page and can then be saved as a new User.
These are just a couple of examples of what you can do with the Harmonise Page Template XML, however the schema has many elements in it. Here is a list of some of the more useful ones.
* Search - publishing a search form
* List - publishing a list, which could be the results of a Search or a match using information from another object from the State or the currently logged in User
* include - XInclude for building pages from fragments
Mostly elements in the Page Template XML match to Objects within an Open-Harmonise server, so you can easily add to the power of Open-Harmonise by developing your own Publishable Objects.
Object Template XML
In the Page Template XML example shown in the last section there was a Template element surrounding the Section element that we wanted to publish. This points to an Object Template XML file, which tells the Object which elements of itself to publish. While we could put these XML instructions directly into the Page Template XML, these tend to be very small reusable parts, which is why we split them out into Object Templates.
<Template>
<Section>
<Name/>
<Summary/>
</Section>
</Template>
This above example shows how we can tell the Section object to publish its Name and Summary information. These elements are generic to almost all Open-Harmonise objects along with other elements such as Profile, which tells an object to publish its metadata information.
Objects within Open-Harmonise can also have elements specific to themselves, for example Document (which contains an XML document) has a Contents element.
Because Templates are so small and reusable you can quickly build up a library of often used ones. Doing this enables to you build sites more and more quickly.
Conclusion
In this article I have given you a basic introduction to the Open-Harmonise publishing engine. As you can see it is designed to be very simple to implement with. However using these simple techniques and XSLT/FO to translate the output XML you can create complex information solutions, as we have for http://www.nc.uk.net and http://www.designcouncil.org.uk.
Monday, October 18, 2004
RSS feed change and update on WS intermediary framework...
Some people may notice that I have changed the way in which this blog is syndicated through the RSS/atom feed. I am only putting the opening paragraph out on the feed now, you will have to following the link to the main site to see the rest. This is a bit of an experimentation, trying to find the balance between getting the information out there and driving traffic to the site.
In other news I did more work on the Web Services Intermediary framework, that I've been creating, over the weekend. I did a lot more testing of the Axis deployment integration by placing the dummy intermediary in front of as many of the Axis samples as I could. It worked fine with all of them, eventually.
I did finish the weekend banging my head against a problem, which I'm still to sort out. It appears that in some way the Axis SOAPElements, at the point in the chain I am operating, are immutable. However they are not throwing any exceptions when I call mutating methods on them. Going to have to look into that one.
Finally, expect a further update on the Open Harmonise initiative sometime tomorrow. I'll be posting some more details about the publishing engine.
In other news I did more work on the Web Services Intermediary framework, that I've been creating, over the weekend. I did a lot more testing of the Axis deployment integration by placing the dummy intermediary in front of as many of the Axis samples as I could. It worked fine with all of them, eventually.
I did finish the weekend banging my head against a problem, which I'm still to sort out. It appears that in some way the Axis SOAPElements, at the point in the chain I am operating, are immutable. However they are not throwing any exceptions when I call mutating methods on them. Going to have to look into that one.
Finally, expect a further update on the Open Harmonise initiative sometime tomorrow. I'll be posting some more details about the publishing engine.
Friday, October 15, 2004
More details on our open source initiative...
A few days ago I posted that the company I work for, is going to open source all of its software, however I gave very few details. Partly that's because it was the end of the day so I didn't have much time and also because a lot of the details were, and still are, to be decided. But I felt I should follow up with the information I have.
As I said we are open sourcing pretty much everything we have in our source tree, except old versions of things and some blind alley test/experimentation code. Almost all of the code we are releasing has in some way gone towards building our Harmonise(TM) platform. This is a quote from the link back there;
"Harmonise(TM), a suite of software tools, to support the specialist work of designing and implementing information standards and architectures."
The plan is to release the code and supporting material sometime around the week of the 22nd November under the name Open-Harmonise. Within the Open-Harmonise community there will several independent projects and the Harmonise platform, which utilises the other projects.
Examples of sites running on Harmonise
National Curriculum Online: http://www.nc.uk.net/
Design Council: http://www.designcouncil.org.uk
National Theatre: Stagework: http://www.stagework.org.uk
Simulacra corporate website: http://www.simulacramedia.com
Open-Harmonise Key Features
- Complex metadata support. All objects can have any metadata, that is defined in the system with the appropriate Domain, attached to them. This can then be used for searching/matching.
- CMS for XML/link and binary resources.
- Simple Workflow creation and applications.
- Role based security.
- Full versioning of all resources.
- WebDAV interface.
- End-to-end XML publishing framework. XML templates in, XML out, XSLT/FO translation to output format.
- Java, therefore platform independent.
- Only required a Servlet engine, no J2EE dependency.
Open-Harmonise Projects
Here is a quick run down of how we think we are going to split things out into different projects, please remember that these details are not confirmed and that the names of the projects have definitely not been confirmed.
Open-Harmonise - DataStoreInterface
This is a database abstraction layer based around SQL Object representations, e.g. Select object, Update object, Column Reference etc. As part of this project we have implementations for MS SQLServer, Oracle, MySQL and Firebird. It means you don't have to worry about which database you are talking to. This covers both DDL and DML statements.
Open-Harmonise XML-Commons
This is a collection of XML related utility classes, for example an XML printer which includes pretty printing and namespace resolving. One of the other cool items in the collection is a XML fragment parser which allows you to parse and append to a Node some XML which may begin with a Text Node.
Open-Harmonise WebDAV Interface
This is the WebDAV server interface to the CMS. This supports WebDAV, DeltaV (a variant on linear versioning with some workspace features, DASL (WebDAV searching), WebDAV Ordered Collections and a property definition standard that we have created.
Open-Harmonise Commons
Like XML Commons, a collection of utility classes, we couldn't think of anywhere else to put them. E.g. Object Caches, Abstract Pool, URI wrapper, E-mail (JavaMail wrapper), MimeTypeMapping and JDK Logging: XML File Logging implementation.
Open-Harmonise Virtual File System
Pretty descriptive name, this is the API the administration application uses to talk to the server. Includes Virtual File System implementations for WebDAV (see server code description for supported specifications), FTP and local file systems.
Open-Harmonise Swing Commons
You can probably guess what this is all about. All the utility stuff we developed to support the administration application GUI.
Open-Harmonise Server Core
This is the meat of Open-Harmonise, this is the main server code that you actually run a website with. It includes the content objects (Document, Asset, Section, User, Property etc), their database handling code and the XML publishing framework, along with a lot of other stuff. This is dependent on a lot of the other projects listed here.
Open-Harmonise Information Manager
This is the administration application, from here you can manage almost all aspects of an Open-Harmonise server. The same interface is used for content creators/editors, administrators, information architects and website developers.
Simulacra Labs
Heavily Google inspired naming, but basically this is an incubator for projects that are not fully ready for release. We are seeding this with the results from some of our developer research days. This may include;
- A telnet interface to Open-Harmonise server.
- A FTP interface to the CMS.
- A collection of Web Service methods for the server.
- Lots of other little things that we have tried out over the years.
I am going to post some more details, about the whole open source initiative and these specific projects as soon as I can, but that's it for now.
As I said we are open sourcing pretty much everything we have in our source tree, except old versions of things and some blind alley test/experimentation code. Almost all of the code we are releasing has in some way gone towards building our Harmonise(TM) platform. This is a quote from the link back there;
"Harmonise(TM), a suite of software tools, to support the specialist work of designing and implementing information standards and architectures."
The plan is to release the code and supporting material sometime around the week of the 22nd November under the name Open-Harmonise. Within the Open-Harmonise community there will several independent projects and the Harmonise platform, which utilises the other projects.
Examples of sites running on Harmonise
National Curriculum Online: http://www.nc.uk.net/
Design Council: http://www.designcouncil.org.uk
National Theatre: Stagework: http://www.stagework.org.uk
Simulacra corporate website: http://www.simulacramedia.com
Open-Harmonise Key Features
- Complex metadata support. All objects can have any metadata, that is defined in the system with the appropriate Domain, attached to them. This can then be used for searching/matching.
- CMS for XML/link and binary resources.
- Simple Workflow creation and applications.
- Role based security.
- Full versioning of all resources.
- WebDAV interface.
- End-to-end XML publishing framework. XML templates in, XML out, XSLT/FO translation to output format.
- Java, therefore platform independent.
- Only required a Servlet engine, no J2EE dependency.
Open-Harmonise Projects
Here is a quick run down of how we think we are going to split things out into different projects, please remember that these details are not confirmed and that the names of the projects have definitely not been confirmed.
Open-Harmonise - DataStoreInterface
This is a database abstraction layer based around SQL Object representations, e.g. Select object, Update object, Column Reference etc. As part of this project we have implementations for MS SQLServer, Oracle, MySQL and Firebird. It means you don't have to worry about which database you are talking to. This covers both DDL and DML statements.
Open-Harmonise XML-Commons
This is a collection of XML related utility classes, for example an XML printer which includes pretty printing and namespace resolving. One of the other cool items in the collection is a XML fragment parser which allows you to parse and append to a Node some XML which may begin with a Text Node.
Open-Harmonise WebDAV Interface
This is the WebDAV server interface to the CMS. This supports WebDAV, DeltaV (a variant on linear versioning with some workspace features, DASL (WebDAV searching), WebDAV Ordered Collections and a property definition standard that we have created.
Open-Harmonise Commons
Like XML Commons, a collection of utility classes, we couldn't think of anywhere else to put them. E.g. Object Caches, Abstract Pool, URI wrapper, E-mail (JavaMail wrapper), MimeTypeMapping and JDK Logging: XML File Logging implementation.
Open-Harmonise Virtual File System
Pretty descriptive name, this is the API the administration application uses to talk to the server. Includes Virtual File System implementations for WebDAV (see server code description for supported specifications), FTP and local file systems.
Open-Harmonise Swing Commons
You can probably guess what this is all about. All the utility stuff we developed to support the administration application GUI.
Open-Harmonise Server Core
This is the meat of Open-Harmonise, this is the main server code that you actually run a website with. It includes the content objects (Document, Asset, Section, User, Property etc), their database handling code and the XML publishing framework, along with a lot of other stuff. This is dependent on a lot of the other projects listed here.
Open-Harmonise Information Manager
This is the administration application, from here you can manage almost all aspects of an Open-Harmonise server. The same interface is used for content creators/editors, administrators, information architects and website developers.
Simulacra Labs
Heavily Google inspired naming, but basically this is an incubator for projects that are not fully ready for release. We are seeding this with the results from some of our developer research days. This may include;
- A telnet interface to Open-Harmonise server.
- A FTP interface to the CMS.
- A collection of Web Service methods for the server.
- Lots of other little things that we have tried out over the years.
I am going to post some more details, about the whole open source initiative and these specific projects as soon as I can, but that's it for now.
Thursday, October 14, 2004
XML unprefixed attributes and namespaces...
An issue came up today to do with XML attributes and their namespaces. In the application that I maintain I was readin some XML where the attributes did not have namespace prefixes, but the element did, for example;
<ns1:element att1="val" att2="val">textNode</ns1:element>
This was because the person who had constructed it was working on the theory that the attributes would inherit the namespace of the element. The parser I was using, the JDK default which in this case was Crimson, did not agree.
Neither of us knew the correct answer so we starting routing through the XML Schema specification...this did not provide a clear answer. So we started hunting around elsewhere. This is when we found this page;
Namespace Myths Exploded
Apprently, according to the spec, unprefixed attributes are not part of any namespace. In the end we added the required prefix and all was fine. I am pretty much against using the default namespace in any occasion, I prefer to make everything as explicit as possible where XML and namespaces are concerned, and this has solidifed my position.
Maybe this is a more widely known issue, but we'd not heard about it before so I thought I'd post it.
<ns1:element att1="val" att2="val">textNode</ns1:element>
This was because the person who had constructed it was working on the theory that the attributes would inherit the namespace of the element. The parser I was using, the JDK default which in this case was Crimson, did not agree.
Neither of us knew the correct answer so we starting routing through the XML Schema specification...this did not provide a clear answer. So we started hunting around elsewhere. This is when we found this page;
Namespace Myths Exploded
Apprently, according to the spec, unprefixed attributes are not part of any namespace. In the end we added the required prefix and all was fine. I am pretty much against using the default namespace in any occasion, I prefer to make everything as explicit as possible where XML and namespaces are concerned, and this has solidifed my position.
Maybe this is a more widely known issue, but we'd not heard about it before so I thought I'd post it.
Wednesday, October 13, 2004
It's official, we're open sourcing everything...
Today we got the official nod that our company is open sourcing all of our software, over four years of development. We are going to be focusing on selling consulting and bespoke integration work, which is basically what we did before.
The launch to open source won't happen till the 22nd of November, but in the lead up to that I am going to post some introductions to the different projects that will be made available. For now you can check out our company site at http://www.simulacramedia.com.
The launch to open source won't happen till the 22nd of November, but in the lead up to that I am going to post some introductions to the different projects that will be made available. For now you can check out our company site at http://www.simulacramedia.com.
Tuesday, October 12, 2004
Polls, PCs and stuff
Well this weeks poll does not seem to be attracting people. Perhaps one one is interested enough in the subject, which does surprise me. WS-Security is the next implementable WS-* specification so I would have though it would at least be on people's radar. I might leave this poll up a little longer than the last one.
In other news, I am off tonight to pick up a couple of second hand machines from a friend. Still trying to plan out what setup I'm going to have, but I suspect that one of these will be my SCM/build server and the other a Tomcat/MySQL etc test server.
In doing all this, I'm definately going to be moving over to Linux on all but one of my machines. The one that isn't going will be for Windows testing and to run one bit of silly hardware that I can only run in Windows. It's looking likely that I'll go for Suse 9.1 thanless I can be pursuaded in another direction.
Anyway, sorry for the lack of Java/Web Services related postings the last couple of days. Lot's to do at work and still catching up from the codefest that was the weekend.
In other news, I am off tonight to pick up a couple of second hand machines from a friend. Still trying to plan out what setup I'm going to have, but I suspect that one of these will be my SCM/build server and the other a Tomcat/MySQL etc test server.
In doing all this, I'm definately going to be moving over to Linux on all but one of my machines. The one that isn't going will be for Windows testing and to run one bit of silly hardware that I can only run in Windows. It's looking likely that I'll go for Suse 9.1 thanless I can be pursuaded in another direction.
Anyway, sorry for the lack of Java/Web Services related postings the last couple of days. Lot's to do at work and still catching up from the codefest that was the weekend.
Monday, October 11, 2004
Web Service intermediaries in Axis
I've spent most of this weekend trying to work out how to best implement Web Service intermediaries in Apache Axis. Turns out this is quite hard.
While Axis is incredibly modularized, allowing you to plug-in functionality at many points, none of these are immediately useful for creating general intermediaries.
I did manage to find a way and got an ugly intermediary working for the GetQuote sample that comes with Axis. After that I began working on a more generalized framework for doing this. I have a basic framework that allows you to very simply implement a class, deploy part of the framework as an implementation of the service you want to act as an intermediary for, add a reference to your class in the WSDD entry for this service and that's it.
Your class then gets access to the request SOAPHeader and SOAPBody and the same on the way back through for the response. You can alter these as they pass.
The hardest part of this has been trying to come up with the requirements for the framework. No one appears to be doing any work with Web Services intermediaries and so I don't really know what people would want from the framework above and beyond.
One annoyance I have is that there does not appear to be an easy way to bounce between Axis' SOAPElement objects and XML DOM objects and back again. I am wondering if intermediary implementer would be okay with SOAPElements or would they rather work with pure XML DOM. I do suspect it would be the latter, as there are far more tools for assisting with that and it is the logical model of a SOAP service. However, I am concerned about the overhead in processing this.
I am a way off of releasing this, I need to add some more functionality, some examples (based on the Axis samples probably) and a really good from scratch example of a complex intermediary. I have a fairly good idea for this last part. Then more testing and some documentation.
If anyone has any ideas of features they would like to see in this let me know and I'll try and get them in, or at least architect around planned extensions.
While Axis is incredibly modularized, allowing you to plug-in functionality at many points, none of these are immediately useful for creating general intermediaries.
I did manage to find a way and got an ugly intermediary working for the GetQuote sample that comes with Axis. After that I began working on a more generalized framework for doing this. I have a basic framework that allows you to very simply implement a class, deploy part of the framework as an implementation of the service you want to act as an intermediary for, add a reference to your class in the WSDD entry for this service and that's it.
Your class then gets access to the request SOAPHeader and SOAPBody and the same on the way back through for the response. You can alter these as they pass.
The hardest part of this has been trying to come up with the requirements for the framework. No one appears to be doing any work with Web Services intermediaries and so I don't really know what people would want from the framework above and beyond.
One annoyance I have is that there does not appear to be an easy way to bounce between Axis' SOAPElement objects and XML DOM objects and back again. I am wondering if intermediary implementer would be okay with SOAPElements or would they rather work with pure XML DOM. I do suspect it would be the latter, as there are far more tools for assisting with that and it is the logical model of a SOAP service. However, I am concerned about the overhead in processing this.
I am a way off of releasing this, I need to add some more functionality, some examples (based on the Axis samples probably) and a really good from scratch example of a complex intermediary. I have a fairly good idea for this last part. Then more testing and some documentation.
If anyone has any ideas of features they would like to see in this let me know and I'll try and get them in, or at least architect around planned extensions.
Saturday, October 09, 2004
Poll #2: What are you WS-Security plans?
So the WS-Security specification has been published for sometime now, we also have the WS-I Security Profile to encourage interoperability. Tool sets are begining to support the specification. All that's left is for people to actually begin using it.
This weeks poll asks that very question. However it would be fantastic if any of you who have or are implementing WS-Security would share some of those experiences. Please post any comments you have on this subject, they are always welcome.
This weeks poll asks that very question. However it would be fantastic if any of you who have or are implementing WS-Security would share some of those experiences. Please post any comments you have on this subject, they are always welcome.
Friday, October 08, 2004
Developer Support #3: WS Spec Landscape
I was browsing the Apache Axis Wiki and came across this page which is a list of links to Web Service specifications.
Apache Wiki: WebServicesSpecifications
Very similar to the one I posted a couple of weeks ago, just a bit easier to read.
Also, there is a link at the bottom of that page to a WS Specifications timeline which is really quite nice.
Web Services Timeline
While browsing around I also came across this article Constructing Reliable Web Services on the IBM site. This is most interesting as they talk about the WS-Reliability specification, which seems strange as IBM back the WS-ReliableMessaging specification along with Microsoft.
Apache Wiki: WebServicesSpecifications
Very similar to the one I posted a couple of weeks ago, just a bit easier to read.
Also, there is a link at the bottom of that page to a WS Specifications timeline which is really quite nice.
Web Services Timeline
While browsing around I also came across this article Constructing Reliable Web Services on the IBM site. This is most interesting as they talk about the WS-Reliability specification, which seems strange as IBM back the WS-ReliableMessaging specification along with Microsoft.
Thursday, October 07, 2004
Amazon Web Services - Where might it head?
Amazon recently announced the update to their incredibly popular Web Services facilities.
"New Amazon Web Services Offerings Give Developers Unprecedented Access to Amazon Product Data and Technology, and First-Ever Access to Data Compiled by Alexa Internet"
This has got me thinking about what Amazon have done and where they may be heading with these. Now I need to preface this by saying that this is purely speculation on my behalf, I have no knowledge about this stuff. These ideas are just my thoughts based on what I would do in their situation.
So far they have never charged for access to these services, however the second part of this announcement, about opening up the Alexa Internet data, does say that this will be free during the beta phase only. This poses interesting questions about how they will charge for it and what services they will offer for that. So far Amazon have not offered anything in the way of service guarantees [Web services without warranties - LooselyCoupled.com].
What would you want to see from them if you have to pay to access the Web Services? Well for me it would be a Service Level Agreement for a start with some indication of how to best support this. Obviously if you read the site regularly you'll see the next part coming. I want Reliable Messaging of some sort. Obviously not many people would be able to implement this yet so you are talking about different endpoints with different facilities (one with RM one without) therefore Amazon should offer the one without RM with a lower SLA.
Moving forward though, what else might happen at Amazon. Web Services technologies are maturing and they should be beginning to think about what these changes will allow. In v3 they opened up the shopping cart through Web Services, really all that's left is the very end of the process with user services and card payments.
The technical problems restraining this were a lack of reliability (solved with WS-RM or WS-Reliability) and security (solved with WS-Security and WS-I: Security Profile). With these out of the way, they could move forward.
Obviously the card payments cannot be opened up to everyone so this suggests the split of Web Service users into Tier One and Tier Two. The current users and systems are what Tier Two would be, simple, open Web Services. Tier One users would be strategic partners who want to completely brand the entire shopping process. There would have to be serious business agreements in place, as well as SLAs. The experience that Amazon will be gaining through the paid for Alexa services will set them up for this.
This would be a major step forward for the widespread use of Web Services in major business mission critical infrastructures. This time next year possibly?
"New Amazon Web Services Offerings Give Developers Unprecedented Access to Amazon Product Data and Technology, and First-Ever Access to Data Compiled by Alexa Internet"
This has got me thinking about what Amazon have done and where they may be heading with these. Now I need to preface this by saying that this is purely speculation on my behalf, I have no knowledge about this stuff. These ideas are just my thoughts based on what I would do in their situation.
So far they have never charged for access to these services, however the second part of this announcement, about opening up the Alexa Internet data, does say that this will be free during the beta phase only. This poses interesting questions about how they will charge for it and what services they will offer for that. So far Amazon have not offered anything in the way of service guarantees [Web services without warranties - LooselyCoupled.com].
What would you want to see from them if you have to pay to access the Web Services? Well for me it would be a Service Level Agreement for a start with some indication of how to best support this. Obviously if you read the site regularly you'll see the next part coming. I want Reliable Messaging of some sort. Obviously not many people would be able to implement this yet so you are talking about different endpoints with different facilities (one with RM one without) therefore Amazon should offer the one without RM with a lower SLA.
Moving forward though, what else might happen at Amazon. Web Services technologies are maturing and they should be beginning to think about what these changes will allow. In v3 they opened up the shopping cart through Web Services, really all that's left is the very end of the process with user services and card payments.
The technical problems restraining this were a lack of reliability (solved with WS-RM or WS-Reliability) and security (solved with WS-Security and WS-I: Security Profile). With these out of the way, they could move forward.
Obviously the card payments cannot be opened up to everyone so this suggests the split of Web Service users into Tier One and Tier Two. The current users and systems are what Tier Two would be, simple, open Web Services. Tier One users would be strategic partners who want to completely brand the entire shopping process. There would have to be serious business agreements in place, as well as SLAs. The experience that Amazon will be gaining through the paid for Alexa services will set them up for this.
This would be a major step forward for the widespread use of Web Services in major business mission critical infrastructures. This time next year possibly?
Tuesday, October 05, 2004
Developer Support #2: XSL References Links
I do a lot of work on building solutions around XSL and have a set of reference links that I live by so I thought I would pass these along. These reference sites are the ones that I always give to new developers or design partners starting out in XSL.
ZVON XSLT Reference
ZVON XSL:FO Reference
XSLT Questions and Answers
Standard XSLT extensions, useful until we all move to XSLT 2.0
ZVON XSLT Reference
ZVON XSL:FO Reference
XSLT Questions and Answers
Standard XSLT extensions, useful until we all move to XSLT 2.0
Poll #1: Which IDE - results so far
I'm going to leave the poll up for the week, but the results so far look like this.
1) Eclipse/IntelliJ = 45%
2) JDeveloper = 4%
3) Netbeans/JBuilder/Websphere Studio = 2%
I'm glad Eclipse is right up there, makes our decision to go for it seem okay. I am truely interested in checking out the latest version of JDeveloper. Might take a copy home and give it a go there.
Anyway, I will update you with the final results before I close out the poll at the end of the week.
For next week I'm thinking about something to do with Web Services adoption. Thanks to everyone who expressed an opinion and I will set up some form of archive for these next week.
1) Eclipse/IntelliJ = 45%
2) JDeveloper = 4%
3) Netbeans/JBuilder/Websphere Studio = 2%
I'm glad Eclipse is right up there, makes our decision to go for it seem okay. I am truely interested in checking out the latest version of JDeveloper. Might take a copy home and give it a go there.
Anyway, I will update you with the final results before I close out the poll at the end of the week.
For next week I'm thinking about something to do with Web Services adoption. Thanks to everyone who expressed an opinion and I will set up some form of archive for these next week.
Monday, October 04, 2004
Apache proposal for WS-AtomicTransaction et al
There is a proposal
over on the Apache Web Services -WSFX Wikki for an implementation of WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity.
From what I can tell this is from the same people who started the Sandesha project which is implementing WS-ReliableMessaging. They put an emphasis in their proposal to support interoperabillity. It would be good to see this get through, although I'm interested in reading the Architecture guide and the User guide more fully to see how easy this will be to use.
I guess the WS-* stack is moving forward whether you agree with it or not.
over on the Apache Web Services -WSFX Wikki for an implementation of WS-Coordination, WS-AtomicTransaction and WS-BusinessActivity.
From what I can tell this is from the same people who started the Sandesha project which is implementing WS-ReliableMessaging. They put an emphasis in their proposal to support interoperabillity. It would be good to see this get through, although I'm interested in reading the Architecture guide and the User guide more fully to see how easy this will be to use.
I guess the WS-* stack is moving forward whether you agree with it or not.
Which IDE do you use?
I was reading a review of Oracle JDeveloper 10g today, and I was shocked that I didn't know that this was being released for free. It would appear that I am that out of touch with such things. At work I am very happy with Eclipse, more so after the move to v3, but should I be.
I've heard great things about IntelliJ, but never tried it? So I would like to know what you think? I've added the poll you can see on the left, if you are going to select "Other" please leave a comment about which "Other" that is, or in fact a comment about one of the IDEs.
I've heard great things about IntelliJ, but never tried it? So I would like to know what you think? I've added the poll you can see on the left, if you are going to select "Other" please leave a comment about which "Other" that is, or in fact a comment about one of the IDEs.
Subscribe to:
Posts (Atom)