Entries Tagged as 'open-source'

Firefox 3 statistics, and the Greek language

Firefox 3 was released on the 17th June, 2008 and up to now, an impressive 22 million copies have been downloaded.

kkovash had a peek at the stats and produced a nice post with diagram for the downloads of the localised versions of Firefox 3 (that is, excluding en-US).

Firefox 3 Downloads; part of EMEA region, focus on Greece

Downloads at [Release+3] days (20th June 2008)

Dark red signifies that there have been more than 100,000 downloads originating from the respective country. It is quite visible that most European countries managed to surpass the 100,000 threshold. Greece at that point was hovering to about 50,000 downloads. In the Balkan region, Turkey was the first country to grab the red badge.

It is interesting to see that Iran has been No 2 in the whole of Asia (No 1 has been Japan). Only now China managed to reach the second place, and pushed Iran in the third place. When taking into account the population gap and the political situation, Iran achieved a amazing feat.

In the first few days, a few countries only managed to jump fast over the 100K mark. It appears that these countries have strong social network communities, that urged friends to grab a copy of Firefox 3.

Firefox 3 downloads, showing Greece, with Red status

This is a recent screenshow (26th June 2008), at [Release+9] days. Greece has achieved Red status the other day. In the Balkan region, Turkey, Romania and Bulgaria had reached 100,000 first.

In the EU region, it is notable that Ireland, at 76,000 downloads, is lagging behind.

Another observation is that the countries from Africa are lagging significantly from the rest of the world. Low broadband Internet penetration and limited number of Internet users is likely to be the reason.

How many downloads have there been for the Greek localisation of Firefox 3;

kkovash reveals that there have been about 60,000 downloads for the Greek localisation of Firefox 3. This would approximately mean that more than 60% of the downloads in Greece have been for the localised version. Great news.

What to see in OpenOffice.org 3.1 Writer;

At the User Experience mailing list at OpenOffice.org there is a thread to discuss & plan what new things should make it to OpenOffice.org 3.1. Here is the first email,

From: Christian Jansen

Date: Wed, Jun 25, 2008 at 8:35 AM

Hi,
OpenOffice.org 3.1 planning will start soon, thus I’d like to collect some ideas (from an UX-perspective) for improving OpenOffice.org Writer.

- What drives you nuts?

- What works pretty well?

- My most wanted feature is:

Thanks for your feedback!

Regards,
Christian [Jansen]

Source: http://ux.openoffice.org/servlets/ReadMsg?list=discuss&msgNo=1890

Feedback started pouring in. Make your way to the user-experience discuss@ux.openoffice.org mailing list to add your views. When you log in to OpenOffice.org, you click to subscribe to the mailing list. That is, you need to make an account first.

Firefox Download Day Today! Check the start time!

Tuesday, 17th June 2008, is the Firefox 3 download day.
Download Day
For the world record attempt, check the start time for your location before downloading Firefox.

If you are located in Athens, Greece, we start at 20:00, Tuesday 17th June 2008.

If you are located in London, UK, we start at 18:00, Tuesday 17th June 2008.

Check the correct start time for your location.

Download Firefox 3!
Download Day - English
For more information, see http://www.spreadfirefox.com/

How to easily modify a program in Ubuntu (updated)?

Some time ago we talked about how to modify easily a program in Ubuntu. We gave as an example the modification of gucharmap; we got the deb source package, made the change, compiled, created new .deb files and installed them.

We go the same (well, similar) route here, by modifying the gtk+ library (!!!). The purpose of the modification is to allow us to type, by default, all sort of interesting Unicode characters, including ⓣⓗⓘⓢ , ᾅᾷ, ṩ, and many more.

The result of this exercise is to create replacement .deb packages for the gtk+ library that we are going to install in place of the system libraries. Because these new libraries will not be original Ubuntu packages, the update manager will be pestering us to rollback to the official gtk+ packages. This is actually good in case you want to switch back; you will have the enhanced functionality for as long as you postpone that update.

There is a chance we might screw up our system, so please make backups, or have a few drinks first and come back. I take no responsibility if something bad happens on your system. If you are having any second thoughts, do not follow the next steps; use the safer alternative procedure. You may try however this guide just for the kicks; up to the dpkg command below, no changes are being made to your system.

We use Ubuntu 7.10 here. This should work in other versions, though your mileage may vary.

The compilation procedure takes time (about 30 minutes) and space. Make sure you use a partition with >2GB of free space. We are not going to use up 2GB (a bit less than 1GB), but it’s nice not to fill up partitions.

We are going to use the generic instructions on how to recompile a debian package by ducea.

First of all, install the development packages,

sudo apt-get install devscripts build-essential

Next, we use the apt-get source command to get the source code of the GTK+ 2 library,

cd /home/ubuntu/bigpartition_over2GB/
apt-get source libgtk2.0-0

We then pull in any dependencies that GTK+ may require. They are normally about a dozen packages, but we do not have to worry for the details.

apt-get build-dep libgtk2.0-0

At this stage we need to touch up the source code of GTK+ before we go into the compilation phase. Visit the bug report #321896 – Synch gdkkeysyms.h/gtkimcontextsimple.c with X.org 6.9/7.0 and download the patch (look under the Attachment section). You should get a file named gtk-compose-update.patch. If you have a look at the patch, you will notice that it expects to find the source of gtk+ in a directory called gtk+. Making a link solves the problem,

ln -s libgtk2.0-0 gtk+

We then attempt to apply the patch (perform a dry run), just in case.

patch -p0 --dry-run < /tmp/gtk-compose-update.patch

If this does not show an error message, you can the command again without the –dry-run.

patch -p0 < /tmp/gtk-compose-update.patch

Finally, we are ready to build our fresh GTK+ library.

cd libgtk2.0-0
debuild -us -uc

This will take time to complete, so go and do some healthy cooking.

At the end of the compilation, if all went OK, you should have about a dozen .deb files created. These are one directory higher (do a “cd ..“). To install, use dpkg,

dpkg -i *.deb

If you have any other deb files in this directory, it’s good to move them away before running the command. If all went ok, the .deb files should install without a hitch.

The final step is to restart your system. To test the new support, see the last section at this post. Use Firefox and OpenOffice.org to type those Unicode characters.

If you managed to wade through all these steps, I would appreciate it if you could post a comment.

Good luck!

Greek Campaign for Open-Source Software

mathe.ellak.gr is an campaign to promote free and open-source software to the Greek-speaking audience.

The purpose of the campaign is to provide a short and concise message to the visitors; and also helps to direct people to the website when they show interest about FLOSS.

http://mathe.ellak.gr/wp-content/themes/modified-pop-blue/images/banners/bannersmall.jpg

http://mathe.ellak.gr/wp-content/themes/modified-pop-blue/images/banners/full_banner.jpg

It comes with logos of different sizes that you can put on your website so that you can direct your visitors to the campaign.

Got to put on on the Greek planet, planet.ellak.gr. ;-)

ert-archives.gr: “Linux/Unix operating systems are not supported”

ERT (Hellenic Broadcasting Corporation) is the national radio/television organisation of Greece.

ERT recently made available online part of its audio and video archive, at the website http://www.ert-archives.gr/

When browsing the website from Linux, you were blocked with a message that Linux/Unix operating systems are not supported. This message was appearing due to User-Agent filtering. Even if you altered your User-Agent, the page would not show the multimedia.

There has been a heated discussion on this on local mailing lists, with many users sending their personal polite comments to the feedback page at the ERT website. Many individual, personal comments have value and are taken into account.

Since today, http://www.ert-archives.gr/ does no do filtering on the User-Agent, and has changed the wording at the support page saying that

Σχετικά με υπολογιστές που χρησιμοποιούν λειτουργικό σύστημα Linux σχετικές οδηγίες θα υπάρξουν στο άμεσο μέλλον.

which means that they will be providing instructions for Linux systems in the immediate future.

Going through the HTML code of http://www.ert-archives.gr/ one can see that the whole system would work well under Linux, out of the box, if they could change

<embed id=”oMP” name=”oMP” width=”800″ height=”430″ type=”application/x-ms-wmp

to

<embed id=”oMP” name=”oMP” width=”800″ height=”430″ type=”video/x-ms-wmp

Firefox, with the mplayerplugin, supports the video/x-ms-wmp streaming format. You can verify if you have it by writing about:plugins in the location bar and pressing Enter. For my system it says

Windows Media Player Plugin

File name: mplayerplug-in-wmp.so
mplayerplug-in 3.40Video Player Plug-in for QuickTime, RealPlayer and Windows Media Player streams using MPlayer
JavaScript Enabled and Using GTK2 Widgets
MIME Type Description Suffixes Enabled
video/x-ms-wmp Windows Media wmp,* Yes

I am not sure if the mplayerplugin package is installed by default in Ubuntu, and I do not know what is the workflow from the message that says that a plugin is missing to the process of getting it installed. If you use the Totem Media Player, it instructs you to download and install the missing packages. I would appreciate your input on this one.

A workaround is to write a Greasemonkey script to replace the string so that Firefox works out of the box. However, the proper solution is to have ERT fix the code.

I must say that I would have preferred to have Totem Movie Player used to view those videos.
ERT Ecology
I just finished watching a documentary from the 80s about ecology and sustainability of the forests on my Linux system. It is amazing to listen again to the voice-over which is sort of a signature voice for such documentaries of the said TV channel. The screenshot shows goats in a forest, and mentioning the devastating effects of said animals on recently-burnt forests.

Update (22Mar08): The problem has not been resolved yet. Dimitris Diamantis offers a work-around at the Ubuntu-gr mailing list.

OpenOffice Writer training notes (request: make training video plz!)

OpenOffice.org is one of the most important layers of the open-source stack. Although it does a superb job, we really need to make effort to get more users working on it.

Here we present training notes for the use of Writer, the word processor component of OpenOffice.org. We aim to make the best use of styles by creating well-structured documents. What we show here is built on work of others, including the OpenOffice Linux.com articles by Bruce Byfield, the amazing OpenOffice.org documentation and the spot-on article of Christian Paratschek at osnews.com. Actually, the following follow more or less Christian’s article.

When training in OpenOffice.org, it is important to create a fluid workflow that starts from the basics and increases gradually in complexity. It would be great if someone could turn the notes in a training video.

  1. We start of with running OpenOffice.org Writer. The default windows appears. Compared with other word processors, in OOo we see this text boundary in the document (the dim rectangle that shows the area we can write in). We mention we can show/hide it with View/Text boundaries.
  2. When creating a document, it is good to set the properties such as Title and Subject. We do that from File/Properties/Description. It may look too much effort now, but it will help us later wherever we want to write the document title or subject. Use Using OpenOffice.org Writer for title and How to write nice document in OpenOffice.org Writer for subject.
  3. Writer supports styles which makes life much easier. You probably have used styles before; using Heading 1, Heading 2 for headings so that you can create easily the Table of Contents. Writer has a Styles and Formatting window that is accessible from the icon/button near the File menu. The icon looks like a hand clicking on a 3×3 grid. You can also get the windows from Format/Styles and Formatting, or by simply pressing F11. Once you do that, you get a floating window. You can dock it by dragging it to the right edge of the Writer window. If you are into 3D desktop, it may not be easy to dock (it automatically switches to another side of the desktop cube). In this case, use the key combination Ctrl-Shift-F10 to dock the Styles and Formatting window. It is good here to resize the document (that is, change the magnification) so that it appears centered with little empty space around.
  4. Writer supports styles, not only for Paragraphs (like Heading 1) but also for Pages. See the status bar at the bottom of the Writer window; it mentions Default which is the default page style. When we write a document, the first page is good to have a distinct style that is appropriate to the properties of a first page. This includes, making sure the second page appears empty, the page gets no page numbering and so on. On the Styles and Formating dock we select the Page styles tab and we double-click on the First Page style. This will set the current page to the First Page style, and we can verify visually by looking at the status bar (Now First Page instead of the old Default).
  5. We are not writing yet; lets create the subsequent pages first. To do so, we insert manual breaks in our document. Click on Insent/Manual Break…/ and select to insert a Page Break. As style for the page after the break choose the Index page style, tick on Change page number, and make sure the numbering starts from 1. Click OK. Proper documents start numbering from the Index page. The Index page is the page we put the Table of Contents, Table of Figures and so on.
  6. Make sure the cursor is on the new page with the Index style. We need to create a new page break, so that we can get writing the actual document. Click on Insert/Manual Break…/ and select a Page Break. As style for the page after the break you can choose Default. Leave any page numbering settings as is because it inherits from before. Click OK.
  7. Now, to view what we have achieved, let’s go to Print Preview, and choose to see four pages at a time. We can see the first page, another page which is intentionally left blank, the Index page and the Default page. Close Print preview and return to the document.
  8. Now let’s go back to the first page. We want to put the title on the first page. Nothing extravagant, at least yet. What we do is we visit the Paragraph styles and find the Title style. While the cursor is on the first page at the start, we double-click on the Title style. The cursor moves the the center of the document and we can verify that the Title paragraph style has been applied; see on the right of the Styles and Formating icon on the top-left of the Writer window. Shall we write the title of the document now? Not so fast. We can insert the title as a field, because we already wrote it in the properties at the beginning in Step 2. Click Insert/Fields/Title.
  9. Now press Enter; the cursor moves down and it somehow automatically changes to the Subtitle style. Styles in OpenOffice allow you to choose a Next style (a followup style) and in this case, when someone presses Enter on the Title style, they get a new paragraph in the Subtitle style. While in the line/paragraph with Subtitle style, click on Insert/Field…/Subject. Fields in OpenOffice.org appear with a dark gray background; this does not appear in printing, it is just there to help you identify where the fields are.
  10. Now lets move to the last page, the page with Default style and write something. Select the Heading 1 paragraph style and type Introduction. Press enter and you notice that the next style is Text body. Text body is the natural paragraph style for text in Writer (most documents have the default Default paragraph style which is wrong). Now write something in Text Body such as I love writing documents in OpenOffice.org Writer. Copy the line and paste several times so that we get a nice paragraph of at least five lines. Make sure when pasting that after a full stop there should be a single space, then the new sentence starts.
  11. Press Enter and now we are ready to add a new heading. Type Writing documents and set the Heading 1 paragraph style. Press Enter and fill up a paragraph with more of I love writing documents in OpenOffice.org Writer.
  12. Press Enter and create a new section (add a Heading 2, name it Writing documents in style and fill up a corresponding paragraph).
  13. Press Enter and create a last section (add a Heading 1, name it Conclusion, and fill up a corresponding paragraph style).
  14. Now we are ready to place the cursor at the Index page we created before, and go for the Table of Contents. Click on Insert/Indexes and Tables/Indexes and Tables. The default index type is Table of Contents. We keep the default settings and click OK. We get a nice looking table of contents.
  15. At this stage we have a complete basic document, with first page, index page and default page.

The next set of steps include more polishing and adding extra elements to our document.

  1. The text body style is configured to have the left alignment by default. Normally, one would select paragraphs and click on a paragraph alignment button on the toolbar to change the alignment. Because we are using styles, we can modify the Text Body style to have another alignment, and presto the whole document with text in the same style follow suit. In the Styles and Formating dock, at the paragraph styles tab, select the Text Body style. Right-click on the Text Body style and choose to Modify style. Find the Alignment tab and choose Justified as the new alignment for Text Body paragraphs. Click Ok and observe the document changing to the new configuration.
  2. It is nice to the section numbers on the headings, such as 2.1 Writing documents in style. To do this, we need to change the default outline numbering. Click on Tools/Outline numbering… and select to modify the numbering for all levels (under Level, click 1-10). Then, under the Numbering group, change the Number option from the default None to 1, 2, 3, …. Click OK and the number is changed in the document.
  3. Go back to the Table of Contents. You notice that the numbering format does not look nice; some section numbers are too close to the section names. To fix, right click on the gray area of the table of contents and select Edit Index/Table. In the new dialog box, select the Entries tab. Under Structure and Formatting you can see the structure of each line of line in the table of contents table. The button labeled E# is the placeholder for the chapter number. After that there is a placeholder that you can actually type text. In our case we simply click and press the space bar to add another space. We then click the All button and finally click OK. Now, all entries in the Table of contents will have a space between the chapter number and chapter title.
  4. In order to add a footer with the current page number, click on Insert/Footer and pick Index, then Default. Both the Index and the Default style of pages get to show page numbers. Then, place the cursor in the footer area and Insert/Field/Page Number. You can modify the Footer paragraph style so that the text alignment is centered. You have to insert the field in both an Index page and a Default page.
  5. The page number in the Index page is commonly shown in Roman lowercase numbers. How can we fix that? We simply have to modify the Index page style accordingly; click on the Page Styles tab in Styles and Formatting, click to modify the Index page style, and at the Page tab in Layout Settings select the i, ii, iii, … format. Click OK.
  6. It would be nice to have the title on the header of each page, either Index or Default. Click on Insert/Header and add a header for Index and Default. Then, place the cursor in the header for both styles and click to add the Title field (Insert/Field/Title). Would it be nice to put a line under the header? The header text has the Header paragraph style. In the Styles and Formatting, click the Paragraph styles tab and select the Header paragraph style. Right-click and choose to Modify. In the Borders tab enable a bottom line and click OK.

OpenOffice.org Writer in Style

You can download this sample document (.odt) from the link Using OpenOffice.org Writer.

I’ll stop here for now. There are more to put such as Table of Figures, Index of Tables and Bibliography.
It would be good to leave feedback if there is interest to work on this direction.

Update 15Mar2008: This appears to be a Farsi translation/adaptation of the article.

Droid fonts from Google (Android SDK)

Two years ago, Google bought a start-up called Android in order to deliver an open platform for mobile applications. A few days ago the Android SDK has been released and you can develop now Android applications that can run in the emulator. Android handsets are expected at some point next year.

Even if you do not plan to develop applications for Android, you can still run the emulator which is functional, includes quite a few samples, and comes with a browser shown above. To get it, download the Android SDK for your system, uncompress it and run

./android_sdk_linux_m3-rc20a/tools/emulator

An interesting aspect of Android is that it comes with a set of fonts that have been specially designed for mobile devices, the Droid fonts. The fonts are embedded in the Android image, in android_sdk_linux_m3-rc20a/tools/lib/images/system.img, a clever guy managed to extract them and a modest guy corrected me (Damien’s blog to download).

The fonts are probably licensed under the same license as the SDK (Apache License), however it is better to hear from Google first.

In the meantime, here is a screenshot of Ubuntu 7.10 with Droid.

Update: To extract the fonts from the SDK, run the emulator with the -console parameter. The emulator starts and at the same time you get a shell to the filesystem of the running emulator. You can locate the fonts in system/fonts/. Once located the full path of a file, you can extract with ./adb pull system/fonts/DroidSans.ttf /tmp/DroidSans.ttf (thanks cosmix for the tip).

StixFonts, finally available (beta)!

The STIX Fonts project (website) has been developing for over 10 years a font suitable to be used in academic publications. It boasts support from Elsevier, IEEE and other academic publishers or associations.

A few days ago, they published a beta version of the font in an effort to get public feedback. The beta period runs until the 15th December.

STIX Fonts Beta showing Greek (Regular), from STIX Fonts Beta

STIX Fonts Beta currently support modern Greek. An effort to get support for Greek Polytonic did not work out well a few years back.

STIX Fonts Beta showing Greek (Italic), from STIX Fonts Beta

The main benefit of STIX Fonts is the support for mathematical and other technical symbols. This helps when writing academic publications and other technical documents.

STIX Fonts Beta showing Greek (Bold), from STIX Fonts Beta

STIX Fonts have extensive support of mathematical symbols, symbols that exist in Unicode Plane-1.

STIX Fonts Beta showing Greek (Bold Italic), from STIX Fonts Beta

If there is any modification that we would like to have in STIX fonts, we should do now. Once they are released, they will be widely distributed. Currently, Fedora has packaged STIX Fonts and made them available already.

Ubuntu Answers…

Free and open-source software offers many challenging tasks for you to undertake. One of them is to answer questions that newbies ask.

Offering support to newbies is challenging for several reasons:

  • the problem may not have been described reasonably well
  • you need to figure out the least amount of extra information you need, and ask easy questions to the user to fill in the blanks
  • you have to take control of the direction of solution and make sure the user follows your steps correctly
  • you have to put up with the occasional demanding user

Ubuntu offers a system that users can ask questions and have volunteers answer them. It is called Ubuntu Answers. Unlike forums, here you log in to your launchpad.net account and simply write your question. You start off with a question title, and when you click Next, you are shown with potential answers from previous questions asked and are similar to yours. Really nice.

In order to motivate people to contribute, Launchpad assigns points for every answer you give, and more points for any answer that was marked that solved the problem. This is the karma value of your Launchpad account. There is a list of top contributors for different Launchpad services.

Here are some direct links

A tip to users asking questions: it is good etiquette to respond to the answers that are given to you. There are cases that a question is answered but not acknowledged that it actually solved the problem. Due to this, the solution does not appear when a someone else asks a new question.

 

What I recommend is to try out Ubuntu Answers. Either ask a question or help with answering questions. It is a good experience.

One-line hardware support (USB Wireless Adapter)

I got recently a USB Wireless Adaptor, produced by Aztech. It was a good buy for several reasons:

  • It advertised Linux support
  • It was affordable
  • It had good quality casing; you can step on it and it won’t break
  • It had the Penguin on the box and was really really cheap

When I plugged it in on my Linux system, it did not work out of the box. The kernel acknowledged that a USB device was inserted (two lines in /var/log/messages) but no driver claimed the device.

With the package came a CD which had drivers for several operating systems, including Linux. Apparently one would need to install the specific driver. I think the driver was available in both source code and as a binary package (for some kernel version).

The kernel module on the CD was called zd1211, so I checked whether my kernel had such a module installed. To my surprise, there was such a kernel module, called zd1211rw. I hope you have better chance with the URL because now the website appears to be down (Error 500).

Therefore, what was wrong with my zd1211rw kernel module? Reading the documentation of project website, I figured out that you have to report the ID (called the USB ID) of your adapter  so that it is included in the kernel module, and when you plug in your device, it will be automatically detected.

You can find the USB ID by running the command lsusb. Then, it is a one-line patch for the zd1211rw driver to add support for the device,

— zd1211rw.linux2.6.20/zd_usb.c      2007-09-25 14:48:06.000000000
+0300
+++ zd1211rw/zd_usb.c    2007-09-28 11:35:51.000000000 +0300
@@ -64,6 +64,7 @@
{ USB_DEVICE(0×13b1, 0×0024), .driver_info = DEVICE_ZD1211B },
{ USB_DEVICE(0×0586, 0×340f), .driver_info = DEVICE_ZD1211B },
{ USB_DEVICE(0×0baf, 0×0121), .driver_info = DEVICE_ZD1211B },
+       { USB_DEVICE(0×0cde, 0×001a), .driver_info = DEVICE_ZD1211B },
/* “Driverless” devices that need ejecting */
{ USB_DEVICE(0×0ace, 0×2011), .driver_info = DEVICE_INSTALLER },
{ USB_DEVICE(0×0ace, 0×20ff), .driver_info = DEVICE_INSTALLER },

What Aztech should have done is to submit the USB ID to the developers of the zd1211rw driver. In this way, any Linux distribution that comes out with the updated kernel will have support for the device.

It is very important to get the manufacturers to change mentality. From offering a CD with “drivers”, for free and open-source software they should also work upstream with the device driver developers of the Linux kernel. The effort is small and the customer benefits huge.

OpenVistA information system for hospitals and medical care

It is quite common to expect the availability of free and open-source software for common needs, such as an operating system and an office suite. What is the situation when your needs are much more advanced? Such as, when you are looking for an information system for a hospital?
Luckily, there is such a software package for an information system for hospital needs, called OpenVistA. OpenVistA comes from VistA, a public-funded medical system for the United States Department of Veterans Affairs. Due to the source of the funding, the source code of the medical system has been available with a liberal license, and gave birth to OpenVistA.
An interesting issue with OpenVistA is that the backend is written with the MUMPS programming language. This programming language is quite old with syntax dissimilar to modern languages. However, MUMPS has become popular in medical care systems and especially VistA. There are people that criticize the programming language; it is important to understand that a big piece of software working well has much more weight over the language preferences. In addition, the front-end is what the end-user uses, and in our case it is written with modern programming languages.
Screenshot of Mono frontend of OpenVistA
Traditionally, the major front-end of OpenVistA was written in Delphi. Quite recently, a new front-end has been written, in Mono. Thanks to Mono, the front-end is cross-platform and supports i18n (the front-end can be translated in many written languages).
You can try out OpenVistA straight away by downloading the OpenVistA VMWare appliance (image file that contains an installation of an operating system, configured and ready to use). The specific VMWare appliance is based on Xubuntu.
Software for hospitals is quite expensive, and is a lucrative business for software houses. However, when one takes into account that in many countries hospitals are public-funded, it is easy to understand how important it is to use free and open-source software in this case. Sadly, in many cases, hospitals make ad-hoc agreements for such software, resulting to inefficient use of public funds.