A day like today in OOo History

So the 1st of May is usually marked on the calendar as the labor day and many people go to the streets and manifest demanding rights and all that fun stuff. Well speaking aobut fun stuff, OOo is launched their first 1.0 release just 4 years ago.

Thank’s to Pavel’s detective work for pointing this email from 2002 announcing the release of OOo

Date: Wed, 01 May 2002 05:30:35 -0700From: Zaheda Bhorat Content-Type: text/plain; charset=iso-8859-1Subject: [Marketing] OPENOFFICE.ORG COMMUNITY ANNOUNCES OPENOFFICE.ORG 1.O: FREE OFFICEOPENOFFICE.ORG COMMUNITY ANNOUNCES OPENOFFICE.ORG 1.O: FREE OFFICEPRODUCTIVITY SOFTWAREGlobal Community Builds Full-Featured Office Suite With RevolutionaryMomentumMay 1, 2002 - The OpenOffice.org community (www.openoffice.org)  todayannounced the availability of OpenOffice.org 1.0, the open source,multi-platform, multi-lingual office productivity suite available as afree download at the OpenOffice.org community website....

Yay Basic!!

So Basic was NOT there in the beginning, but lets face it, it still around. OpenOffice.org re-implement basic on their enviroment to appeal to the new users for the ‘simple’ and well… basic syntax.

However the OpenOffice.org API is far from simple and a lot of documentation and even more important, exposure is needed on how to master this language.

I have been fliying around this issue for a while, as the leader of the spanish community, I had spotted a lot of interest in learning Basic and mastering the macros and making OOo a more automated solution.

The issue is the badly organized documentation that have seen to slow down the development of OOo really. I have on the other hand seen a few developers that have scale up to become serious players for extending OOo programatically.

I had spent this past weeks reading in more detal Andrew Pitonyak documentation and tirying to make sense of it. I have also been writing articles in regards to Laurent Gogard’s famous macros and have been puting also my personal thought about how things might be working.

Like many say, the only way to learn is by doing it. And to learn the API you really need to develop something. Put a goal and try whatever it takes to achieve it.

I have some goals and will list them here, but what is most important is the community itself to have their own goals and to try to achieve them. This will include dipping into oooforum.org and all the wikis, and documentation available and either translate it for the ones coming after, or actually start coding on it.

Basic reagardless of their humble origins is a true player in the UNO space. Some of this merits are basically that the implementation was builted wiht the API in mind which means that less code is needed to do stuff compared wiht external languages like Java, etc.

So far I have started to get some code out and write about the questions that had come to mind and even twent as far to write down questions about it.

The code was taken from Andrew’s document. I tried a bunch but just comment on a few. Here is the code with some of my anotations.

To create an instance of a service, use the global method createUnoService() as shown in Listing 3.6. This also demonstrates how to create a structure.
Listing 3.6: This is the old way of executing a dispatch.

Sub PerformDispatch(vObj, uno$)  Dim vParser    ' This will reference a URLTransformer.  Dim vDisp      'Return value from the dispatch.  Dim oUrl As New com.sun.star.util.URL   'Create a Structure  oUrl.Complete = uno$  vParser = createUnoService("com.sun.star.util.URLTransformer")   vParser.parseStrict(oUrl)   vDisp = vObj.queryDispatch(oUrl,"",0)   If (Not IsNull(vDisp)) Then vDisp.dispatch(oUrl,noargs())End Sub

My first questions is regarding how old is this dispatcher is it from OOo 1.x or 1.1.x.
I ran this and gave me an error in 2.0 at line 5 of the code saying:
Execution fault the argument is not optional
The call was also labeled as 0: PerformDispatch.

Andrew pretty much nail it here, on why OOoBasic is so challenging:

Writing macros in OpenOffice.org (OOo) is a complicated task with a steep learning curve. The problem is not the base language or the environment, it is the OOo application programming interface (API). The base language refers to the syntax and the commands that are not used to interact with an OOo document. page10 / 30

For this issue there are tools called Property Inspectors, the most common and famous in the community is PyXray and Xray which basically list all the services with their methods and help developers get a reference of the API.

When users use the macro recoder they are using a dispatcher which has some limitations, this limitations have been going away. At one point the user could only record things happening on the working area but not on dailogs and/or options that need another dialog.

Recently this has been fixed, however the use of a dispatcher is from conception limited as opposed to the freedom to type whatever function you want.

Also a dipatcher is tight to the user interface which could not e a good platform when you ldont have a UI presenta and want to deploy a service for example where the properties are not on the dipatcher since they are not avaialbe as an option for the user. For example, loading a document from a URL, like OOoDic does.

They attempt to fix it here with a DispatchProviderInterceptor which is supposed to intercept all the calls made by the mouse so the recorder is not halted by a new dialog or some options within that the dispatcher can’t make out of it.

At the end I was full of information but the information didnt really connect, I came to the conclusion that we need more tutorials that can complement this refferences and snippets.

I guess a good way to understand is to build tutorials and HOWTO going into the why’s and why nots about the code. Some miscelaneous doubts I remain were:
– Does the use of lowercaps / caps influence on the syntax?
– What exactly does %n and %i
– Is there a float type variable, because i got some errors about not being so.
– What are commands like, – createEnumeration(), hasmoreElementsm(), nextElement(), getElementNames, getByName.
– How can I tell what type of variable do I need?

As I go on reading the Basic Language reference I hope at least 70% of this doubts clear a bit. Till then, I guess we need more community involemnte to share the knowledge.

Some updates

Wow so Christian Driga is now the marketing co-lead. Interesting, afer having Jackenlin missing for some time I guess it was the time for a new co-lead. I do welcome the change with open arm specially from a point of view that Cristian is comming from the art project which will have a big impact on the way the community present itself.

In OOo you have to do your merits and Christian has done it succesfully. Christian on the other hand is a busy guy and my only concern is that his lawyer dutties might keep him out of the demanding position for lorg periods.

Away from that is good that it is a co-lead. At that same train of thought I have been asking myself if I should be the overal leader of the community as opposed of a co-lead since Richard has been very busy and he still get a lot of emails being original leader of the community. The irony here is that the co-lead after him was Williams which now is the guy who is working on writting the OOo book and we are constant collaboration.

Is good to have an abundance of leadership, I guess. I do wish we have more people becoming role models within the community. I have seen that this new stage of the game, some developers need to step forward. We need XML gurus and Python/C++ mavericks.

We also need new ideas on how to develop the webservices and modify OOo to be a web platform that can connect, retrieve and manage information to be able to work frm a centralized place.

While much of the mailing list cry for an email client, I think we should be thinking on how to integrate with them as opposed to develop one of our own.

Having the DCOPS for the Mozilla framework might bring some exciting stuff in the future. But until this integration takes place we can look on other open-frameworks such as Horde email client which is widely used on the ISP as well as other web apps that can maanage RPC and could authenticat and send email without even opening the aplication (sending a XML stream).

Again, I will need more XML knowledge to confirm this possibility and also more developers excited in the project to contribute. until then we got an exciting view on whats comming.

Do or Die

Be careful on what you wish for cuz u might just get

Today we had a serious talk on what could be the single most profound
comitment that will affect the rest of my life.The first real life
responsability to take on a young person under my wing and make her my
partner lover and roomate for at least 3 years.
Not only that but also move to a new region, new job, and new lfetime.
Making the sacrifize of asingle life, the choice of independent and
the rush to drive my life.
This might be the single biggest sacrifise I hav ever done for
someone. On the other side she might even do also do a bigger
one.Giving her age and get ready to step up and get a new life in a nw
country with a complete different culture, language, religion, and
spanish classes and assignments. This is a hugely tough environment,
very demanding and might be a bigger tougher life.
So far we’ll looking forward and keep wishing about finally being
together. We are nervous and hope we can finally get the chance to
kiss and hugh each other.

Disecting OOoDic

Laurent Gogard is one of the premier developers in the OOo community, his contributions have been outstanding. I have yet to thank him for all the effort he has put on the project and the amount of things I have learned from him.

Laurent really got exposure when he create a macro capable of easy download and install a dictionary within the OOo program and automatize the process of localizing a OOo distribution.

This macro was a Wizard called OOoDic which stands for OpenOffice.org Dictionaries. Now I start to generate a disection or an analisis of the code used at OOoDic and try to explain each part of the code.

The article has been posted on the OOo related site called OOoXtremo.org and is an interesting read. This article is just part one of this disection, where it just talk generally about the main modules and the functions of the first module.

The second part will take 2 other modules and will start finding key related processes finalizing with an interview to Laurent himself where he will answer some of the notes on how to generate your own OOo Wizard.

Live Spreadsheets, conecting to XML

This idea came to me early in the morning while watchng how a new power source was installed into my old PC. I was watching the Internet Kiosk and then wondered how hard could a real time LIVE spreadsheet could be.

The basic idea is to use the UI of Calc as a database/record display for end users. Or in other words, make their boring spreadsheets start making some real time procesing.

There are not that many things that stream real time information of the latest numbers. We can think game scores, stocks, currency exchange, but other more meaningful stuff like providers price quotes still need some work.

As I start getting a sense of how hard is to go from place to place asking for quotes on the latest material for a house that we are building, I can see how much time is wasted looking for this odd materials that the crazy builders demand.

At the same time I also se how stores start to share information between their different branches, so they can have EDI systems and track the stock of any of the different branches in the state. This definetly help their cause but and ours, but to what extend.

Having real time quotes might make our budget more exact as well as our cashflow and expense list. Transfer this to other parts of life and you will have your weekly market list done for you as well as other expenses.

Meanwhile we wait for this information to start flowing we can build the first bridges to put that information into a very user friendly interface. Where users dont just get the data but also play with it and build their own calculations based on dynamic live variables. The answer, of course XML.

OpenOffice.org and OpenDocuments might well suite the managing of this type of information, since it has a native XML database so is proven that OOo can handle xml datasources on a great manner. Services like OOoDic also showed that they can get the information from the net without the user really caring about it. And OOo infrastructure is based on XML so their parser should be more than suited to do this job.

Are we ready to start getting some live data into our otherwise boring spreadsheet?