http://www.freesoftwaremagazine.com/node/2036/issue_pdf

Page 1

Issue 17



Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Issue 17 By admin PUBLISHED: 2007-04-02 Issue 17 of Free Software Magazine is here and it's a big one! Steve Goodwin talks about the evil inside every programmer in "The seven sins of programmers". Solveig Haugland has two great new OpenOffice.org howtos for you. David Horton wants to help you make waves with Audacity and Matt Barton lets us in on "What's a GNU/Linux distribution?" anyway. Eddy Macnaghten goes into open-format depth in his "ODF/OOXML technical white paper" and Ken Leyba helps you "Backup your workstation with Backup Manager". And, as always, but even more this time than usual, there's much, much more...Enjoy! Source URL: http://www.freesoftwaremagazine.com/issues/issue_017

Issue 17

1


Issue 17

2


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Welcome to Free Software Magazine—again! The site might look the same, but it really, really isn't... By Tony Mobily PUBLISHED: 2007-04-06 As many of you already know, I founded Free Software Magazine in 2004. The idea was to create a printed magazine about free software. Our focus was on the paper version, and therefore the website was somewhat neglected. The way the magazine evolved showed us that that initial decision was a mistake. People clearly didn’t want another paper magazine—the popularity of our web site, and the lack of interest in the paper magazine, showed clearly that we needed to focus more on the online audience. The first version of the web site was static, with (rather ugly) Perl scripts generating files. On top of it sat b2evolution, which allowed our authors to keep blogs. We had to personally assign articles by hand, and the system was messy to say the very least. Then I started researching CMSes (Content Management Systems). I knew what I was looking for—but what I didn’t know, was that I wasn’t going to find it. I needed something that automatically managed the article’s workflow—from the author to the editor, back to the author, and so on—and would allow everybody to see what had changed. The system needed to send assignment emails automatically, and publish the articles on a web site—on the front page, and in an organised issue. It was a lot to ask. In fact, it was too much. What I needed, was a CMS that offered a lot “out of the box”, and still had the possibility of extending it to implement the workflow I wanted. I could describe how I picked Drupal after extensive research and testing. I could describe how I discovered that it was the easiest CMS to extend, and basically allowed me to create exactly what I wanted in exactly 4 weeks, day 1 to deployment (I am a terrible programmer, and I am slow…!). The truth is, I picked Drupal because many sites seemed to use it, I knew a little bit of PHP, and because Linux Journal used it. If it was good enough for Linux Journal, it was definitely going to be good enough for Free Software Magazine! So, I did it: I brushed up on my PHP skills, I installed Drupal 4.7 (it was still an early beta), got the documentation out, got the critically important node_example.php file, and… got started. The end result was something that worked fine. However, because of a few key factors (see: poor programming skills, lack of time, an approximate understanding of Drupal, and so on), the system was anything but state of the art software. It worked! It allowed us to run the magazine, revisions, and the workflow the way “it should be”. However, because of the key factors I listed above, our jewel still had problems: the code still had comments from node_example.php; a few things were hard-coded when they should have been configurable; a few things were just plain wrong from a Drupal perspective; the module expected several key patches to Drupal, which made upgrading “less than optimal” (read: a complete nightmare); the system wasn’t tidy: several functionalities were duplicated in the theme and in various Drupal modules; unfortunately, the list goes on and on, and unfortunately this is precisely why the first version of our custom Drupal modules were, quite simply, bad software.

Welcome to Free Software Magazine—again!

3


Issue 17 It took me personally four months to work through everything I wrote, reorganise it, comment it properly, document it, port it to Drupal 5, and release it. The custom modules are now perfectly commented, there is pretty much nothing hard-coded, they play well with Drupal, they don’t require patches, there is no duplication, and so on. I am in the process of releasing these modules to Drupal 5, so that everybody out there can create their own magazine and have a neat system to organise the contents in issues and use a state-of-the-art workflow system. This will get people to improve the modules further, and will give something back to the same community that has been supporting us for such a long time. Free Software Magazine’s web site now runs on Drupal 5; we can now comfortably add many more features and know that we are using a fantastic CMS that will stay around forever. So, to sum up this editorial: we upgraded everything to Drupal 5, ported, improved and released our custom-made modules, and are preparing to roll-out more and more exciting features. So… enjoy!

Biography Tony Mobily (/user/2" title="View user profile.): Tony is the founder and the Editor In Chief of Free Software Magazine

Copyright information This article is made available under the "Attribution-NoDerivs" Creative Commons License 3.0 available from http://creativecommons.org/licenses/by-nd/3.0/. Source URL: http://www.freesoftwaremagazine.com/articles/editorial_17

4

The site might look the same, but it really, really isn't...


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Interview with Rob Fraser Free software increasingly a benefit to business IT By Mark Rais PUBLISHED: 2007-04-27 This article provides a real world perspective into why businesses move to and stick with free software. In this interview, Rob Fraser, from the premiere New Zealand open solutions company Egressive Limited (egressive.com), shares insights into why free software can benefit any business. The interview briefly covers: VPNs, spam filtration and risk mitigation, among other topics. MR: It is my hope that this interview will help encourage other organisations to consider the benefits of free software use. So let’s begin with the reasons Egressive Ltd. decided to utilise free software for development solutions? RF: There are a number of reasons. Free software tends to adhere to Open Standards, making integration easier. In some cases, we have found that free software is the only “glue” available to join disparate systems. Another reason is that the lack of license costs means a low cost of entry for prototyping a system, evaluating products, or working on a proof of concept. There is no cost penalty for adding users to a successful system, as no extra licences are required, just add the users. You get rid of all the red tape (and risk) around managing software licensing that is based on numbers of users. Of course, another is that this software is readily available, just download and run it. Free software also tends to be modular, reducing complexity without limiting future additions or modifications. And, depending on the project, there can be an enormous, global knowledge base available on the web. For most of the common issues encountered on main stream free or open source products or Linux distributions there is an almost certain chance that someone else will have experienced it before, with a solution documented. If not, there are always plenty of forums, IRC channels, and mailing lists to obtain or give assistance and exchange experience. In our experience, Linux and the many free software products that run on it are far easier to maintain, and far more flexible than many of their proprietary counterparts.

Interview with Rob Fraser

5


Issue 17

Rob Fraser, from the open standards IT solutions company Egressive Ltd MR: Can you share some specific successes? RF: There are obvious cost benefits. Recently, one of our clients mentioned that their migration from Novell Netware to free software alternatives had been significantly cheaper than any proprietary alternatives. The shorter implementation time also saved money on technical labour costs. Today another major concern is spam filtering. We get a lot of positive comments from customers regarding their use of free spam filtering solutions using MailScanner, Spamassassin and ClamAV. We deploy this solution not only to customers who use a free or open source mail stack, but also to customers using a free or open source spam filter to provide a more secure front end to proprietary email systems such as Microsoft Exchange. MR: What about Virtual Private Network installations? How can free software benefit an organisation there? RF: Yes, we’ve found OpenVPN provides a very powerful SSH-based VPN solution. Not only have we enabled customers on Windows, Macintosh and Linux to securely and effortlessly access file and print, web, database and email systems, we have a customer that has a “virtual office server”, where all of the staff in the organisation access a centrally hosted server from home offices using OpenVPN. MR: What are the key advantages for using such free software solutions? RF: Many of our customers do not want to be locked in to a single vendor. With free software they can easily change systems at a later date, and [if they purchase service agreements] they have the choice to easily change vendors if they desire, which keeps us on our toes! “Many of our customers do not want to be locked in to a single vendor” When it comes to entry costs and future growth, the systems can be expanded without incurring licensing costs. And the solutions tend to be operating system agnostic. It doesn’t matter if the end-users are on Windows, Macintosh or Linux, or if they are using Thunderbird or Microsoft Outlook; many free or open source products provide cross platform support. MR: Okay Rob, there are probably some negatives to switching. Share some of the potential pitfalls for using free or open source software? RF: I would say that there is nothing magical or unusual about free software. As with any IT implementation, it’s important to follow good practices by planning the project, specifying the requirements, evaluating potential solutions, identifying risks, and involving stakeholders and end users. I would also add that it is beneficial to have testing plans and to ensure they are implemented. We avoid “big bang” rollouts if possible, and prefer to implement in managed stages for larger projects.

6

Free software increasingly a benefit to business IT


Issue 17 Training is important, both for the staff that will use the systems, and for the staff that will install and maintain the systems. MR: What recommendations do you have for others evaluating free software? RF: Look at some of the documentation coming out supporting free or open source from places like the European Commission’s Directorate General for Enterprise and Industry, showing long term cost savings through the use of free software. Although, there will naturally be a cost of change. I recommend that they also review the success stories, because there are plenty of organisations in New Zealand using free or open source, as well as overseas. New Zealand has plenty of companies able to support free or open source too, including the large IT manufacturers and resellers. “It’s important that businesses evaluate free software for themselves in their context” Finally, it’s important that businesses evaluate free software for themselves in their context. Since cost of entry is very low [limited often to basic service fees], it is reasonable to set up a proof of concept somewhere in the organisation. They will be impressed with the cost savings and productivity increases. MR: Thank you Rob. As with numerous other open solutions and free software driven companies, Egressive Ltd. gains substantive benefits by using free software on the Linux platform. For more information regarding business use of Linux and related software, you may also benefit from my article Software development benefits”.

Biography Mark Rais (/user/27" title="View user profile.): Mark Rais dedicates his time and energy to promoting free software technology, especially among the poor and where a technology divide exists. He serves as senior editor for reallylinux.com (http://www.reallylinux.com). You can contact him at "markr" followed by the "at" symbol and then "reallylinux.com".

Copyright information Verbatim copying and distribution of this entire article is permitted in any medium without royalty provided this notice is preserved. Source URL: http://www.freesoftwaremagazine.com/articles/interview_rob_fraser

Free software increasingly a benefit to business IT

7


Issue 17

8

Free software increasingly a benefit to business IT


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

The seven sins of programmers Fixing bugs in the coder, not the code By Steven Goodwin PUBLISHED: 2007-04-11 Programmers. The system administrators worship their bit twiddling capabilities. The users exchange vast quantities of beer for new features and tools. And the project managers sell their souls when they make the magic work. But inside the average programmer’s psyche are several demons that need exorcising.

Pride This is all too common in programmers. Instead of asking whether a particular function exists, or for the best way to retrieve data from the system, a proud programmer is likely to write their own. Especially when faced with a large, or unfamiliar, code base. By re-inventing the wheel there are now two very similar routines. Not only does this increase the code size, it doubles the amount of maintenance required, creates another opportunity for bugs, and adds inconsistency. Later, when another programmer sees these two functions, they will have to choose between them. Which one will depend on their mood (are they also too proud to seek help?), who’s on holiday or who’s outside smoking, at the time! This can equally be applied to duplicate constants, member variables or structures. Code reviews… must focus on the code, not the coder Code reviews with a senior team member can help quell a developer’s pride, and guide the other developers in the appropriate direction. This is basic employee training, and one that is simple to implement. Reviews also force the developer to reason each decision made, and justify the creation of new utility routines, perhaps explaining to the lead why existing standard code was not used. To be constructive the review must focus on the code, not the coder, and support free flowing ideas, regardless of the relative seniority of the reviewers. Remember that if the developer is too proud they’ll be closed to ideas, or won’t suggest improvements.

Envy Programmers should improve themselves by learning from others, not blindly emulating them. All coding methodologies (be they syntactical or design-based) come with caveats. A programmer might inline a function with the pre-processor because he’s seen it done elsewhere, unaware of potential side effects, as in this classic example. #define SQUARE(x)

x*x

Similar evils occur when programmers move between languages. An experienced developer will typically have a specific style that he tries to crowbar into every other language. Perl written like C. Java written like Ruby. We’ve all seen the examples. Naturally, you should use the best tool for the job, and work to the strengths of that language. By trying to fit idioms from one language into another highlights the fact you understand neither. It’s a development fact of life that some languages are better suited to some tasks, so adapt to it, and close those envious eyes that look at the language you’d rather use. Remember the oft-quoted saying, “When all you have is a hammer, everything looks like a nail”.

Envy

9


Issue 17

Gluttony Not an evening at the all-you-can-eat buffet, but the problem of writing too much code. Every hour spent coding will require an extra hour of testing, and possibly two more of maintenance. And guess who gets lumbered with the maintenance? Worse still, this does not scale. A two-minute feature (or one line bug fix) may also take an hour to test. Whatever your gluttonous reasons are—attempts to impress, an under-staffed team, late night camaraderie, or personal pride—curb them. Spending the whole morning trying to unravel last nights two-minute feature is like the buffet—you get stuffed afterwards!

Lust Programmers crave pleasure; they love to “scratch their own itches”. If unchecked, some developers will write fantastic, innovative, original… and completely unnecessary, code. It could be a new graphics shader, a faster search algorithm or an entire processing engine! If you’re working on anything other than a pet project, you will probably have a schedule that must be adhered to, and a set of pre-determined priorities. These affect the whole project, and not just the wanton lust of an individual developer. Unless you are called Spock, the needs of the many, outweigh the needs of the few… or the one. Make sure any code written is actually needed. Will it get used? Or will it distract the users who, in turn, add a new plug-in system, just to make use of the code? One very common example of this is premature optimization. Without profiling the code it is impossible to tell exactly where the bottlenecks will occur. Granted, most developers can look at a function and give several reasons why it is slower than it could be, but very few can tell you want percentage of the total running time that function will occupy. Unless it’s known to be on the critical path, then it’s probably not worth optimizing at this time. The desire to write new code can also exclude the possibility of introducing middleware as a viable solution. The clich?hant is then of “Not Invented Here”. Programmer X once said, “I’m not using middleware since I don’t understand it; it’ll be just as quick to write it myself. How can I be expected to maintain something I don’t understand?” He was erroneous for many reasons. Firstly, the initial period of evaluation would give him experience with the code base, and should be a pre-requisite when introducing any new code to a project. Secondly, he’s only considered the development time in terms of coding, when in actuality much of it is taken up with testing—something any sensible middleware product would have in abundance—and as we’ve already seen, writing code doesn’t scale to the subsequent testing and maintenance phases. And finally, there are other trade-offs between write and buy, such as access to other developer forums, paid consultancy, and third party contracts which determine whether the purchase of middleware is a good idea for your specific project. Curbing programmer lust in this way allows more time spent on the important tasks. This would include writing original, novel, parts of the software and learning the middleware solution itself. After all, it is usually quicker to read, than to write.

Anger Do not code out of anger. Do not ignore good ideas, regardless from where they come. If a more junior programmer has a solution to the problem in hand—discuss it. If it works—use it! The engine programmer should not be allowed to implement his own solution just because “He’s the engine programmer”. Anger leads to hate. Hate leads to suffering. To bad code does that lead Do not code out of spite. Lead programmers: love your coders. Code reviews, for example, should raise the ability of the whole team, and not be used for leads to show off, introduce new jargon, demonstrate obfuscated syntax or exhibit other prima donna characteristics.

10

Anger


Issue 17 Do not code out of fury. Programmers: love your leads. They distribute work because it needs doing. Don’t work on somebody else’s tasks because you’re more suited, or believe it should have been yours. If you want to move into other areas of programming, talk to your lead. Develop prototypes at home. Employing enthusiasm in this manner will win more brownie points than ignoring the task list and schedule.

Sloth Don’t procrastinate! If a particular piece of code is uninteresting or difficult (like an obscure crash bug), more interesting tasks should be available to compensate. Look forward to those tasks, but don’t daydream about them. If you stop every five minutes for a coffee and chat (or more likely, a whinge) then the task will take much longer, and it will become a self-fulfilling prophecy. Instead, begin with a cup of coffee, a bag of sweets, and your favorite MP3s. Then lose yourself and knuckle down to the task in hand. It won’t be as bad as you think as even dull work makes time pass quickly if you become engrossed in it. Also, make sure all the tasks are clear, consistent and given from one manager. Opposing requests from different managers will make one of them unhappy, and starting such a doomed task is no fun for anybody.

Greed There are a couple of places where developers suffer greed. We have already touched on one, and this is a programmer’s innate desire to do too much. The proverbial “biting off more than you can chew” scenario leads to an exponential increase in testing, and a swell of code paths to verify. It can also lead to a lower quality of code since the problem domain may not be well understood by the developer assigned, and the increased workload limits their opportunity to learn. The final greedy point is directed more towards management, as everyone should feel valued—financially and metaphorically. This is especially true during crunch-time, when even the most junior programmer can work out that their hourly pay packet could be improved by working on the cold meat counter at Tesco! Paying for late night food goes without saying (I hope!), but an occasional pub evening also helps. This gets everyone out the office, and shows that management aren’t greedy with an employee’s time, either. Many ambitious people, regardless of salary, always want more. So even the lead programmer will start questioning their role and think “I’m worth more than this” when they feel unappreciated. How many times do you hear “I’m so overpaid”, compared to “I’m so underpaid”? Leads should check for warning signs, like “funny” comments in the code—“I’ll do this properly when I get a fscking pay rise!!!”. Management should be wary of stopping or limiting low-cost company perks (such as free soda) since the loss in productivity and willingness to do overtime is undoubtedly greater than the few dollars spent. Follow Dilbert. Less money for staff does not mean more for management. Naturally, the lead programmer should help prevent such sinful practices. But as responsible professionals, we should all try and curb the devil inside first. Of course, not everyone is Beelzebub incarnate, so score yourself honestly out of ten for each category, and ask a colleague to do the same for you. Then compare. I score 4, 2, 6, 1, 1, 2 and 3 on the categories above, but pride prevents me from letting you in on which scores are for which categories…

Biography Steven Goodwin (/user/39" title="View user profile.): When builders go down to the pub they talk about football. Presumably therefore, when footballers go down to the pub they talk about builders! When Steven Goodwin goes down the pub he doesnâ— t talk about football. Or builders. He talks about computers. Constantly... He is also known as the angry man of open source. Steven Goodwin (http://www.bluedust.com/blog/) a blog that no one reads that, and a beer podcast (http://www.thebeercrate.com) that no one listens to :)

Copyright information

Greed

11


Issue 17 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at http://www.gnu.org/copyleft/fdl.html. Source URL: http://www.freesoftwaremagazine.com/articles/the_seven_sins_of_programmers

12

Greed


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Free software philosophy in business Are they compatible? By Mark D. Roe PUBLISHED: 2007-05-25 When we enter the world of “free and open source software”, most of us will choose one or the other philosophy. This choice is usually made easy by the people that guide us when we enter this world. We are at a point where the philosophies behind free software, which have been heralded by Richard M. Stallman and others, are threatened; as more people make the jump away from proprietary operating systems, less of them know about these philosophies. Fewer people will weigh the decision for themselves.

What is the difference? Open source distinguishes itself from free software, seemingly, only in the sense that you don’t have to deal with all of that “mushy” social stuff. Who needs to be socially responsible when the GPL and other copyleft licenses protects us, right? Open source is concerned with “marketing” and what proprietary vendors of software or large business executives think. And they’re the same people who watched the advent of the personal computer industry and its subsequent lock down by patents, end user agreements and copyrights, and looked upon it as a model to be copied in all other business. Many of these executives are the same that idolize the “achievements” of Steve Jobs and Bill Gates. The Open Source Initiative says we must not mention the social agendas, but that we must focus on all of the things that make FOSS technically superior. Further, they assert that the open model, which they say makes FOSS what it is, would have developed even without the existence of the social concerns within the software world that fueled the free software movement in the beginning. It is absolutely essential to mention our political and ethical vision, regardless of what anyone thinks The free software movement, of course, is also concerned with the technical advantages of an open model of development. However, they understand that it is absolutely essential to mention our political and ethical vision, regardless of what anyone thinks. There is no need to try to hide the social agenda—especially when it is explained with fortitude. How could any right-minded business man do anything but revere these philosophies? Most of the time, it is not what you say so much as how you say it. The philosophies behind our current open model are about as political as anything else, about as political as you make it out to be, and they are nothing new. These ideas work in the business world. There are many examples of open models working well in the business world. The Free Software Foundation is working hard to maintain and defend the GPL and to spread the true value (freedom) that comes with this technically superior software.

What it all means Our open model of development would not have been spurred on as quickly or decisively, if not for the social concerns. It is also true that the business world’s acceptance of this open model would probably not have developed as quickly without the less socially concerned actions of the open source movement. All the same, they left out the social concerns, feigned comradery with proprietary developers, and failed to mention the most valuable asset of free software; they were just looking for the easiest solution to the problem of corporate adoption. The easiest solution is hardly ever the best solution. We can increase the adoption of free software without having to be quiet about the problems of proprietary software.

What it all means

13


Issue 17 We can increase the adoption of free software without having to be quiet about the problems of proprietary software It can be difficult to talk about these issues but there are methods that we can employ. As Richard Stallman put it: “Attracting users to free software is not the whole job, just the first step. Sooner or later these users will be invited to switch back to proprietary software for some practical advantages… why would users decline?” RMS goes on to state that the user must be taught that these freedoms are advantageous to them. Microsoft may offer gratis copies of Windows to more users in the future if their share of the market plummets far enough (though without the other freedoms it would not be “free software”). We would be fools to assume that Microsoft could not make a technically superior product under a closed license. The value of free software is not always evident, but it must be understood if we expect our community to continue. In particular, we must explain its value to those within the business world because they are in the best position to corrupt it if they don’t value it.

Free software and business Many free software proponents find it difficult to explain to businesses how a distributor of free software can make a profit. The first step is to ensure they understand that this is free as in freedom, not free as in gratis. I like to draw large pictures up on their whiteboards, if they have one, with Red Hat, Ubuntu, and Novell represented by big ovals. Show them how these companies make their money, stress the amount of competition seen in the environment. I always like to draw a line straight down the middle of the board; proprietary on one side and free software on the other. On the proprietary side I show a tiny oval called Apple and a huge one called Microsoft and on the free software side I draw the three companies aforementioned in equal sized ovals. I mark that side “Free”. I explain how all of these companies make money and compete for their business and then I draw a line dividing Apple and Microsoft. I draw another on the other side, this time right through Red Hat, Ubuntu, and Novell. I tell them that one of the advantages of free software is that, if the company they chose were to ever go out of business or, hopefully not, “screw them over”, they are guaranteed compatibility from one of the other distributors. You can’t have that freedom when using a proprietary system and are victim to that company’s whim.

Explaining how a free software distributor can make money This is the beauty of freedom, they needn’t worry about one piece of software, that they rely on heavily, no longer being developed or sold. They may take it and develop it themselves. They can freely change that program or hire someone to do it for them, perhaps one of the original developers. They can put the software on every toaster, coffee maker, and printer in the company and they don’t ever have to worry about being sued over license arrangements because one of their employees decided to take a copy home and upload it through bittorrent. Start off with the stuff that they know, then work into telling them the real value of free software. I love to use examples, for instance, the road systems…

14

Free software and business


Issue 17 Start off with the stuff that they know, then work into telling them the real value of free software Early on in the development of the automobile in the United States, American citizens would have been mortified if one or two companies had secured rights to the method with which roads were made in the country, charging large fees to simply access these roads. If the process by which the roads are made were kept secret, we would not have seen much improvement in the process and the only roads maintained would have been those most useful to the one or two companies and/or those paying off high dividends. All other roads would have been ignored and potholed, abused and unattended; doing plenty of damage to people’s cars. We can see this now with the PC industry. With free software we get perspectives on all needs from the most common software to the most niche applications. Roads were quickly ramping-up high-speed transport by which business and economy could thrive and grow. The United States’ GNP surged because of this newest of avenues (excuse the pun). It became, in short order, an integral part of society. Software, now, is no different. Is a free and open highway and road system, which any person or business may use freely, lacking merit for profit or business? No. Do we find it difficult to talk of the business advantages of a free road system—one with which any company could, with the proper training and safety measures, lay down asphalt for a profit? No. Then how could anyone label a socially conscience software movement “anti-free enterprise” or even feel uncomfortable about it? Is it because it gives us even more freedom since you don’t need a lot of money to make a large impact in software? Why should we feel the need to hide the fact that there is a philosophy behind this? Free enterprise does not require closed business models and secrets, the transparency and peer review within the free software community is nothing to be ashamed of and should, in fact, be emulated across the board throughout the business world. We should be proud of this. Without the road systems the way they are, the United States would not have developed the way that it did. Software, as it is today, is an integral part of society—too important to be controlled by one company. It is irreversibly tied into our social, governmental, economic, and personal lives. When we are successful in replacing 99% of the proprietary software world, our descendants will look back and laugh at the concept of a world full of locked down, black-box software. Software, as it is today, is an integral part of society—too important to be controlled by one company There are many more great examples and illustrations to use, if you look hard enough.

Conclusion: What is at stake Does the GPL protect us by itself? No, it does not. Free software can be taken away from us at any moment. There is no end to what the enemies of free software can do if they put enough money behind it. It takes diligent people within the community and within the business world to maintain this gift passed down to us. Will you be one of them and will you initiate others who will understand the true value of free software? If we don’t value our freedom in free software, we will pay in the most costly way possible, we will lose it.

Biography Mark D. Roe (/user/4399" title="View user profile.): Mark D. Roe is a student and employee of a local college working toward his bachelor in computer science.

Copyright information Quotes are taken from Free Software Free Society, by Richard M. Stallman (C) 2002 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this article provided the copyright notice and this permission notice are preserved on all copies. Source URL: http://www.freesoftwaremagazine.com/articles/free_software_philosophy_in_business

Conclusion: What is at stake

15


Issue 17

16

Conclusion: What is at stake


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Desktop diagramming with Dia and Kivio Move that stencile By Alan Berg PUBLISHED: 2007-06-01 Don’t let the simplicity of use fool you. Both Kivio and Dia, two free software diagramming tools, are very efficient at what they do. If you need to design a complex flow chart or create a no-fuss UML diagram then you could do a lot worse than to choose either of these packages. The tools have 90% of the expected functionality with only 10% of the hassle and fuss that more complex and unnecessarily feature rich proprietary diagramming tools deliver. The learning curve is small and the end result is potentially professional. GNOME and KDE are the predominant desktop environments for GNU/Linux. Both environments sport their own office suites; these two office suites try hard to contend with the mastery of OpenOffice; it is important to note OpenOffice does not have a diagramming tool such as Microsoft Visio. You may argue with some degree of success that Impress or Draw from OpenOffice may mimic the functionality, but Impress or Draw’s emphasis is on presentation and vector based drawing respectively and not on diagramming using precreated symbols. In this article, I will briefly mention how to install KOffice’s Kivio and GNOME Office’s Dia application and quickly tour the products. I personally believe that both tools perform their specified function well and are amazingly easy to learn—the basics are absorbed within five minutes. In the end, because of their fundamental equality, personal bias may pull you to choose either one of these applications.

Installation I have chosen Ubuntu 6.10 as the OS for this demo, which is the newest version of Ubuntu at the time of writing. Don’t be fooled by the fact that the applications are part of KOffice or GNOME Office: both will run happily under either of the two desktop environments. Before we start you might want to install the Adept package manager, which the KDE environment may be missing: to install this utility simply execute the following from the command line: sudo apt-get install adept libqt-perl

You should now be able to launch Adept via K menu/System/Adept Manager Manage Packages To install Kivio (version 1.5.2) launch Adept and fill in the system admin password that you use with sudo; via the search box at the top of the Adept window, search for “kivio”. You should now be seeing a view similar to figure 1. The packages Kivio and Kivio-data should be set to the status of “install requested” and then click on the green tick icon at the top of the dialogue. You now have a working version of Kivio executable from both GNOME and KDE.

Installation

17


Issue 17

Figure 1: Adept at work What I refer to as the “GNOME office” is not really an office suite but rather a collection of tools, which includes the well-known and respected AbiWord, Dia and a few other assorted applications. To install Dia version 0.95 via the GUI from within GNOME, launch Synaptic Package Manager via Applications/Add Remove; you will need to fill in your admin password when prompted. Select Graphics/Dia Diagram Editor as shown in figure 2, then click on OK.

Figure 2: Installing Dia in Synaptic To install from KDE you are able to search for “dia” in Adept and install.

Dia basics Once Dia has started, you will find yourselves with two separated windows as shown in figure 3. The main left hand window is the drawing plane and the right is the diagram editor. If the left window is missing or you have removed it by mistake, simply go to the Diagram editor and select File/new. To select different symbols click on the sheet name. In figure 3 the name is “Network”, but normally you start with the “Basic” flow charting sheets: select other sheets and choose the one you consider relevant. Back in the diagram editor drag and drop the symbols across onto the drawing pane. Underneath the symbols sit icons that allow the creation of lines of various thicknesses, colours and structures. Above the symbols lie special icons for importing images or connecting objects with different shapes; ‘T’ stands for text and obviously allows for the annotation of your diagram. With this basic functionality, you will be able to create reasonable diagrams within minutes. The failure of some applications is their developer’s desire to include every function imaginable which results in overly

18

Dia basics


Issue 17 complex menu structures that have a significant and inappropriate learning curve. Dia follows the highly effective UNIX spirit of staying focused and doing its specified function well. To save a file select File/Save from the drawing plane itself. You may also export the current project to many different formats including TIFF, JPEG and SVG. The ability to save to SVG is a form of future proofing as SVG is an XML format that stands a significant chance of becoming the graphics standard for web browsing. XML is just text and is, therefore, much easier to manipulate on the fly than a binary such as JPEG. Dia activates two other dialogues by pressing F8 or F9 respectively, or by visiting the file menu option of the diagram editor. F8 activates the diagram tree which represents all the symbols within your drawing as objects; right clicking on an object in the tree allows for easy access to the property dialogue where you can change properties such as colour and line type: this efficiency makes rapid and consistent editing possible. Pressing F9 activates a sheet and object dialogue that allows you to add and move objects (such as computers or flags for example) across different sheets. For example, you may move a computer symbol from the sheet “Cisco—Computer” to “Networks” if desired. You may also import SVG like graphics as objects, but more on this later. The drawing plane itself also has a number of menu options. “Diagram” allows you to separate a drawing into layers so that you can manipulate objects on one layer without affecting another. The “Objects” menu option enables you to send objects backwards and forwards so as to be behind or in front of other objects, with the ability to set transparency for background objects. This feature allows for sophisticated and pleasing diagrams. In summary, Dia is easy to learn and definitely not overly complicated, yet it still manages to deliver the functionality required to produce detailed diagrams that are pleasing to the eye.

Figure 3: Dia at start up

Kivio basics Thankfully, Kivio is just as simple and straightforward to use as Dia although it has its own slightly different personality. On starting Kivio via the menu option Office/Kivio the standard KOffice startup occurs. Select and double-click “Basic flowcharting”: Kivio should now run with a dialog similar to that in figure 4. In the center of the screen you should see the drawing plane and on the left hand side of the screen the basic flow charting stencil with all its related symbols (objects). To create your first simple diagram, drag and drop the object to the middle of the page , select the object and resize it and then double click the new object to add text.

Kivio basics

19


Issue 17

Figure 4: Kivio in action To add another stencil select the top menu Tools/Add stencil set and then select the extra set that you wish to add, or click on the relevant icon underneath the main menu. If you’re not sure which icon does what, place your mouse pointer over each icon and wait a few seconds until a tool tip appears explaining the current icons purpose. The view menu allows you to add a grid to the drawing plane and gives you the option of splitting the pane into two drawing areas—a nice feature especially in the age of 21 inch TFTs. The right side pane allows you to gain a quick overview of the whole page even when you are zoomed in on a particular area in the left pane; the layers tab allows for adding and removing of layers while the object tab shows an overview of all objects in the page; the bottom half of the right hand tab displays the size properties of the currently selected object. Note, Dia has a slightly larger set of properties that you can manipulate. A second tab here allows you to protect more of the object from change which is handy when you want to perform bulk actions with the exception of a few objects. For a more detailed basic tutorial, visit the “Help” menu and choose “Kivio handbook”.

File formats and round trips Microsoft Visio has a proprietary .vsd file format that potentially has licensing dangers associated with it; therefore, both Dia and Kivio do not and should not import or export this format. This is unlucky for the end user within a diverse organisation and a good example of why, whenever possible, you should only accept tools that can output directly to open standards. The wish to enable documents from one application to work effectively with another has come to the fore ultimately because of the previously stated frustration of end users: the effects of incompatibility. This swelling of frustration was, in a large part, due to closed file formats. Therefore, two questions about the possibility of making “round trips” with the documents produced in these applications emerge. The first: can stencils be imported and exported between both applications; the second: can we create a diagram in one to later be manipulated in the other. Let’s try “round tripping” the diagrams first. There is no direct import or export function between the native file formats, Dia however, has many more import options than Kivio: Kivio can only import its own native format at present, though it would not surprise me if the hard working developers had eliminated this issue by the time you have read this article. Exporting is rich in both applications and mostly involves various graphical formats. Exporting from Kivio to Dia turned out to be more difficult than expected as there was no direct import option in Dia for files created in Kivio. Dia does, however, allow you to directly add images as objects via CTRL + i, so by exporting the file from Kivio as an image you should be able to achieve the desired end result. Exporting directly from Dia to Kivio appears to be impossible due to the limited import facilities of Kivio.

20

File formats and round trips


Issue 17 All modern word processors can use the graphical exports features of both tools, however, it is clear that Dia has more import options and therefore is more likely to function seamlessly within a diverse software environment. Further, the issues with compatibility will probably force you, or your ICT department, to choose one of the other products as your diagramming tool. I hope and expect this barrier to adoption will fall as we move into the open document era. Stencil imports are another nice-to-have feature. One handy Sourceforge project for Kivio is xfig2sml. xfig-stencils-0.1.tar.bz2, a resource in their download section which contains 900 stencil objects. The archive dates back to 2001 and imports directly via File/Install stencil set. Kivio successfully displays the top-level directory structure, but sadly not the underlying objects. This is an issue with Kivio not being able to display a deeply nested directory structure accurately - you can eliminate this problem by flattening the archive out. As a result it is easier for a beginner to buy stencils or a stencil making application from the company “theKompany”. Kivio can also recognise Dia objects and the Ubuntu package has the Dia stencils already included. Dia has its own .shape format for storing symbols that is a version of SVG with some extra information for icons and connections. You may load this XML based file via Diagram Editor/File/Sheets and objects.

Conclusion In conclusion, the ability to import/export stencils is possible; realistically to use this function efficiently requires mid-level knowledge and a significant amount of experimentation.

The future of the common desktop The free software market is a tough place where there are many products competing to be the best in their given field. There are more than a few excellent Windows managers—GNOME and KDE being the best known and with the most momentum behind them. Unfortunately, because of this competitiveness, there is a natural degree of repetition of their development efforts. The removal of technical barriers such as the ability to import and export files between similar applications and improvements in some of the subtler details of the applications, i.e. compatibility between stencil sets, may play a significant role in the further acceptance of the GNU/Linux Desktop. I, therefore, welcome the initiative of Portland - a joint OSDL/Freedesktop.org effort. The first results of this project can be seen in the tools XdgUtils that help with common installation tasks between the desktops. Further, I welcome the ever nearer and brighter future of the Open Document Format and the SVG and XML formats in general that have already opened the way to consistent interoperability between similar applications.

Acknowledgements I recognize that it is easier to be a critic than to build a tool that many use with pleasure: well done to the KOffice and GNOME office developers whose efforts allowed me to write this article.

Bibliography Dia—http://www.gnome.org/projects/dia/ GNOMEoffice—http://www.gnome.org/gnome-office/ KOffice—http://www.koffice.org/ KDE-Files—http://kde-files.org/ Portlandproject—http://portland.freedesktop.org/wiki/

Bibliography

21


Issue 17 theKompany—http://www.thekompany.com/products/kivio/faq.php3 Xfig2sml projecthomepage—http://sourceforge.net/projects/xfig2sml/

Biography Alan Berg (/user/8" title="View user profile.): Alan Berg Bsc. MSc. PGCE, has been a lead developer at the Central Computer Services at the University of Amsterdam for the last eight years. In his spare time, he writes computer articles. He has a degree, two masters and a teaching qualification. In previous incarnations, he was a technical writer, an Internet/Linux course writer, and a science teacher. He likes to get his hands dirty with the building and gluing of systems. He remains agile by playing computer games with his kids who (sadly) consistently beat him physically, mentally and morally. You may contact him at reply.to.berg At chello.nl

Copyright information This article is made available under the "Attribution-NonCommercial-Sharealike" Creative Commons License 3.0 available from http://creativecommons.org/licenses/by-nc-sa/3.0/. Source URL: http://www.freesoftwaremagazine.com/articles/kivio

22

Bibliography


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

What’s a GNU/Linux distribution? Some tips for beginners By Matt Barton PUBLISHED: 2007-05-16 By now, almost everyone who has a computer has heard about something called “Linux”. Usually, what they hear goes something like this—“Well, Linux is free, but it’s very difficult to use. Don’t try it unless you’re a computer expert”. There is also generally talk about how “Linux” is incompatible with equipment like digital cameras, printers, and games. In short, “Linux” is generally thought to be a free but experts-only operating system. Fortunately for those of us who aren’t computer experts, almost all of these “facts” about “Linux” are completely wrong.

Free as in what? First, I’ll talk about the “free” part. You may have wondered why I’ve been putting quotation marks around the word “Linux”. The reason is that folks working on this operating system have a different idea about how they should be rewarded for their work. It’s hard work making a program as complicated as an operating system, and a great many talented people have put years of their lives into building, refining, and expanding this code. One of these individuals was Linus Torvalds, who created a kernel named Linux. A kernel is what helps your computer’s hardware (hard drives, motherboards, memory, and so on) communicate with your software (word processors, spreadsheets, and games). Without a kernel, your computer and all of your software would just be a pile of junk. However, a kernel by itself isn’t very useful, either. What Linus and other folks were able to do with the Linux kernel was combine it with a bunch of other very useful free software created for a planned operating system called GNU (Gnu’s Not Unix). In short, what people generally mean by the word “Linux” is Linus’ kernel combined with all of the GNU programs, which together function as an operating system. Now, for the same reason that Torvalds likes people to know the role he played in creating his kernel, Richard Stallman and all the GNU folks don’t want people to forget their work. After all, free software programmers, unlike their Microsoft counterparts, don’t get paid when people buy their code. Instead, they make money by trading their skills. In short, if people use “Linux” and really enjoy it and find it useful, they might decide to hire the programmers who worked on it to help them develop new applications. For this reason, many of us insist on calling this operating system “GNU/Linux” rather than just “Linux”, because leaving off the “GNU” is, in effect, ripping off the people who gave us all this great software. In short, for the same reason that Microsoft doesn’t like it when you copy their software without paying for it, free software advocates don’t like it when you refuse to “pay” the GNU folks by refusing to acknowledge their hard work with three letters and a slash! Many of us insist on calling this operating system “GNU/Linux” rather than just “Linux” Now, there’s more to this “free” concept than just not having to pay anything. If a piece of software is legal to copy without having to pay anyone, we call it “zero cost”. If you see a box of mints at your favorite restaurant, and a little sign beside them reads, “Free, Take One”, that’s zero cost. On the other hand, if you hear someone saying things you disagree with, but still respect his freedom of speech, then you’re closer to what the “free” in “free software” is all about. To make a long story short, a piece of “free software” has a built-in “Bill of Rights” that gives the folks who use the program a lot more rights than they’d ever get from a proprietary program—and, by “proprietary”, I mean software that comes with a whole bunch of stipulations about how it can legally be used. In a great many cases (such as Microsoft Windows), one of these stipulations is that people who buy the software can’t make copies for their friends and neighbors. Those friends and neighbors

Free as in what?

23


Issue 17 will have to buy their own copies from Microsoft. However, while there are a whole host of other rules and restrictions, the main point to keep in mind is that free software gives more power to the user of the software, whereas proprietary software gives more power to the maker or copyright holder of the software. On the other hand, not all “free software” is available for zero cost. You might very well find a free software developer selling all sorts of free software. If this sounds like a contradiction in terms, just remember that “free speech” doesn’t mean that you can walk into Barnes & Noble and take whatever books and magazines you want without paying for them. What it does mean is that the government can’t tell Barnes & Noble which books they can and can’t sell, or publishers which books they can or can’t publish. There’s more to this “free” concept than just not having to pay anything

GNU/Linux for ordinary folks Okay, so I’ve talked a bit about one of the misconceptions. The other misconception that we should talk about is the one about GNU/Linux being suitable only for computer experts. This may have been true a few years ago, but now it’s just as easy to run GNU/Linux on your computer as it is to run Microsoft Windows or Apple’s Mac OS X. Of course, if you stop and think about it, neither of these proprietary operating systems are necessarily easy to install, either. Many of us just use the operating system (or, OS) that came with our computers—the ones that were pre-installed by companies like Gateway, Dell, or Apple. If you’re happy with your OS, you may feel little desire to try something else. On the other hand, if you’re tired of having to pay for upgrades, need to install an OS on a new computer, or are just fed up with “DRM” and all the user-unfriendly licensing agreements that go with proprietary software—well, you’re a great candidate for GNU/Linux. There are many more people just like you who would be running GNU/Linux on their computers instead of Microsoft _Windows_ if they just knew about these “easy-bake” distros Now, when I said that GNU/Linux was as easy as a proprietary OS, I had in mind one of a few “distros” intended to be easy for non-computer experts to install and operate. No doubt, there are many more people just like you who would be running GNU/Linux on their computers instead of Microsoft Windows if they just knew about these “easy-bake” distros. First, let me tell you what I mean by “distro”. The word “distro” is short for “distribution”, which, more or less, means the particular package of software you get from a particular vendor or company. Although all GNU/Linux distros include the kernel and a few important programs, others are tailored to meet the needs of different groups. Obviously, someone installing GNU/Linux to use on a powerful server has different needs than someone who just wants to surf the net, play games, use a word processor, and so on. In short, there are distros that are definitely more suited to experts—Debian, for instance—but there are plenty of others that are excellent for ordinary folks. The most popular of these easy-bake distros are Ubuntu, SimplyMEPIS, and Xandros. Anyone who has ever successfully installed a new program on their computer can install these distros. Furthermore, anyone who is comfortable using Windows or a Macintosh will be right at home.

Ubuntu Of these three, Ubuntu is the most popular at the time of writing. The word “Ubuntu” is an African term meaning “humanity to others”, and that’s exactly what the folks behind this distro are all about. Essentially, with Ubuntu you get everything you’ll probably ever need to run on your computer with one simple download (or CD). The installer is just as easy to use as any “wizard” you’ll find on Windows, and you’ll soon have a free OS and a whole host of very useful programs such as Sun’s OpenOffice suite, which includes a word processor, spreadsheet, database, and presentation slide-show maker. Also, Ubuntu has an automatic update system just like Microsoft’s. Every so often you’ll be notified that a new update is available for your computer. With just a few clicks, you’re good to go with the latest patches and fixes. What could be easier? Furthermore, Ubuntu is a very colorful and stylish interface with a charming personality. Read up on Ubuntu at the official web site and see for yourself!

24

GNU/Linux for ordinary folks


Issue 17

SimplyMEPIS SimplyMEPIS is another distro that makes it hard to mess up. One of the best things about this distro is that you can try it out before actually installing it to your machine. That way, if you don’t like what you see, no problem—just take out the CD and go back to business as usual. SimplyMEPIS is managed by a smaller team than Ubuntu, but they’re very committed to offering a stable and “no frills” OS that is easy as possible for new users to operate. Furthermore, if you have lots of devices connected to your computer (cameras, scanners, external drives, etc.), then you’ll find that this distro allows you to use them without any trouble. If your main concern is finding an OS that won’t have you bent over a manual or searching the net for hints on how to get something done, then you ought to give SimplyMEPIS a chance to impress you. Check out the website and see what this distro has to offer.

Xandros Desktop If you’ve been using Windows XP for a while and don’t care to have to learn a bunch of new tricks, then you’ll probably find Xandros Desktop the easiest way to slip into GNU/Linux. This distro is aimed at both businesses and regular users, and is available in both zero cost and premium versions. However, Xandros is also the least free distro, with certain stipulations. You aren’t allowed to legally install the software however you please, but only as the Xandros Corporation permits. This restriction is what Xandros hopes will keep people buying their premium version. The zero-cost version, called Xandros Open Circulation Edition, is limited to non-commercial use, which means anyone who isn’t using the computer as part of a business. To put it simply, although the bulk of software included with the Xandros Desktop distro is free software, there are also several key non-free (proprietary) programs included in the mix. For this reason, I wouldn’t advise trying this distro unless you’ve tried the others and just aren’t satisfied. Compared to purchasing Windows, Xandros is much cheaper (only $40 for the basic and $75 for premium editions), and there’s no arguing with the simplicity and sleekness of the interface. To learn more about Xandros Desktop, visit their product homepage. One thing is for sure: You no longer have to be a “computer geek” to run GNU/Linux on your home computer

What now? One thing is for sure: You no longer have to be a “computer geek” to run GNU/Linux on your home computer. With Ubuntu, SimplyMEPIS, or Xandros Desktop, you can be up and running a great operating system with no fuss. Furthermore, if you choose Ubuntu or SimplyMEPIS, you will have entered the world of free software, which is far more democratic and user-friendly than any proprietary OS. Not only will you save big money on software, you’ll also have more freedoms to use the software the way you want to, including making copies for your neighbors. Finally, you don’t have to take a big risk with any of these products. With the “Live CD” option, you don’t have to install anything on your hard drive until you’ve had a chance to give the OS a thorough test and made 100% sure it meets your expectations. There was a point when installing GNU/Linux was a major step—a step over a cliff for most of us ordinary folks. You needed a heap of technical knowledge and expertise to install and operate this OS. Nowadays, this isn’t the case. Anyone with even the most basic skills can make the switch to GNU/Linux. It’s easy, inexpensive, and the best thing you could do for the future of software. Don’t let the nay-sayers, ignoramuses, or wily salesmen con you into parting with your hard earned money to buy software that dictates how you should use it! Use your common sense and give one of these distros a try—see for yourself what the free OS has to offer.

Biography Matt Barton (/user/29" title="View user profile.): Matt Barton is an English professor at St. Cloud State University in Minnesota. He is an advocate of free software, wikis, and the Creative Commons. He also studies and writes about videogames and computing history. Matt also has blogs at Armchair Arcade (http://armchairarcade.com/neo/blog/4), Gameology (http://www.gameology.org/), and Kairosnews (http://kairosnews.org/user/195).

What now?

25


Issue 17

Copyright information This article is made available under the "Attribution" Creative Commons License 3.0 available from http://creativecommons.org/licenses/by/3.0/. Source URL: http://www.freesoftwaremagazine.com/articles/what_is_a_distro

26

What now?


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Making waves with Audacity Using free software to create a relaxing, virtual trip to the shore By David Horton PUBLISHED: 2007-05-11 For me there is nothing quite as relaxing as the sounds of the beach. The slow crashing of waves and the gentle lapping of water in the tide pools really helps me find my inner calm. Of course, I could do without the smell of rotting fish carcasses, the constantly screeching gulls and the looming threat of melanoma. So I decided to create my own virtual beach experience using some free sound clips from the internet and the free software package called Audacity. I’ve got all the relaxation without the annoying dead fish, dive bombing birds and sunburn.

Introduction Using environmental sounds for relaxation is nothing new. The white noise and repetition of waves or waterfalls or even a gentle rain can help a person tune out the noisy, modern world and find calm. I know it helps me relax. The big question is, do I want to buy prepackaged nature sounds or try my hand at creating my own. Plenty of retail outlets would be happy to take my money in exchange for nature sounds on CD or a fancy new environmental sound machine. There are some pretty convincing recordings out there and I must admit it was tempting to hand over a little hard earned cash for some instant gratification. Of course, if I had chosen that route this would be a very short article. In the end, I decided to use Audacity, one of my favorite free software applications, to create my own virtual trip to the beach. Follow along in this article as I cover each step as it relates to creating a virtual trip to the shore The process of creating environmental sound clips, or any sound clips for that matter, with Audacity is not terribly difficult. There are only a few basic steps. 1. Install Audacity 2. Find the sounds you want 3. Bring the sounds into Audacity 4. Mix the sounds together in an interesting way 5. Prepare a final audio file in a common format Follow along in this article as I cover each step as it relates to creating a virtual trip to the shore. In the end you will hopefully find your inner calm. If nothing else, you will learn quite a bit about how Audacity works and how you can use it to make all sorts of audio projects.

Downloading and installing Audacity The first thing I need to do is install Audacity on my computer. I’m a GNU/Linux user so I was able to find a packaged version of Audacity on my distribution CD-ROMs. If you are a penguin fan too, you’ll probably find Audacity on your distro’s install media. If you’re planning to work through this project on a Mac or a Windows machine you’ll want to visit the Audacity project web page. This is where you can find the latest downloads and installation instructions for your operating system.

Downloading and installing Audacity

27


Issue 17

Finding the essence of the ocean The next step in my project is to find the ocean sounds that I want. Audacity has the capability to record sounds directly from a microphone onto the computer’s hard drive. This would be the best way to get authentic ocean sounds. But, unfortunately, I live hundreds of miles from the nearest ocean. So I did what any computer geek would do and downloaded some cool ocean sounds from the internet. A quick web search for the terms “free”, “ocean”, and “sounds” came up with some good hits. I found a couple clips from a site called Shockwave-Sound.com that really fit my idea of what a relaxing day at the beach sound sound like. Specifically, I found a clip called “oceano 2 sound” that captures a big wave crash and another clip called “Ocean lap (ocean surf)” that reminds me of water slapping against the hull of a boat. Both of these sound clips are recorded in the WAV file format and are easy to import into Audacity.

Capturing nature in a computer Once I have my sound clips from the internet, I need to get them into Audacity. Opening WAV files in a sound editor is just like opening documents in a word processor. I simply start up Audacity and choose Open… from the File menu. I then navigate to the location of the oceano2.wav file and click OK. Once the file is loaded, I can click on the big, green play button to hear the sound of a wave crashing onto the shore. Opening WAV files in a sound editor is just like opening documents in a word processor I also downloaded a clip of lapping water that I want to use in my project. However, I need to load this file a little differently. This time I need to choose Import Audio from the Project menu, navigate to the oceanlap (Ocean Surf).wav file and click OK. This way I get both clips in the same Audacity project instead of opening them in two separate windows.

Figure 1: Sound clips opened in Audacity Now when I click on the play button I hear both sounds at once. If I want to hear the new, lapping ocean sound all alone, I can click on the Solo button just to the left of the waveform display. This area is called the track control panel and contains some of the information and controls that I’ll use for this project. For now I’m only interested in the Solo button. I’m satisfied that the lapping water clip sounds good by itself so I’ll click the Solo button once again to deselect it.

The ocean (remix) Now that I’ve gotten a couple of interesting sound clips into Audacity’s buffers, I can start the process of editing and mixing them. This is where the cool stuff happens. Once you’ve gone through these steps, feel free to revisit this section and add your own personal touch to the editing and mixing.

28

The ocean (remix)


Issue 17

Naming tracks Before I get started editing, I want to make my life a little easier and give some meaningful names to the tracks I’ll be working on. I can do this clicking the downward pointing arrow on track control panel and selecting Name… from the pop-down menu. Since the first track I loaded sounds like a crashing wave, I’m going to name it just that. I will name the second track “lapping water”. You can choose any designations you like, but “crashing wave” and “lapping water” are the names I will use when referring to the tracks in this article.

Copying and pasting Now that I’ve devised a way to keep the two tracks straight, I need to decide what kind of editing I want to do. One of the first things that jumps out at me is that the two clips are drastically different in length. The crashing wave lasts about twice the amount of time as lapping water track. I can take care of this by copying and pasting the lapping water track so that it repeats itself. I select the entire length of lapping water by clicking on the blank area of the track control panel. It really doesn’t matter where I click as long as it’s not on one of the buttons. When the track’s waveform is highlighted, I can use the Edit menu to Copy the selection. Once this is done I am ready to paste a second copy of the track at the end. To find the end of the track I’ll use the Edit menu again and select Move Cursor…→to Track End. After that, a third trip to the Edit menu reveals the Paste option and I have effectively doubled the length of lapping water. A quick tap of Home on the keyboard and a click on the big green play button will let me listen to my editing job. When the track’s waveform is highlighted, I can use the _Edit_ menu to _Copy_ the selection

Adjusting volume In the end I want to create a virtual ocean experience that lasts longer than the seven seconds of sound I currently have. One way I can do this is to use the same trick I used to extend lapping water and just repeat the whole project over and over again. To see how this would sound, I hold down the Shift key right before I click the play button. This puts Audacity into loop-play mode and the tracks will repeat until I click stop. This seven second loop would be pretty annoying in a music track, but for an environmental sound track repetition can be relaxing. My repetitious virtual ocean is sounding pretty good, but there are a few things to tweak. For one, the crashing wave track ends slightly before the newly extended lapping water track. This incongruity creates about a tenth of a second jolt where the sound level drops, but it can be easily solved. Looking at the waveform display, I can see that the bulk of the sound in the crashing wave track happens between 0.5 seconds and 5.5 seconds. The rest is just background noise and can be faded. I can use my mouse to highlight the section of crashing wave between 0 and 0.5 seconds. Then I select Fade In from the Effect menu. I can use a similar procedure on the last 1.5 seconds of the track, except this time I’ll choose Fade Out.

Figure 2: Fading the crashing wave

Naming tracks

29


Issue 17 The jolting drop in sound is gone and the next thing I want to fix is the relative loudness of the two tracks. I think of crashing waves as very powerful sounds, but right now my crashing wave is about the same volume as the lapping water. I can easily lower the volume of the lapping water track by using the gain control on the track control panel. If I slide it to the left three notches I get a 9 dB drop in gain which results in lapping water being less obtrusive and crashing wave sounding more powerful.

Creating the illusion of stereo My virtual ocean is coming along nicely, but somehow it still sounds a little flat. I can add some depth to the sound by making it playback in stereo. Since I am working with monaural clips, I have to employ a little bit of creative trickery to make it sound like a true stereo recording. I’ll create the illusion of stereo by having the wave sound move from the left to right as it crashes onto the shore. It may sound like a complex task, but I can do it all using techniques I’ve already employed. I’ll create the illusion of stereo by having the wave sound move from the left to right as it crashes onto the shore I first create a new track by choosing New Audio Track from the Project menu. Then I copy the entire waveform from the crashing wave track into the new track. I use the same technique of selecting and copying as I did with the lapping water track, except this time I’ll paste the contents of the clipboard into the new track. Now that I have two tracks, I can use the track pop-down menus to assign one of them to the left channel and the other to the right channel. The entire left channel track can then be faded out while the entire right channel track is faded in, giving the appearance of the crashing wave moving left to right. It sounds pretty convincing when I listen in loop-play mode.

Figure 3: Crashing wave in simulated stereo

The final cut I really don’t want to boot up my PC every time I decide to listen to my virtual ocean, so the final step in my project is to export the audio to a file format that is compatible with my digital audio player. My player can play stereo tracks in WAV, MP3 or Ogg Vorbis. First, I need to take the three tracks in my Audacity project and mix them down to one left channel and one right channel for my audio player. I’ll do this by first choosing Select…→All from the Edit menu and then choosing Quick Mix from the Project menu. Next, I can do some repetitive copying and pasting to make the ocean sounds extend beyond a mere seven seconds. Finally, I’ll choose one of the Export As… options from the File menu. Now all I have to do now is transfer the file to my audio player and I can enjoy a relaxing trip to the virtual beach.

30

The final cut


Issue 17

Figure 4: Project mixed down to one stereo track

Where do we go from here? In this article I’ve just scratched the surface of what Audacity can do. If you like what you’ve seen so far, there’s no better way to learn than to get some more hands-on practice. You don’t have to limit yourself to making environmental tracks either. Maybe you’re itching to try your hand at mixing music or recording live events. Whatever it is, if it’s related to audio, you can probably do it with Audacity.

Biography David Horton (/user/13" title="View user profile.): David Horton got started with GNU/Linux in 1996 when he needed a way to share a single dial-up internet connection with his college room-mates. He found the solution he needed with an early version of Slackware and a copy of the PPP-HOWTO from The Linux Documentation Project. More than ten years later he is older and wiser and still hooked on GNU/Linux. Many of Dave's interests and hobbies can be explored on his website (http://www.happy-monkey.net).

Copyright information This article is made available under the "Attribution-Sharealike" Creative Commons License 3.0 available from http://creativecommons.org/licenses/by-sa/3.0/. Source URL: http://www.freesoftwaremagazine.com/articles/making_waves_with_audacity

Where do we go from here?

31


Issue 17

32

Where do we go from here?


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

The simplest way to make databases in OpenOffice.org If you have data that you can put in a spreadsheet, a database is just a few steps away By Solveig Haugland PUBLISHED: 2007-05-09 Do you need to make a database, but fear it’s too much of a pain or you don’t have the right tools? Don’t worry: it’s easy, free, and useful, too. Use the free OpenOffice.org office suite to get your data in shape for mail merges, queries, or useful analysis of your business data.

What’s the point of making a database? Not everyone needs a database. But sooner or later, anyone who has to keep track of and retrieve important information is going to benefit from one. Databases are for storing data, of course, but their benefit comes in letting you get at the data you want, and in displaying or printing it the way you want. For instance, once you have a database, you can, of course, do mail merges—whether it’s a letter to each of the 500 people you met at a free software convention or printing labels for each of the 870 legal DVD backups you own. Databases are also necessary for setting up data entry or data viewing forms; creating relations between tables so you can print connected data; or for creating a list that shows the average number of items your customers bought per purchase during the holiday shopping season. Not everyone needs a database. But sooner or later, anyone who has to keep track of and retrieve important information is going to benefit from one

What kind of database do you create? Once you’ve decided to create a database, the way ahead looks simple. You just choose: File→New→Database However, then one last question remains: what type of database do you create? Do you connect straight to your Oracle database? (This is best only if you are or have access to an Oracle guru.) Do you investigate some of the simpler choices such as spreadsheets, or if you are well informed or psychic, do you choose the entirely invisible option of importing existing data? If you’re a database god and enjoy spending time deep in a database—well, you can do anything you want. If you want the most results for the least trouble, here’s what I recommend. • Get your data in a spreadsheet, then create a database file that can read the spreadsheet. This is simple and if you don’t need advanced database features, it’s all you need. See Creating a simple database that connects to a spreadsheet. • Or get your data in a spreadsheet, and paste it into Base to create a native Base database. This involves slightly more work but gives you a great deal more power. See Creating a native OpenOffice.org Base database.

What kind of database do you create?

33


Issue 17

Creating a simple database that connects to a spreadsheet The simplest approach is to simply create an OpenOffice.org database file that points to a spreadsheet chock full of data. The spreadsheet doesn’t have the power to do mail merges and the other database-related features I mentioned earlier, but the database file pointing to it can. It acts as a middle man saying “The data’s over there, with these fields—go get it”. The simplest approach is to simply create an OpenOffice.org database file that points to a spreadsheet chock full of data You either have your data in a spreadsheet already, or you can get it into a spreadsheet pretty easily. You’ll want to have it set up to look something like this, with field labels across the top, and with each piece of data separate. See figure 1.

Figure 1: Spreadsheet data Now you’re ready to create the database. It’s pretty simple. 1. Choose File→New→Database. 2. In the first window, select Existing Data Source, and Spreadsheet type. Click Next. See figure 2.

Figure 2: Choosing to create a spreadsheet-based database 3. In the next window, point to the full path (I’ve just shown the filename here) of the spreadsheet you want to use. Click Next. See figure 3.

34

Creating a simple database that connects to a spreadsheet


Issue 17

Figure 3: Specifying the spreadsheet name and path 4. Leave all the checkboxes marked. You don’t need to edit the database but the first time, at least, it’s good to take a look at what the main database window looks like. Click Finish. See figure 4.

Figure 4: Finishing the database 5. Name the database. This name will show up when you do mail merges, and it’s the name and location you’ll look for when you want to do things with the database (like create queries or reports). Click Save. See figure 5.

Figure 5: Naming and saving the database 6. You’ll see the database. Click the Tables icon at the left, and select a table name. Each sheet containing data in your spreadsheet will become a table. Now, on the right side, instead of None, select Document. You’ll see the data in the spreadsheet. See figure 6.

Creating a simple database that connects to a spreadsheet

35


Issue 17

Figure 6: Viewing the database file that connects to your spreadsheet There’s nothing else you have to do. Here’s a little more information, though.

Updating the data When you have more data, just add it to the spreadsheet. When you want more tables, just add the data to another sheet in the spreadsheet. When you have more data, just add it to the spreadsheet

What you can’t do with this type of database There are some fairly cool features that you might or might not need that you won’t have available. You can’t, for instance, use the functions that can tell you: for every invoice, what was the average total amount on the invoice. You can’t create data entry forms. You can’t join two tables to relate the data. But you can create queries, and reports, and data view forms. (Click the Forms icon on the left side in your database editing window, and use the wizard to create the form.) See figure 7.

Figure 7: A data-viewing form

Creating a native OpenOffice.org Base database If you want all the power that Base can provide, and you don’t have Access or Oracle or another engine sitting out there to connect to, then you’ll want to create a native database. This is similar to start off with, but with a lot of extra steps to define the tables, and a lot of extra steps to bring the data in. If you want all the power that Base can provide, and you don’t have Access or Oracle or another engine sitting out there to connect to, then you’ll want to create a native database

36

Creating a native OpenOffice.org Base database


Issue 17

Creating the database 1. Choose File→New→Database. 2. In the first window, choose to create a new database. Click Next. See figure 8.

Figure 8: Creating a new database 3. Leave the checkboxes with the default selections and click Finish. See figure 9.

Figure 9: Accepting the default values 4. Just name the database and click Save. See figure 10.

Figure 10: Saving and naming the database

Creating the database

37


Issue 17 5. The database appears. See figure 11.

Figure 11: Your native Base database (without tables)

Creating tables and entering data by pasting There is a long, traditional way to create tables. You can do it in design view, or using the wizard. See figure 12.

Figure 12: Creating a table from scratch This article is about telling you how to get the most bang for your effort buck But this article is about telling you how to get the most bang for your effort buck. So, I’m skipping that and going straight to the easy, invisible way. This way is an advantage only if you have the data out there somewhere already: in another database, in some CSV file, in an Excel or Openoffice.org Calc spreadsheet, or even in a big HTML table. And that is the case most of the time. 1. Get the data into a spreadsheet. You can export the data from your database to a spreadsheet or CSV, or copy it from an HTML table if it’s not there already. • From HTML: Copy the table, then click in one cell of a spreadsheet and paste. • From CSV (comma-separated files): In OpenOffice.org choose File→Open. In the File Type list of the Open window, select Text CSV (click in that list and type T four times). Select the CSV file and click Open. In the window that appears, verify that the settings are correct for the data, then click OK. • From Excel: Just open the spreadsheet in OpenOffice.org. See figure 13 and Figure 14.

38

Creating tables and entering data by pasting


Issue 17

Figure 13: Specifying Text CSV format so that the file will open in a spreadsheet

Figure 14: Checking the conversion settings for the text file 2. Make sure the data is set up right. Make sure there are field headings, that the data is granular enough, etc. If you don’t have a unique primary key field such as an ID, don’t worry; you can create one on the fly as you add the data. 3. In the spreadsheet, copy all the data including the headings. 4. Go to the database file and click the Tables icon at the left side. 5. In the Tables area, right-click and choose Paste. See figure 15.

Figure 15: Pasting the data to create a table

Creating tables and entering data by pasting

39


Issue 17 6. In the window that appears, type the table name you want, and choose to add both the data and the definition, or just the definition if you want to significantly edit the table definition. You can also choose to create a new field that will function as the primary key. It’s a good idea to paste just the definition first, if you want to set one of the fields you’re pasting in as the primary key. Then paste again and just paste data. Click Next. See figure 16.

Figure 16: Specifying what should be copied and created in the new table 7. Add all the fields that you want in the table, then click Next. See figure 17.

Figure 17: Specifying the fields you want 8. Make any changes to the field definitions. Click Create. See figure 18.

Figure 18: Modifying field definitions

40

Creating tables and entering data by pasting


Issue 17 9. The table will appear in the database. Select the table, and from the right side choose Document rather than None, and you’ll see the data. Close the database, saving changes. See figure 19.

Figure 19: Viewing and saving the table and database You’re done—you’ve got a fully functioning native Base database with a table. You can create views, relations, data entry forms, reports, write SQL queries on the data, and anything else that Base provides.

Adding more tables or pasting data into a table definition Just repeat the pasting process with another set of data.

Changing the table definition Right-click on the table name and choose Edit. See figure 20.

Figure 20: Choosing to edit the table definition You’ll then see design view, where you can change some aspects of the definition. For instance, to make a field auto-value, just make it an Integer type, then choose Yes under AutoValue at the bottom of the work area. See figure 21.

Adding more tables or pasting data into a table definition

41


Issue 17

Figure 21: Modifying the table definitions If you want to change the primary key, right-click on the field you want to make the primary key and select Set Primary Key. See figure 22. Note: This works only if you are pasting just the definition, not the definition and the data.

Figure 22: Modifying the table definitions

Updating the data To add data, paste the new data again the same way you did before—select the data and choose Paste. In the window that appears, just choose to Append, and make the same choices you did last time. See figure 23.

Figure 23: Appending data Alternately, double-click the table name and change or add the data just by typing.

42

Changing the table definition


Issue 17 Another approach, if you’re going to need to do a lot of updating, is to create a data entry form. Click the Forms icon on the left side of the database editing area and use the forms wizard to create the form. Be sure to state, when prompted, that the form is for both viewing and entering data. I should emphasize that with all data, be sure that it is set up correctly in the spreadsheet before you paste it in. Be sure columns names are correct and that the data is granular enough. Also, it looks like creating the primary key in the first window of the wizard, when prompted, is the only way to do it. If you want to change it later, you can’t because the table already contains data. A way around this might be to paste only the definition first, don’t set the ID as the primary key when prompted, and then set the appropriate field as the primary key by editing the table definition. Then, paste just the data.

Conclusion This process reinforces a general theme about OpenOffice.org advanced features—basically, that many things are possible but they are not obvious. If you don’t see a button or a checkbox for something in the interface, that doesn’t mean it’s not possible. Keep looking.

Biography Solveig Haugland (/user/20443" title="View user profile.): Solveig Haugland has worked as an instructor, course developer, author and technical writer in the high-tech industry for 16 years, for employers including Microsoft Great Plains, Sun Microsystems,and BEA. Currently, Solveig is a StarOffice and OpenOffice.org instructor, author, and freelance technical writer. She is also co-author, with Floyd Jones, of three books: Staroffice 5.2 Companion, Staroffice 6.0 Office Suite Companion and OpenOffice.Org 1.0 Resource Kit, published by Prentice Hall PTR. Her fourth book, the OpenOffice.org 2.0 Guidebook, is available from Amazon.com, from Cafepress, and directly from Solveig . For tips on working in OpenOffice.org or StarOffice, visit Solveig's blog: http://openoffice.blogs.com.

Copyright information This article is made available under the "Attribution" Creative Commons License 3.0 available from http://creativecommons.org/licenses/by/3.0/. Source URL: http://www.freesoftwaremagazine.com/articles/the_simplest_way_to_make_databases_with_ooo

Conclusion

43


Issue 17

44

Conclusion


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Yudit: edit your multi-language text easily How to edit your complex, multi-language text and stay healthy with Yudit By Gianluca Pignalberi PUBLISHED: 2007-05-04 In this article I will show you how to write multi-language texts without the cumbersome OpenOffice.org. Back in 1999, the Hungarian G??Sinai needed to edit Hungarian and Japanese texts. So he decided to write an editor that was Unicode [1] compliant. Once he had done the basic work, it was a straightforward task to include other languages, and Yudit [2] was born. Yudit was built for Unix, but Sinai did do a version for Windows. In this article I’ll show you how easy it is to write multi-language documents with Yudit. Every time I refer to documents, I’ll be referring to plain text documents.

The Unicode standard 7-bit ASCII can only do the basic Latin alphabet, with a few other characters. If I want to write in my own language (Italian) I have to use a special mapping of 8-bit ASCII. 7-bit ASCII can only do the basic Latin alphabet, with a few other characters The first time I tried to write an Italian document containing some Russian words, I immediately came across the following problem: if extended ASCII gives me Italian letters, what do I have to use to get Cyrillic letters, too? Then I discovered that there are a lot of ASCII extensions: ASCII codes 0—127 match those of 7-bit ASCII; 128—255 provide different characters, according to the set language. Unicode was designed to answer similar questions, and to replace the number of different overlapping ASCII extensions. It assigns every known letter a unique code, and it is compatible with ASCII (codes 0—127), so that every ASCII document is a Unicode document, too. Of course, a Unicode document is not necessarily an ASCII document. Unicode describes characters in up to 6 bytes. The high order bits of the first byte determine how many bytes a character is. They also group characters by family, for example, Latin or Cyrillic. Unicode was designed to replace the number of different overlapping ASCII extensions

Enter the (Y)Unicode eDITor Yudit is designed to save texts in Unicode. So you can use it to write something more complex than programs: for instance, I used Yudit instead of vi to write this article. When you run the program, you are given a window like the one in figure 1.

Enter the (Y)Unicode eDITor

45


Issue 17

Figure 1: the (Y)Unicode eDITor that I used to write this article From top to bottom you’ll find: an information bar below the titlebar, which indicates the name of the file you’re currently editing and the text encoding (usually utf-8); the buttons; the editor; a data bar, where you read cursor’s line and column, font size and the current character’s Unicode number. At the bottom of the window there is a command line, similar to the one in vi or Emacs. The command line is good for quickly entering commands. You access it either by escaping from the editor, or by clicking on it with the mouse. The same operations lead you from the command line to the editor. Be careful: once you enter a valid command you’ll no longer be in the command line, but back in the editor. The first feature I noticed was the cursor, shaped like an arrow: it points into the direction you’re going to write. The only directions, up to now, are left-to-right (as with English) and right-to-left (as with Hebrew). The author managed to change cursor direction and text color when reversing your direction: do it by clicking on the button, or typing Ctrl-D. Figure 2 shows a multi-language document with this feature. Unicode allowed me to mix Italian, French, English, Spanish, Icelandic, Russian, (politonik) Greek and Hebrew in the same document. I have to tell you that I only typed Italian, English and Russian lines, and cut and pasted the others from the internet.

Figure 2: Yudit edits a multi-language (and multi-directional) text Suppose you’ve just opened Yudit for the first time. It’s ready to write left-to-right in plain ASCII. Now reverse the cursor and try to write something. It’s easy, isn’t it? Don’t forget that backspace and delete keys exchange their usual behavior when writing from right to left. As Yudit is completely multi-language, you can decide which end-of-line (EOL) character to use. DOS, Mac and Unix, as well as Unicode line and paragraph separator are available. You can even mix them, though it isn’t advisable.

46

Enter the (Y)Unicode eDITor


Issue 17 You can always ask Yudit to help you: just enter help in the command line and you’ll be shown a FAQ file.

Babylon by bus Yudit allows you to change the current font type and size. To change them you can either click the buttons or type function keys (font family) and Ctrl-A (smaller size) or Ctrl-Z (bigger size). If you feel that there aren’t enough font families to choose from, you can install other True Type fonts; you can even install Open Type fonts for the Yudit’s newest versions. Be careful because not all the installed font families provide all the glyphs. Even though you typed your document reading all of it, you may change the font and miss some letters, replaced by their Unicode number. At last, you have to pay attention that Yudit will apply font changes to the whole text, not to parts of it. Text highlighting is not intended to apply a font change, as in a common word processor. It’s now time to talk about Yudit’s most interesting feature: easy-to-type Unicode characters. There are several ways to do it, and they involve changing keyboard mapping. If you start typing in plain English, the mapping (input, from now on) button will say “straight”. This shows that you can type letters as they appear on your keyboard, or your normal mapping. If you want extra letters, you can change the input with the F1—F12 keys. If you need more input keys, click on the input button to see how many keyboard maps are provided. Here you are invited to provide other maps. Yudit assigns default keyboard maps to function keys. If they wholly match your needs, you’re okay; if they don’t, you can change the bindings. Figure 3 shows the keyboard map (KMap) setup window.

Figure 3: the keyboard maps window To change the default bindings, just select one of the available inputs (from the list on the left), one of the function keys (from the list in the center), and click the arrow button between them. In the right-hand list you can see some input-output associations. You can type most of the languages directly or typing a sequence of Latin letters for every glyph. For instance, to enter the Cyrillic “?” you have to type the “q” letter according to the JAWERTY mapping, or the “ja” string according to a Russian-transliterated mapping. As you’ll easily understand, every Latin string reproduces (transliterates) the original letter sound. Okay, you now know how to type almost everything. The only thing I have left to tell you is how to type characters that are not immediately available in any of the mappings. Suppose you have to type an em-dash. You’re not likely to change the default binding, and associate the em-dash to the hyphen always present on keyboards (you’ll probably need it). You have to type its Unicode

Babylon by bus

47


Issue 17 number (2014). To enter it switch to “unicode” input, and then type the string “u2014”. As soon as you type “u”, it will be underscored, since it is an escape character in this input. The subsequent valid characters (hexadecimal figures, i.e., 0—9,a—f) will be underscored, too. As soon as you enter a valid sequence (4 hexadecimal figures) the underscored string will be replaced by the corresponding Unicode character. In my example an em-dash. Tony once said I was a LaTeX guru, but I’m only a LaTeX power user. Anyway, Yudit has a TeX input mode, that substitutes glyphs for TeX commands (i.e., if you type “\times” you’ll get “?rdquo;).

Conclusions I introduced a simple, but powerful, text editor that allows you to easily enter multi-language texts and to save them according to Unicode encoding. I find it handy when writing articles for Italian or foreign magazines. Unfortunately, they often look for RTF documents, or similar. In this case Yudit isn’t suitable. In case you need a text editor as fast as vi, or as powerful as Emacs, maybe you won’t find Yudit to your liking. However, if your need is to easily type multi-language, plain text documents, maybe Yudit is what you need.

Bibliography [1] The Unicode Consortium. [2] The (Y)Unicode eDITor.

Biography Gianluca Pignalberi (/user/4" title="View user profile.): Gianluca (/contacts/g.pignalberi) is Free Software Magazine's Compositor.

Copyright information This article is made available under the "Attribution-Sharealike" Creative Commons License 3.0 available from http://creativecommons.org/licenses/by-sa/3.0/. Source URL: http://www.freesoftwaremagazine.com/articles/yudit

48

Bibliography


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Free computing! How to revitalize mature pentiums By Howard Fosdick PUBLISHED: 2007-04-25 Free software is great, so why not run it on a free PC? Here’s how to get a free PC and configure it with free software to perform many tasks as well as a newly-purchased computer.

Sniffing out a PC I’ve always had a fondness for used computers. I work on the latest and greatest hardware and software in my professional life, but in my spare time I occasionally gather and configure PCs donated to charity. The fact is, you can do a lot with a mature Pentium. Most businesses and individuals will give them to you free for the asking. You’ll find they’re grateful about it, happy that someone will haul their “obsolete” hardware away. If they only knew… This is the story of a discarded PC I found while walking my dog, Phoebe Jane. Phoebe likes to sniff garbage (what dog doesn’t on a fine winter’s day!), and so we typically take our walks through the alleys behind houses and condos. A few weeks ago Phoebe seemed particularly interested in some food scattered behind a garbage bin. I glanced over to see what she was after. And what did I see? A tossed PC. (No, Phoebe, don’t go there!) I just couldn’t resist. I came back after the walk to pick up the box and take it home. I suppose it’s an odd kind of curiosity—I just had to know what this was and why someone discarded it. I figured it offered some spare parts, if nothing else, always useful when configuring used PCs for charity.

Figure 1: Phoebe sniffing out valuable PCs! When I got it home, I looked over the outside of the machine and determined it was a Dell Pentium III 550MHz. Opening it up showed that all parts were present and appeared intact—except for a missing hard disk. This is common with discarded consumer PCs, and a good omen. Someone likely upgraded to a new

Sniffing out a PC

49


Issue 17 machine and took their hard disk with them when they did. This means that all the remaining parts in this machine probably work. The bad news, lack of a hard disk, is not as serious as it may appear. You can obtain a disk drive in your next pick-up PC. Cannibalize two junked PCs to create one really nice one. With any used computer, you’ve got to be sure to test all the parts You can even operate without a hard drive. The SLAX version of the GNU/Linux operating system is a great example of what you can do with a disk-less PC. It’s specifically designed to run from CD disk or USB device only, no hard disk needed. (More on SLAX later.) In my case, luck smiled on me again the next week. Phoebe Jane just had to chase a squirrel (stupid squirrels, why do they exist!) and as I lunged after her I ran right past… another discarded PC. It turned out to be just what I needed. This one was dis-assembled and partially stripped, but it had the parts I needed—a hard disk and another PC-100 memory stick. Putting this together with my other find, I built one very capable machine, entirely from discards: • Pentium III @ 550mhz • 448MB memory and 8GB hard disk • DVD, writable CD, floppy, and a couple USB ports • Keyboard and mouse Just like you’d buy at the store—monitor sold separately! Building the parts into a single computer was easy. I use but a single tool, my trusty 2” Swiss Army Knife Classic SD. This US$10 miracle tool has a flat-head screwdriver with a tapered point that fits any screw you’ll encounter in any PC. If you can screw in a lightbulb—and you have patience to tangle with the awkward ways in which parts fit in some PCs—you can build your own PC. With any used computer, you’ve got to be sure to test all the parts. Go into the boot-up configuration panel and run all the diagnostic tests available. You can access this panel by pressing the Delete key or a PF key when the machine starts. (Most computers show you what key to press during the boot process.) Boot a LiveCD like Knoppix and run its diagnostics for memory, the disk, and everything else. A LiveCD is an operating system designed to run from CD or DVD disk when you boot the computer from that device. Knoppix is useful for testing machines because it includes many diagnostic tools (even for fixing Windows). The Ultimate Boot CD takes this concept even further. The sole purpose of this GNU/Linux distribution is to identify and fix PC hardware and software problems. Between UBCD’s tools and its forums, you’ll be able to fix anything that can be fixed. There’s also an Ultimate Boot CD for Windows. Some machines will boot off the CD drive anytime a CD disk is inserted when the machine starts. Others require you to access the boot configuration panel and set an option to boot off the CD. If the PC is so old it will not boot from the CD, a free product called Smart Boot Manager will give you the flexibility you need to boot from various devices. (Smart Boot Manager is included in the UBCD download.) Running diagnostic tests is important. You never know what you have in a used PC until you test it. Finding a problem now could you save you hours of frustration later.

Should you keep Windows? Since most people don’t wipe their hard disks when they discard their PCs(!), most used PCs come with Windows installed. You’ll face that classic, timeless question: should you keep Windows? If you do you’ll have an installed operating system with a full set of working drivers for the machine, plus whatever software is already on the hard disk. The software will be age-appropriate. This is critical because Microsoft’s strategy of planned obsolescence means that their newer software doesn’t run on mature machines.

50

Should you keep Windows?


Issue 17 On the downside, you need to run modern security software on any Windows PC you connect to the internet. Up-to-date virus and spyware scanners are an absolute must, as are a firewall and intrusion detector software. You’ll find that these consume processor cycles you just can’t afford to waste on many older machines. Even a Pentium I runs Office 97 or OpenOffice Version 1 just dandy, but add modern security software and you’ve got a snail on your hands. You need to run modern security software on any Windows PC you connect to the internet Run GNU/Linux and you circumvent the need for all that security software. Plus GNU/Linux gives you access to the world of free software this magazine covers. Most importantly, the free software community does not subscribe to the notion of planned obsolescence. If you need more resources to run a program than your mature PC has, it will be because the software actually needs current hardware, not because some corporation needs upgrade revenue. The computer industry has undergone a sea change in the past few years. It’s not just that free software can do anything commercial software can. It’s that most of this free software does not require the latest hardware to run. We have truly entered the “era of free computing”. As we enter 2007, the typical discarded PC is a Pentium II. You’ll encounter more Pentium I’s than you can possibly use, and snag Pentium III’s up to about a gigahertz. The power and capabilities of these “throw-away” computers continue to increase as newer machines come out. As Microsoft Vista’s hardware requirements swamp most PCs purchased before 2006, you’ll be shocked at what the “obsolete” PCs of the future can do. Mature PCs support a full range of tasks. They can’t handle those that require state-of-the-art resources, such as running current games or Vista. Pentium I’s and some II’s won’t manage broadband web connections as quickly as you’d like. But all of them support a million other functions, from running office suites, email access, educational uses, reading PDF files and e-books, editing presentations, through to keeping your calendar, and playing music. A properly configured Pentium III can perform most tasks a new computer can, as I’ll demonstrate below. Hardware that is obsolete in Windows World is not obsolete in the real world! One of the great achievements of the free software movement is that it has disrupted Microsoft’s ability to enforce planned obsolescence. Hardware that is obsolete in Windows World is not obsolete in the real world! Free software and an abundance of mature computers free us all from the expensive, lock-step upgrade cycle of the past.

What to run? The operating system you choose to run on your new old PC is critical. Operating systems require resources, and you don’t want the OS to consume all the PC’s power. They also determine how easy (or hard) it is to find and install software. Whether or not you decide to retain Windows, you’ll want to pick a GNU/Linux that is specifically designed to run on mature hardware with limited resources. These GNU/Linux “distros” can help you achieve things you never dreamed possible on the older PCs others discard. DistroWatch provides an extensive list of GNU/Linux distros, and tells where you can download them, and find reviews, and tools. I recommend trying several LiveCDs to find the Linux that best meets you needs. These allow you to “try them for size” without installing anything on your hard disk. You can also ensure that the operating system recognizes all the computer’s hardware. Of course, your intended use of your computer drives your decisions. For my Pentium III, I had in mind typical office tasks, such as word processing, spreadsheets, email, and some light web surfing. But the primary use of the machine is to support my professional development. I wanted to install some free software databases like MySQL and PostgreSQL. I also wanted to create a test bed to play around with a wide range of scripting languages (Rexx, Perl, Korn, pdksh, Python, Tcl/Tk, and others).

What to run?

51


Issue 17 Several GNU/Linux distros specifically designed for limited-resource computers immediately leapt to mind as ideal for these purposes. Puppy Linux targets mature computers and crams an astounding amount of useful software into its 28MB to 95MB download. Puppy is perfect for older PCs because it runs everything from memory. Different versions require from 128MB to 320MB to run in RAM. After a slow load, Puppy runs like a scalded greyhound. Show it to your friends on an old Pentium II with 256M, for example, and they’ll be amazed at its performance and range of bundled software.

Figure 2: Puppy Linux Screen Puppy boots from almost any device (CD, hard disk, Zip, USB, floppy, network port). You can run it off CD quite effectively and simply use your hard disk to store your system settings and swap file. These fit either in Windows or GNU/Linux disk partitions. This is convenient if you don’t want to touch the disk partitioning. Another bonus—Puppy life-support features responsive forums where beginners can feel comfortable asking questions. I like this enthusiastic online community and have never felt stupid when asking one of my stupid questions. No, I’m not high on Puppy just because I walk one. It really is that good! SLAX is another top candidate for older PCs. It’s a highly configurable GNU/Linux distro based on the venerable Slackware distribution. SLAX runs all the way down to 486s with 32MB of memory, so there aren’t many machines it won’t run on. It includes the comprehensive hardware detection software developed over many years for Slackware. SLAX is unique in that it was specifically developed for booting from the CD disk or from a USB memory stick or flash drive. (You can install SLAX to disk but this probably isn’t the norm.) I found it trivial to add the software I needed to my SLAX boot CD from the 1,500+ ready-to-load “modules” it offers. SLAX performs well on older PCs because you can tailor it so easily. It’s especially useful when you have a decent machine but with a small hard disk. Consider it also when you have a large disk but limited free space. SLAX performs well on older PCs because you can tailor it so easily What if your goal is to configure that used computer for someone who doesn’t view computers as their hobby? (gasp!) Like parents or family? (oh, okay, I understand now.) Here I recommend one of the lesser-known Linux distributions. BeatrIX runs on just about any old Pentium you can dig up. It features a simple, uncluttered user interface, and includes all the software typical end users need. No tweaking or downloading and installing additional software. BeatrIX can also run from memory for top performance. BeatrIX is named after its developer’s cat, but Phoebe and I recommend it regardless (well, I do, anyway). Consider BeatrIX if you’re setting up a mature PC for non-techies.

52

What to run?


Issue 17

Figure 3: BeatrIX Linux Screen I’ve saved one of the best for last—Damn Small Linux is the most popular GNU/Linux for older PCs. DSL is a 50MB download that runs solely from memory with only 128MB. It’s aimed at those who are computer-savvy enough to make the trade-off in ease-of-use required to run really cool tools on limited-resource computers. While the product is a bit geeky, DSL comes with great support. In addition to their web site, they offer an online forum, a wiki, and a community blog. DSL is easily extended to include additional tools. You can even run it from within Windows. If you’re willing to invest a bit of time to learn some new things, DSL is a truly great operating system.

Figure 4: Here’s DSL… anything missing?

Want more know-how? There’s much more to this subject than one brief article can cover. If you’d like to explore further, I wrote a more detailed article at DesktopLinux describing how I revived a Pentium II-366 laptop. The article includes charts on small GNU/Linux distros and the system resources required for various Windows releases. It tells you where you can download free essential security software for Windows. It also leads you through the process of assessing and configuring old PCs in more detail. Where do you find a free PC? Just ask friends, family, and co-workers. I guarantee you’ll have a Pentium II in your hands in no time. Max out its memory and install one of the GNU/Linux distros I’ve mentioned, and you’ve got a very useful machine.

Want more know-how?

53


Issue 17

Biography Howard Fosdick is an independent DBA consultant who occasionally rebuilds old PCs for relaxation. He recently wrote the first book on free and open source Rexx scripting, The Rexx Programmer’s Reference, and he frequently writes technical papers. He’s especially interested in databases, operating systems, and scripting technologies. Phoebe Jane is a full-time Wheaton terrier who enjoys sniffing, walking, and running in the snow. She believes squirrels have their place (for chasing!) but wonders why, why, would anyone ever own a cat?

Phoebe relaxing after a tough day

Biography Howard Fosdick (/user/36931" title="View user profile.): Howard Fosdick is an independent DBA consultant who recently wrote the first book on free and open source Rexx scripting, The Rexx Programmerâ— s Reference (http://www.amazon.com/rexx). He frequently writes technical papers and presents at conferences. His primary interests are databases, operating systems, and scripting technologies.

Copyright information Verbatim copying and distribution of this entire article is permitted in any medium without royalty provided this notice is preserved. Source URL: http://www.freesoftwaremagazine.com/articles/free_computing

54

Biography


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Burning CDs in GNOME GNOME applications that make CD burning easy By Robin Monks PUBLISHED: 2007-04-20 The GNOME desktop environment comes with a simple and single-minded CD burner application built into the Nautilus file manager (not dissimilar to what Microsoft bundles with Windows XP’s Windows Explorer and Vista’s Explorer) that can handle a lot of your file burning needs. But what do you do if you need more complex tasks done, like burning or ripping an ISO file, or creating an audio CD? When Nautilus begins to feel cramped and underpowered, it’s time to begin looking at some excellent free software utilities to fill the gap. Each one has its own unique style, benefits and weaknesses. All of these can be installed by following the directions on the project’s website, or by using your distribution’s package installer. I’ve tested these programs on Ubuntu 6.10 (Edgy) and with a $69 LG CD/DVD super-multi burner I picked up at the local office supply store. A quick note on some common disk burning terms is in order. Firstly, “burning” a disk is adding files to a CD or DVD using a laser. “BurnProof”, “BurnFree” and similar technologies are designed to allow disk burning applications to recover if at some point the drive is burning data faster than the application can send it. “Ripping” is the process by which data (usually audio tracks) are copied from a disk to the hard drive. Finally an ISO is the standard file used to represent a CD image, it contains all the files and folders to be burned to the disk and usually has a .iso extension. When Nautilus begins to feel cramped and underpowered, it’s time to begin looking at some excellent free software utilities to fill the gap

GnomeBaker

Screenshot of GnomeBaker’s project view GnomeBaker (registered as a SourceForge project since late 2004) takes the approach of integrating with the GNOME desktop as much as possible, even using the native GNOME folder bar. It also boasts a large array

GnomeBaker

55


Issue 17 of features; it can blank CD-RW and DVD-/+RW media, copy CDs and DVDs, burn and create ISO files (including copying an existing disk to ISO) and create audio CDs. GnomeBaker also allows disk burning “projects” to be saved and reopened later, perfect if you need to make a lot of CDs, a few at a time. It also had the most disk burning options of the utilities reviewed here; with speed, mode, file system, BurnFree, and meta data options. However, this plethora of options can be confusing at times, and GnomeBaker provided limited to no help on the features it provided (such as BurnFree, a tool to protect against bad writes); probably leaving those without knowledge of what the options do to stare and ponder. These downfalls limit GnomeBaker to being more of an “experts” CD burner. There are some features GnomeBaker lack, namely “ripping” audio CDs and DVD video to hard drive. Also, it isn’t possible to select whether a disk is to be closed after writing (not closing a disk allows you to burn files to a disk now and then add more files to the same disk again later, until the maximum limit of the disk is used—a useful recycling feature). Name Maintainer(s) License Platforms MARKS (out of 10) Vitality Stability Usability Features Overall GnomeBaker

GnomeBaker Luke Biddell GPL GNU/Linux 8/10 9/10 5/10 7/10 7/10

Brasero

Brasero’s project window Brasero (the project formerly known as Bonfire) takes a different approach, it focuses on simplicity and usability, and succeeds by having a more task-based interface than GnomeBaker, and simpler options. When you first open Brasero you are presented with four options: Audio Project, Data Project, Disk Copy and Burn an Image. Brasero also has the option to save the disk layout as a “project”, to be reused later. Like GnomeBaker, Brasero also had the option of burning a set of files to an ISO, and allowed disks to be copied to ISO. It also shares some of GnomeBaker’s weaknesses in that it cannot “rip” Audio or Video from disks. That said Brasero does give the option of leaving a disk open to add more files later, something GnomeBaker lacked.

56

Brasero


Issue 17

Brasero’s task-based layout makes it easier to navigate Brasero keeps its advanced options in a separate “properties” window out of the way of users who don’t want to configure those options, or don’t know how. “Burnproof” (the equivalent to GnomeBaker’s “BurnFree”) is also available, and enabled by default. Overall, Brasero is a much simpler disk burning solution, and has a nicer user experience over GnomeBaker. I would recommend this for those who don’t want to think much about their disk burner, and just want it to work. Name Maintainer(s) License Platforms MARKS (out of 10) Vitality Stability Usability Features Overall Brasero

Brasero Philippe Rouquier GPL GNU/Linux 9/10 10/10 9/10 8/10 9/10

Serpentine

Serpentine’s project window

Serpentine

57


Issue 17 Serpentine is an Audio CD burner bundled with Ubuntu Edgy, and available separately for other GNOME desktops. It’s a work-alike for the audio CD functions of Brasero and GnomeBaker. It accepts many playlist formats as well, including those of Rhythmbox. You probably wouldn’t need Serpentine if you had one of the above disk burners, unless you needed to use one of these less-common playlists. However, when used separately for audio CD mastering, Serpentine is great at its job; and it’s perfect for those who just want to burn audio CDs. Name Maintainer(s) License Platforms MARKS (out of 10) Vitality Stability Usability Features Overall Serpentine

Serpentine Tiago Cogumbreiro GPL GNU/Linux 10/10 10/10 9/10 8/10 9/10

Sound Juicer

Sound Juicer’s project window Sound Juicer is an Audio CD “ripper”/“juicer” also bundled with Ubuntu, and available as an RPM for other GNU/Linux distros. It’s the only application reviewed here that can “rip” music from a CD, useful for making smaller audio files from a CD for use on a portable music player. It supports ripping into OGG, FLAC and WAV natively. Sound Juicer requires some custom configuration to rip to MP3, the legality of which is somewhat questionable. There are two good how-tos I’ve found for enabling MP3 support here and here. Because MP3 is a patented technology, many free software programs opt for free standards, like OGG and WAV, but if your portable player only supports MP3 you’ll need to utilize one of these solutions. Name Maintainer(s) License Platforms MARKS (out of 10) Vitality

58

Sound Juicer Ross Burton GPL GNU/Linux 9/10

Sound Juicer


Issue 17 Stability Usability Features Overall Sound Juicer

10/10 8/10 8/10 8.5/10

Conclusion Overall, there are a lot of great programs that can make your disk burning life with GNOME a lot easier. I encourage you to try out some of these programs, and find what you like. I focused only on the GNOME desktop, but all of these tools can be installed on KDE too as long as GTK is available. Likewise, you can easily use KDE’s K3B CD Kreator on GNOME (but you’d need to install all of the KDE libraries to do so). Hopefully, you’ll find this information to be helpful the next time you take a journey through the disk burning jungle. Until next time.

Biography Robin Monks (/user/35" title="View user profile.): Robin Monks is a volunteer contributor to Mozilla (http://mozilla.org), Drupal (http://drupal.org), GMKing (http://gmking.org) and Free Software Magazine and has been helping free software development for over three years. He currently works as an independent contractor for CivicSpace LLC (http://civicspacelabs.org)

Copyright information This article is made available under the "Attribution-NonCommercial-NoDerivs" Creative Commons License 3.0 available from http://creativecommons.org/licenses/by-nc-nd/3.0/. Source URL: http://www.freesoftwaremagazine.com/articles/burning_cds_in_gnome

Conclusion

59


Issue 17

60

Conclusion


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

How to print more than one record on a sheet of paper in OpenOffice A simple solution to an annoying problem By Solveig Haugland PUBLISHED: 2007-04-13 When you download mail merge template or create your own, you lose a feature that’s built into the OpenOffice.org mail merges and reports: printing more than one record on a sheet of paper. However, it’s easy to add that ability yourself. This article addresses the issue of how to have information from multiple records on the same sheet of paper, in mail merges for lists, downloaded label templates, and other mail merge documents. The first section of this article explains how mail merges work regarding when the next record is chosen, and why. If you’re already familiar with this, go straight to the solution in the tutorial part of the article, Triggering a new record whenever you want it by using the next record field. This article has three sections: the problem, how the program works, and how to get around it. • How mail merges work by default covers the default behavior, and why that’s not always what you want • Why the mail merge doesn’t trigger the next record all the time covers why it’s sometimes a good idea, and sometimes not, to have the same record print multiple times on the same sheet of paper. It’s a “nice to know” explanation that you can skip if you’re looking for the solution. • Triggering a new record whenever you want it by using the next record field provides steps for controlling exactly when your mail merges switch to the next record. A mail merge is a connection between a document and a database

How mail merges work by default A mail merge is a connection between a document and a database. The document pulls information for certain fields, like Name and Address and Birthdate, out of the database. You set up your mail merge document easily (figure 1).

How mail merges work by default

61


Issue 17

Figure 1: Standard mail merge setup The information for the first record (the first person in this case) is printed, then the second record, and so on (see figure 2).

Figure 2: The printed results of a mail merge Here’s the question, though: When do you go to the next record? What makes the mail merge document switch so that we see the information about Miranda? In labels, it makes sense for information about the next record to show up in the next label, which is the next time that the field appears. And that’s how it works when you create labels—at least, when you create labels by choosing File→New→Labels. It’s also how things work when you create a report generated from your database; multiple records will be printed in the same page because the logic is built into the report wizard. Let’s say that you don’t want to use the document-creation tools provided by OpenOffice.org; you want some more control over exactly what output you have. So you download templates, like the ones at WorldLabel.com, which has free OpenOffice.org templates. If you’re using those templates or if you create your own mail merge document from scratch, you’re going to get the same name and address in every label area until you go to the next page, with 10 or 30 labels for the same person. The logic to trigger the next record isn’t built into those templates.

Situations when you want to have multiple fields from the same record on the same page The default behavior for mail merges is to err on the side of giving you the opportunity to repeat information if you want it. And sometimes you do. If you’re creating a mail merge letter, you sometimes want the same

62 Situations when you want to have multiple fields from the same record on the same page


Issue 17 information for one record to repeat. Sometimes your letter goes for three pages. It certainly doesn’t make sense to show information from the next record after each carriage return, or the next time the field shows up. The default behavior for mail merges is to err on the side of giving you the opportunity to repeat information if you want it FIgure 3 shows you how you might set up a typical mail merge letter.

Figure 3: Setting up a mail merge letter Figure 4 shows you what it would look like if you triggered a new record each time you got a new carriage return, reuse of a field, or new page.

Figure 4: Unfortunate results of a mail merge that flips to the next record each time a field appears again These are specific situations for printing on the same page. When you do want a bunch of different records on the same page, however, how do you trigger the Next Record?

Triggering a new record whenever you want it by using the next record field Every time you want to trigger the next record, choose Insert→Fields→Other, Database tab. In the Type column select Next Record, and in the Database Selection list select your database and table. Click Insert (Figure 5).

Triggering a new record whenever you want it by using the next record field

63


Issue 17

Figure 5: Inserting the Next Record trigger You will see either nothing appear in the document, or a very small gray speck. If you insert it by itself you’ll see it, but you won’t see it when you insert it, as you typically will, next to another field (figure 6).

Figure 6: How the Next Record field looks (at its most obvious) You don’t even need to click Insert every time. You can copy and paste that small gray field to the next line, or the next label, or, another four inches down the page—wherever you want the next record to begin. Here are a couple ways you could use it.

Labels In labels you create from WorldLabel templates or other templates, set up the first label normally and copy it to the second label area too. Then insert the Next Record field in front of the FirstName field in the second label area, and copy the whole label. Paste it to all the other label areas in the template. You only need to insert the Next Record field once per record; not in front of each field (see figure 7).

64

Labels


Issue 17

Figure 7: Using the Next Record with labels

Reports or lists If you don’t want to use the Reports function in the database management window, or if you just want something simpler, you could set up a report like this. Drag the first line of fields out, then press Return and copy and paste them to the second line. Having control over exactly what you want to do doesn’t always mean it’s easy to figure out Click to the left of the first field in the second line and insert the Next Record field. You only need to insert the Next Record field once per record; not in front of each field. Now copy that second line and paste it again until you’ve filled the page figure 8).

Figure 8: Setting up a report using the Next Record

In conclusion: control doesn’t always mean simplicity As we know from using LaTeX and Word, having control over exactly what you want to do doesn’t always mean it’s easy to figure out. There are two logical and very different ways for the mail merge to work. OpenOffice.org chose one, and if you want it to work the other way, well, it’s just a matter of inserting the Next Record field. On the plus side, you only need to set up your label template once, then use it again each time you print new records.

Biography Solveig Haugland (/user/20443" title="View user profile.): Solveig Haugland has worked as an instructor, course developer, author and technical writer in the high-tech industry for 16 years, for employers including

In conclusion: control doesn’t always mean simplicity

65


Issue 17 Microsoft Great Plains, Sun Microsystems,and BEA. Currently, Solveig is a StarOffice and OpenOffice.org instructor, author, and freelance technical writer. She is also co-author, with Floyd Jones, of three books: Staroffice 5.2 Companion, Staroffice 6.0 Office Suite Companion and OpenOffice.Org 1.0 Resource Kit, published by Prentice Hall PTR. Her fourth book, the OpenOffice.org 2.0 Guidebook, is available from Amazon.com, from Cafepress, and directly from Solveig . For tips on working in OpenOffice.org or StarOffice, visit Solveig's blog: http://openoffice.blogs.com.

Copyright information This article is made available under the "Attribution" Creative Commons License 3.0 available from http://creativecommons.org/licenses/by/3.0/. Source URL: http://www.freesoftwaremagazine.com/articles/triggering_next_record_in_ooo_mail_merges

66

In conclusion: control doesn’t always mean simplicity


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Comparing GNU/Linux and FreeBSD The real winner is the community By Arturo Fernánde... PUBLISHED: 2007-05-30 GNU/Linux is the most popular operating system built with free/open source software. However, it is not the only one: FreeBSD is also becoming popular for its stability, robustness and security. In this article, I’ll take a look at their similarities and differences.

Introduction FreeBSD is an operating system based on the Berkeley Software Distribution (BSD), which itself is a modification of AT&T’s UNIX, and was created by the University of California. During the development of FreeBSD, to avoid any legal problems with the owners of the source code, the developers decided to re-engineer the original BSD, rather than copy the source code. In contrast with GNU/Linux, where all the pieces are developed separately and brought together in distributions, FreeBSD has been developed as a complete operating system: the kernel, device drivers, sysadmin’s tools and all the other pieces of software are held in the same revision control system. Initial development of Linux was started in 1991 by Linus Torvalds who used Minix—an operating system developed by Andrew Tanenbaum for teaching purposes—as the basis for his system. By 1990 the GNU project, which had been started in 1983 by Richard Stallman, had produced and collected all the libraries, compilers, text editors, shells and other software necessary to make a free operating system—except a kernel. The Linux kernel developers decided to adapt their kernel to work with the GNU software to make a complete operating system: GNU/Linux was born. The kernel and the majority of the code in FreeBSD has been released and distributed under the BSD license although some components use other open licenses like the GPL, the LGPL or the ISC. The Linux kernel, and most of the software in the GNU project, has been licensed under the GNU GPL which was created by the Free Software Foundation.

Introduction

67


Issue 17 Linux logo by Larry Ewing

FreeBSD logo from FreeBSD site.

Technical differences FreeBSD and Linux both follow the UNIX philosophy but some differences do exist between the operating systems—let’s have a look at some of these differences on a technical level.

Devices Hardware related dispositives like disks, network cards, printers, graphics cards, mice and keyboards are referred to using the term device in the context of operating systems; Linux and FreeBSD use different nomenclature for this hardware. Linux uses predefined names for each device type, so eth0 is the first Ethernet network card for any chip-set. FreeBSD, on the other hand, uses a different name for each device and their chip-set: for example, a single network card with the common RealTek 8129 chip-set is called rl0 in FreeBSD. On Linux hardware information can be obtained by examining the content of the /proc directory; a command like lspci or lsusb can also be used—these commands simply reformat the information contained in /proc. FreeBSD does not use the /proc directory, rather the sysctl command shows all the information about the hardware devices attached to the system and can also be used for configuring and tuning them.

Runlevels and startup scripts Runlevel is the term used to describe a mode of operation for a system such as reboot, halt, single-user mode or multi-user mode. On GNU/Linux the /etc/inittab file describes these different runlevels and the init process allows the system to change its current runlevel. FreeBSD uses commands like reboot or shutdown -h to change the current runlevel instead of the telinit command used in GNU/Linux. On GNU/Linux each runlevel has a subdirectory under /etc/ or /etc/rc.d/, depending on the distribution: Debian, for example, uses /etc/. These subdirectories are rc0.d, rc1.d and so on until the last runlevel (there are usually seven runlevels). Each rc_x_.d subdirectory contains symbolic links to the startup scripts residing in the /etc/init.d/ directory. On FreeBSD the startup scripts exist in the /etc/rc.d/ directory (for the system) and in the /usr/local/etc/rc.d/ directory (for third-party applications). These scripts use parameters such as start or stop to control which scripts run at startup (start and reboot) and shutdown.

68

Technical differences


Issue 17

Kernel Obviously there exist design differences between the Linux kernel and the FreeBSD kernel but there are also similarities: • Modules: support for loading and unloading modules without recompiling the kernel or rebooting the system. • Versions: each official kernel uses a numbered version. • Build a custom kernel: some benefits of building a custom kernel are that it can result in a faster boot time, lower memory usage and additional hardware support. Commands for loading and unloading kernel modules, as well as listing the loaded modules, are different in each system. Linux uses the modprobe command for loading a module and for seeing a list of the loaded modules, lsmod just shows a list of the loaded modules and rmmod unloads any unwanted modules. FreeBSD uses kldstat to list the currently loaded modules, kldload for loading a module and kldunload for removing a module. The Linux kernel uses tree numbers for each version: the first number represents the major version number—at the moment this is ‘2’; the second number indicates if it is a stable (even number) or development version (odd number) and the last number is the patch version. You can see this demonstrated in the most recent version, 2.6.17. In FreeBSD the kernel has two numbers, first for the major version and second for the minor new releases: for example the most recent release is 6.1. Building a custom kernel on either system requires you to compile it from source. However, the steps for achieving this are different on each system. The first step is downloading the sources or obtaining it from a physical medium like a DVD or CD—this step is required in both systems. Linux offers both GUI and CLI tools for creating your own custom kernel; FreeBSD uses a text editor to comment or uncomment the options which control the process. Finally, you use the make command to compile and install the kernel.

Software installation Third party software can be distributed in binary or source format. Usually this software is packaged using compression tools such as tar and gzip; however, many GNU/Linux distributions use their own format for software packaging and provide tools for installing, un-installing and configuring it. Debian, for example, uses the .deb package format and tools like apt or dpkg to manage these. Using these tools the process to install a software application from the command line is easy; the following example demonstrates how to install The GIMP image editing program: # apt-get install gimp

FreeBSD provides two interesting technologies for software installation: Packages A package is a single compressed file that contains pre-compiled binaries, documentation and configuration files, including information which allows the system to install the software under the correct directories on the filesystem. Tools like pkg_add, pkg_delete, pkg_info, etc., are used for package management. To automatically download and install a package is easy using the pkg_add command: # pkg_add -r gimp

Ports In FreeBSD terminology a port is a collection of files designed to automate the process of compiling a software application from source code. The ability of the software management application to understand software dependencies is a common feature of both packages and ports. Ports are very useful when we need to have total control over the compilation parameters to achieve the best performance for our machine; whereas, packages have the advantage of being

Kernel

69


Issue 17 smaller than ports because they do not include source code. Furthermore, installing a package does not require the user to have any understanding of the compilation process. By having both technologies present the user can choose which ever system is better for them. You can always install software from source in both operating systems by using the traditional method of compiling and installing with the make command.

Shells The Bash (Bourne-Again SHell) is the default shell in most GNU/Linux distributions. In a default FreeBSD installation, however, you won’t find bash. Don’t worry though, you can install it: # pkg_add -r bash

GNU/Linux distributions choose the bash shell by default because this was written for the GNU project; FreeBSD uses csh, in line with traditional UNIX systems. If you prefer other shells, like tcsh or csh, you can install them in both operating systems using the previously described software management systems. Choosing an appropriate shell is a personal decision and depends on what you have experience with and what your day-to-day work involves.

Installation As I said before, Linux and FreeBSD can be installed on a number of different platforms. We can even install both operating systems on the same machine. Firstly, I will show you the main steps involved when installing each operating system and then later I will show you how to install them both on the same machine.

Installing GNU/Linux The procedure to install the operating system is slightly different for each distribution, but the basic steps are similar: • Choose the installation media i.e. DVDs, CDs or network installation. • Get complete information about the target machine. • Start installation. • Select your language, country and keyboard layout. • Partition the hard drive and choose the filesystem types. • Automatic installation of base software. • Configure hardware devices and install third party software. Distributions each have their own tools to carry out these installation steps and some of them are easier than others: YaST is a complete administration and installation tool with a graphical user interface (GUI) which is used by SUSE and other GNU/Linux distributions and is quite simple to use; Debian, on the other hand, uses another interface which is less intuitive for novice users.

Installing FreeBSD FreeBSD provides a tool called sysinstall for a wizard-like installation process: it is a console based application divided into a number of menus and simple screens to control and configure the system during installation. After booting your PC, sysinstall starts and FreeBSD is ready to install. sysinstall has different options but we want to start with the installation option. It’s recommended to use the “standard” installation option for most users which you can choose from the sysinstall menu as shown in figure 1.

70

Installation


Issue 17

Figure 1: Begin standard installation for sysinstall menu The main steps for a FreeBSD installation are: • Allocate disk space and install a boot manager: FreeBSD uses slices to divide a hard drive. • Choose what to install: software is organized into sets, for example, the User set will install all the software for an average user including binaries and documentation. If in doubt, the All set is a better option because it includes all the system sources, binaries, documentation and the X-Window system. • Choose installation media: sysinstall offers different installation media like CD/DVD, FTP, HTTP or NFS. • Commit installation: this is your last chance to abort the installation without making changes to the machine. • Post-installation: the configuration process starts when the software is installed. Here you can configure network cards, services, FTP servers, time zone and keyboard layout as well as other hardware devices.

Installing both GNU/Linux and FreeBSD on the same PC Both operating systems can live on the same PC, and users are able to choose one or the other during the boot process. In order to install them we must consider these issues: • Boot manager: it’s mandatory to choose one system to run. • Disk space: GNU/Linux and FreeBSD use different types of file system and organize the hard drives in different ways. Linux uses the letters hd for IDE hard drives and FreeBSD uses the letter s for slices, which are portions of the hard drive, so the organization method on the hard drive is different in each case. In Linux hda1 is the first partition on the first IDE hard drive; whereas, in FreeBSD, a slice is divided into several partitions: so the first IDE drive is ad0 and ad0s1a is partition a in the first slice of the first IDE hard disk. The first step to installing both operating systems on the same machine is to install one—for example GNU/Linux. When you arrive at the partitioning step, you should create two primary partitions: one for GNU/Linux and the other for FreeBSD. Remember that a PC can only have four primary partitions, or three primary partitions and only one extended partition (divided in several logical partitions, one for each filesystem type). A simple partition scheme which is ready for both systems is: • One primary partition for boot. • One primary partition for root filesystem. • One primary partition for swap area. • One primary partition for FreeBSD.

Installing FreeBSD

71


Issue 17 Once GNU/Linux is installed we are ready to install FreeBSD in the spare primary partition. In this partition, which we made with GNU/Linux, you must create a slice for FreeBSD. This slice will have four partitions: 1. Partition a for root filesystem. 2. Partition b for swap area. 3. Partition e for /var filesystem. 4. Partition f for /usr filesystem. The size of each partition depends on the size of your hard drive: you can assign space for each partition at your convenience (space is not much of a problem in modern PCs that usually have hard drives with 80GB or more). (Optionally it’s possible to share swap partition between FreeBSD and GNU/Linux, for more information see the Linux+FreeBSD miniHOWTO.) To boot the operating systems a boot manager is needed. When we install GNU/Linux we can choose a boot manager like GRUB or LiLo. If we install and configure GRUB during the GNU/Linux installation process, we don’t need to install any boot manager during the FreeBSD installation process: we can configure GRUB in our GNU/Linux distribution to boot FreeBSD as well. This is an example of the file /boot/grub/menu.lst (the GRUB configuration file) which will boot FreeBSD or Debian: default timeout

0 5

title root kernel initrd savedefault boot title root kernel

Debian GNU/Linux (hd0,0) /boot/vmlinuz-2.6.8-2-386 root=/dev/hda1 ro /boot/initrd.img-2.6.8-2-386

FreeBSD (hd0,2,a) /boot/loader

KDE running under Debian GNU/Linux

72

Installing both GNU/Linux and FreeBSD on the same PC


Issue 17

KDE running under FreeBSD

Conclusion FreeBSD and GNU/Linux are two great options: choosing one or the other depends on many factors. Usually FreeBSD is used as a web server: companies like Yahoo! or Sony Japan trust FreeBSD to run their internet portals; on the desktop GNU/Linux wins this battle, but GNU/Linux is used on many web servers as well. Users will find if they are familiar with traditional UNIX systems they can use either without many problems. FreeBSD and Linux: a gift of quality, robustness, security and stability from the free software community to the world of operating systems.

Bibliography FreeBSD site TheFreeBSD Handbook The Linux Kernel Archive Debian GNU/Linux distro SUSE Linux distribution from Novell. Fedora distribution Ubuntu distribution Linux+FreeBSDmini HOWTO Wikipedia GPL license BSDlicense

Biography Arturo Fernร ยกnde... (/user/80" title="View user profile.): Arturo is a software engineer specialist in web development and a freelance author for various Linux magazines. He works with Debian GNU/Linux since 2000.

Bibliography

73


Issue 17

Copyright information Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is available at http://www.gnu.org/copyleft/fdl.html. Source URL: http://www.freesoftwaremagazine.com/articles/comparing_linux_and_freebsd

74

Bibliography


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

Backup your workstation with Backup Manager Saving yourself one day at at time By Ken Leyba PUBLISHED: 2007-05-23 Backing up is one of those tedious jobs that has to be done but is usually relegated to the end of the To Do list. Enter Backup Manager, which is a set of Bash and Perl scripts that alleviate the tediousness of performing backups. Taking away some of the complexity of backup tools and combining others, Backup Manager brings simplicity to backing up. Obtaining a higher level view of backups also allows easier management of archives including retention. What follows is a method of backing up a single workstation daily and managing those backups.

Conceptual View The concept behind Backup Manager is elegant, backups or archives are stored in a repository. The repository is a sub-directory or preferably a dedicated partition to hold the archives. Archives are built using backup methods. There are several backup methods, each defined by configuration options known as keys. These keys are stored in one or more configuration files. Each configuration file can define its own repository, backup methods and other options. Multiple instances of Backup Manager can be run in parallel, each with its own configuration file, although the same configuration file cannot run twice at the same time. Since Backup Manager is a command line tool it is simple to schedule archiving with a Bash script and cron. Since Backup Manager is a command line tool it is simple to schedule archiving with a Bash script and cron

Figure 1: Conceptual View of Backup Manager There are multiple types of backup methods used by Backup Manager. The most common are referred to as tarball methods, archives created with the tar command. The tar command, initially named for Tape ARchival, creates archives that do not necessarily reside on tape and are often stored on disk or other removable media. These tarballs can be compressed with several different compression types: zip, gzip, dar or bz2. To save disk space tarballs can also use a method to create full and incremental backups. With

Conceptual View

75


Issue 17 incremental backups, Backup Manager keeps track of files that have changed and only archives changed files, thus saving storage space. Other methods include the ability to archive MySQL databases, subversion repositories and customizable generic methods. Storing of archives on the host system is not a preferred strategy of disaster recovery. There are a series of methods that allow remote storage of archives to other servers or removable media, i.e. CD/DVD. Upload methods consist of ftp, ssh, rsync and use of Amazon Simple Storage Service (Amazon S3). Each of these methods, with the exception of the burning method, requires a destination server with additional services and configuration. The destination servers will accept the uploading of archives, which is beyond the scope of this article. The burning method, currently the only export method, transfers archives from the repository to writable CD or DVD media via the cdrecord utility.

Installation and configuration The example system is Kubuntu Edgy which uses version 0.7.2 of Backup Manager. Version 8.0 is promised to be available soon, so check the Backup Manager web site for updates. Since Backup Manager is a command line tool, installation and use will be performed from the command line. Installation is done with the apt-get command. Since there are a few things that need to be done as root and typing sudo for every command gets tiresome, becoming root will save some keystrokes. $ sudo su Password: # apt-get install backup-manager backup-manager-doc

For non-Ubuntu or -Debian based systems, check your distributions repositories for Backup Manager packages or install from source. The source tarball includes simple instructions in the included INSTALL file. The installation places several scripts in /usr/share/backup-manager, installs the configuration file /etc/backup-manager.conf, installs the man pages, the main executable script saved as /usr/sbin/backup-manager, a cron script /etc/cron.daily/backup-manager is setup and some documentation placed in /usr/share/doc/backup-manager. Since Backup Manager is a command line tool, installation and use will be performed from the command line The default configuration file is well laid out and documented, though reading the User Guide gives a better understanding of the keys and their values. Several changes to the keys in the default configuration file are made to configure daily backups and setting up the burn method. Using a favorite text editor (for example vi or nano), the following keys are changed. The BM_TARBALL_BLACKLIST key value lists sub-directories or files that will be excluded from the archive. Since I have ripped some music CD’s I have excluded the ogg files from being backed up using a Bash style wildcard. Directories and Bash style wildcards are appended to the key value and delimited with spaces. The key for the number of days an archive is kept is BM_ARCHIVE_TTL or archive time to live. The default value is ‘5’, five days, change the value to ‘7’ for full daily backups. BM_TARBALL_BLACKLIST="/var/archives *.ogg" BM_ARCHIVE_TTL="7"

The next set of keys relate to the burning method of exporting archives to CD/DVD media. The BM_BURNING_METHOD value is set according to the media that is to be burned to. In this case, CDR media is being used. Other options include DVD, CDRW and DVD-RW. The device that is being used is set with the BM_BURNING_DEVICE key, which is the device name found in the /dev directory. The final value is the size of the media that is being used, with the CDR media the values are normally 650, 700 or 800. In this example 700MB media is being used. BM_BURNING_METHOD="CDR" BM_BURNING_DEVICE="/dev/cdrw" BM_BURNING_MAXSIZE="700"

76

Installation and configuration


Issue 17

Testing the backup Command line options allow specific methods that are part of the configuration file to run independently. In the modified configuration file two methods are configured: the tarball method and the burn method. By using command line options one or the other method can be performed. Remaining as root user the --no-burn command line option is used to only create the archives in /var/archives. If /var/archives doesn’t exist it will be created after the first run. # backup-manager --no-burn

After a successful archive using the tarball method, the /var/log/messages log file can be viewed to see what messages were generated. Logging is accomplished with the BM_LOGGER key set to “true�, the default. # tail /var/log/messages Mar 5 15:37:08 host backup-manager[19432]: info \ * Getting lock for backup-manager 19432 with\ /etc/backup-manager.conf Mar 5 15:37:08 host backup-manager[19432]: info \ * The repository /var/archives does not \ exist, creating it. Mar 5 15:37:08 host backup-manager[19432]: info \ * Cleaning /var/archives Mar 5 15:37:08 host backup-manager[19432]: info \ * Using method "tarball".

The next test is burning the repository to CD/DVD media. This is also accomplished with a command line option to perform only the burn method. When prompted for new media press the ENTER key. If the archives will not fit onto a single media a prompt will appear for additional blank media. If the size of the repository is larger than a single media, performing an interactive burn method will allow additional media to be used. If the burn method is run non-interactively, i.e. through a cron script, then Backup Manager will first try to burn the complete repository. If the repository is larger than the media, then the archive created the same day will be attempted. If the days archive is larger than the media, then no burn method is performed. # backup-manager --burn Please insert a new media in /dev/cdrw

Again, the process can be checked by looking at the messages log file. # tail /var/log/messages Mar 5 15:46:39 host backup-manager[24927]: info \ * Getting lock for backup-manager 24927 with\ /etc/backup-manager.conf Mar 5 15:46:39 host backup-manager[24927]: info \ * Burning the whole archives. Mar 5 15:46:39 host backup-manager[24927]: info \ * Number of files to burn: 3. Mar 5 15:46:39 host backup-manager[24927]: info \ * Trying to burn /var/archives (242 MB) in \ interactive mode. Mar 5 15:46:40 host backup-manager[24927]: info \ * The burning process will need 1 media(s). Mar 5 15:46:40 host backup-manager[24927]: info \ * Burning content of \ /var/archives/index-20070305-1 Mar 5 15:46:43 host backup-manager[24927]: info \ * Redirecting burning logs into \ /tmp/bm-burning.log.V25664 Mar 5 15:46:43 host backup-manager[24927]: info \ * Burning data to /dev/cdrw. Mar 5 15:48:59 host backup-manager[24927]: info \ * Releasing lock

The process can be checked by looking at the messages log file

Testing the backup

77


Issue 17 When archives are created an MD5 sum is generated. Another command line option will compare the generated MD5 sum with what was written to CD. # backup-manager --md5check Checking MD5 sum for host-20070305.md5: ok Checking MD5 sum for host-etc.20070305.tar.gz: ok Checking MD5 sum for host-home.20070305.tar.gz: ok Archive given does not exist in the repository: \ /var/archives/index-20070305-1

Note that the index file is created during the burn method and is not part of the repository, thus a message indicating the same is displayed. An alternate method for checking the MD5 sums—convenient for checking exported media on systems that do not have Backup Manager installed—is to use the md5sum command directly. $ cd /media/cdrom $ ls host-20070305.md5 host-etc.20070305.tar.gz \ host-home.20070305.tar.gz index-20070305-1 $ md5sum -c host-20070305.md5 host-etc.20070305.tar.gz: OK host-home.20070305.tar.gz: OK

Final tweaks To complete the workstation archive configuration, the daily cron job is modified to prevent the burn method from running daily with the --no-burn command line option. #!/bin/sh # cron script for backup-manager test -x /usr/sbin/backup-manager || exit 0 # Add the --no-burn option /usr/sbin/backup-manager --no-burn

Daily full archives are now configured and exporting archives to CDR are accomplished interactively. Exporting must be done as the root user, for Ubuntu users this can now be done using sudo. An interesting key is the BM_ARCHIVE_PURGEDUMPS key which, when set to its default “true”, will create a symbolic link to the previous day’s archive if no files have changed. This will save storage space by not creating duplicate archives on consecutive days. What is being archived? The BM_TARBALL_DIRECTORIES key, by default, archives the /etc and /home directories, archiving the workstation configuration files and user data. The BM_REPOSITORY_ROOT key defines the location of the repository. The default repository is /var/archives, which, ideally, is a partition large enough to hold seven days worth of archives. The `BM_TARBALL_DIRECTORIES` key, by default, archives the `/etc` and `/home` directories, archiving the workstation configuration files and user data

Conclusion Backup Manager as configured here is a simple and transparent technique for creating archives on a GNU/Linux workstation. Hiding the details of tar and cdrecord and automating daily backups insures some sense of data protection. Manually exporting archives to removable media allows the data to be archived and stored in a safe off-site location for disaster recovery. Beyond backing up a single workstation, Backup Manager also has the ability to archive server and database data and automate remote storage of the repository.

Biography Ken Leyba (/user/5507" title="View user profile.): Ken has been working in the IT field since the early 80's, first as a hardware tech whose oscilloscope was always by his side, and currently as a system administrator. Supporting both Windows and Linux, Windows keeps him consistently busy while Linux keeps his job fun.

78

Conclusion


Issue 17

Copyright information This article is made available under the "Attribution-NonCommercial" Creative Commons License 3.0 available from http://creativecommons.org/licenses/by-nc/3.0/. Source URL: http://www.freesoftwaremagazine.com/articles/backup_your_workstation_with_backup_manager

Conclusion

79


Issue 17

80

Conclusion


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

OpenXDAS A free distributed audit service By John Calcote PUBLISHED: 2007-05-18 No one would argue that software auditing is not an important feature of mission critical applications. If a software based process is critical to the life of your company, then so is the security and access control surrounding resources managed by that software based process. Auditing is the way you track who did what to what and when it happened. Lately, however, the software industry has been lackadaisical at best regarding auditing. Off the shelf software developers either care about auditing, or they don’t. When they do care, they either create elaborate custom auditing solutions that don’t inter-operate with existing tools, or they simply send a few extra messages to the system logging facility and call it auditing—more often the latter. This article is about the benefits of the Open Group’s Distributed Auditing Service (XDAS), and particularly about OpenXDAS, a free software implementation of the XDAS standard sponsored by Novell.

A quick history of software auditing In the early days of computers, software was almost a by-product. When companies like IBM and Hewlett Packard were custom-manufacturing large mainframe computer systems for banks, businesses and institutions the software was free. Heck, if you bought a computer back then, you probably just blew any budget you might have had for software, anyway! But that’s the way things were done. Computer hardware was so expensive that hardware manufacturers would write and maintain custom software for their customers—almost as a fringe benefit. As requirements were collected, software developers would try to find a fit between existing software they’d already written, and the software system that would fall naturally out of the requirements gathering process. Sometimes, only small changes were necessary to the customer’s process in order to reuse an existing package already written for a previous customer. At that point, negotiations between customers and developers would result in the ability to reuse some existing software, with perhaps a few customizations. But since computers were a big deal back then, customers were willing to change their processes significantly in order to accommodate the “requirements” of the computer. Heck, if you bought a computer back then, you probably just blew any budget you might have had for software, anyway! Over the last 30 years, the roles of hardware and software have become juxtaposed. As elaborate general purpose software systems were developed, hardware manufacturers found it more and more difficult to sell their wares to a customer based on the merits of the hardware. Customers began to expect all of the features of certain well-known software systems from their hardware vendors. Slowly vendors began to make the transition to selling the software for real money, while nearly giving away the hardware. Free market pressures have pushed this paradigm to the limit in recent years with common off the shelf (COTS) software packages. It now costs far less for both hardware and software than it ever has, but the ratio of software prices to hardware prices has stabilized at around two to one (respectively). For a real world example, a reasonably high-end Intel processor-based CAD/CAM system today costs about US$3000. But a copy of AutoCAD 2006 costs twice that amount, at around US$6000.

A quick history of software auditing

81


Issue 17

What’s happened to our priorities? Unfortunately, those same free market pressures that brought (relatively) cheap hardware and COTS software to market have also hurt software quality. Software features that are not readily visible to CEOs such as auditing have slipped through the cracks. Software security architects often know the advantages of software auditing, but don’t have the clout they need with their engineering and product managers to ensure that auditing is a well-designed aspect of their company’s software products. Auditing is not sexy and, much like insurance policies or regular backups, it’s not missed until there’s a problem. There’s no doubt about it—our priorities have degraded to the point where we’re willing to settle for whatever we can get these days with regard to software auditing or other important back-end features.

Auditing vs. logging Let me lay it on the line for you. Logging is not auditing. It’s really that simple, and yet we’re being sold a bill of goods these days by software vendors who don’t really understand proper software auditing anymore than we consumers do. By logging, I mean either the use of existing logging systems as the Unix Syslog facility, or the Windows application and security event logs. Or, even more simply, the use of a file-based logging system, where software sends messages to the log file whenever something happens that is considered worthy of such a message. Often what’s considered worthy is extremely subjective—arbitrary really—as developers are given the task to “log something”, so sales people can spout terms like auditing and logging with some degree of integrity. But auditing is really very much more than logging. Logging allows a system to send free-form informational messages to the console or to a log file. Log messages are really designed from the start to be read by humans. They contain informational text messages such as, “Xenobar system successfully started on 3 Oct, 2006 at 15:32”, or “Footech subsystem loaded properly”. Audit messages, on the other hand, should be machine readable. Not that they should be unreadable by humans, but rather that they should be easily parsed and categorized by software. Logging is not auditing. It’s really that simple The software I’m talking about here is called security analysis software. Entire companies have become prosperous by providing security analysis software that spends literally 90 percent of its CPU cycles just parsing and categorizing human readable log messages. They spend most of their time trying to heuristically extract minuscule bits of security-relevant information from near useless log messages pumped out by mission critical software packages. The Sentinel product by eSecurity (recently acquired by Novell) is an example of such a security analysis software package. And now, consider what happens when a new version of Xenobar is shipped, and the latest developer working on this version decides to change all of the log messages throughout the program because he doesn’t like the format used by the previous developer. After all, they’re just log messages, right? “But,” you say, “if a company recognized that security analysis software would be designed to read their log messages, could they not provide a well-defined format, and then ensure that it never changes from version to version?” Sure, and this has been done before. Novell’s eDirectory product, for example, contains a trace facility that is widely used by eDirectory customers for many reasons—including system auditing. This trace facility was originally intended to be used only as a debugging tool by eDirectory engineers, but they soon discovered that several key customers were relying on third-party tools to parse eDirectory trace logs, in order to extract information critical to their business processes. After that, the developers were ordered not to change the format of most of the trace messages between versions. It’s sad really, because now this debugging tool can no longer be used effectively for its original purpose—to help engineers find and fix defects in the product. Proper auditing demands three key features:

82

Auditing vs. logging


Issue 17 1. An application programmer’s interface or API, entirely separate from the logging facility. 2. A common standardized audit event record format. 3. A common standardized audit event taxonomy (a set of events with associated well-defined and documented semantic meanings).

The Bandit Project—the future of identity? Novell has always been a market leader in enterprise-level identity services. Since the acquisition of SuSE Linux several years ago, Novell has also become a leader in providing standards-based free software solutions for the enterprise. The Bandit Project (http://www.bandit-project.org) is a free software effort sponsored by Novell to support the best free software identity infrastructure components on the internet today. If Bandit Project administrators can’t find a required identity infrastructure component, then they create a free software project around the missing concept, using existing open networking standards whenever possible. Besides OpenXDAS, the Bandit Project sponsors a role calculation engine based on the RBAC standards, an authentication credential store called CASA, and an identity attribute service (IDAS) provider for the Higgins identity framework. Higgins is an Eclipse technology project designed to bring identity providers together into a single authentication realm that can be used by service providers and consumers on the internet, as well as within the enterprise. Novell and the Bandit Project are primary sponsors of the OpenXDAS project. Bandit Project members consider software auditing a required part of a well-rounded identity services infrastructure component set. Bandit Project identity infrastructure components are designed to work equally well in the free software world and at the enterprise level. By providing free identity services infrastructure components, Novell promotes one of its primary goals—to grow the industry.

Enter OpenXDAS and the XDAS standard In 1998, the value of proper auditing was being reconsidered by a group of major software vendors around the world. These companies approached the Open Group, an open standards organization famous for world-wide computing standards such as the Single Unix Specification, the Distributed Computing Environment (DCE), CORBA and the XWindow system, and many other well-known standards and certifications. Representatives formed a working group called the Distributed Audit Service (DAS) working group, in an effort to define a common standard audit record format for both storage and transmission. Their goals included the definition of a record format that was both easy for machines to parse, and for humans to read. The results of this year-long effort were published in the initial XDAS preliminary specification in 1999. Unfortunately, a series of coincidental events culminated in the discontinuation of the project. It’s interesting to note, however, that nothing better than XDAS has ever been suggested to any standards body since that time. Other network and device management standards have arisen, as well as proprietary specifications, which have incorporated some of the features of XDAS. But no auditing standard as concise and focused has ever been attempted since the dissolution of the XDAS working group. In 1998, the value of proper auditing was being reconsidered by a group of major software vendors around the world XDAS defines a basic C language application programmer’s interface (API). This API was designed with two goals in mind—simplifying the transition from the traditional use of logging facilities as an auditing tool, and capturing all of the required bits of information. The XDAS C language API is designed to be as simple as possible, but no simpler. Developers accustomed to instrumenting their applications for auditing with a logging facility might be disinclined to use a complex auditing interface when they’ve been using a simple, single-function formatted string logging interface in the past. While the XDAS C language API is not as simple as, say Syslog for example, neither is it difficult. Developers create an OpenXDAS session once at process startup, and close the session once at process termination. During the life of the process, each time an audit-worthy event occurs, the program should call an

Enter OpenXDAS and the XDAS standard

83


Issue 17 OpenXDAS function to create a new record, and another function to commit that record. XDAS defines a standard record format containing what the DAS working group deemed to be a canonicalized form of the key elements of an audit record: • Event • Originator • Initiator • Target • Source • Data These standard audit record elements make up the auditing equivalents of what we might recognize as the key verification elements present in human interactions. For instance, when a journalist quotes someone regarding a witnessed event, he or she includes the following information in the article: • The event (the nature of the news-worthy occurrence) • The journalist’s own name and credentials • The person or organization that initiated the event • The person or organization affected by the event • The person reporting the event (or sometimes just “anonymous trustworthy sources”) • Additional interesting data about the event Another analysis of this critical information set shows that it parallels human conceptual events. Take the following sentence, for example: Joe rode the bus. There are three critical bits of information in this simple sentence. These are formally called the “subject”, the “action” and the “object”. The subject is usually found in the first part of the sentence and refers to the initiator of the action. The action itself is the verb—what’s happening—the occurrence that’s being reported. Finally, the object is generally at the end of the sentence and represents the target of the action. In this example, “Joe” is the subject who did something. “rode” is the action, or what it was that Joe did, and “the bus” is the object, or what was affected by Joe’s action. OpenXDAS is a free software implementation of the Open Group’s XDAS standard. The OpenXDAS project is still in its infancy. What this means is that OpenXDAS is not yet a complete implementation of the XDAS standard. So is it useful? The answer is a resounding yes. The XDAS standard defines several categories of API functionality. One of these is called the “Event Submission” API. Event submission implies the ability to generate complete audit event records in the XDAS common record format. In truth, OpenXDAS attains about 80 percent of its most useful functionality just by implementing the event submission API. OpenXDAS implements the XDAS standard as a C language client instrumentation library, a Java language client instrumentation library, and a client-side service or daemon process that provides a common point of client-side filtering and configuration management. The initialization API provides the following functions. xdas_initialize_session must be called once at application startup, and xdas_terminate_session must be called once at shutdown: int xdas_initialize_session( int * minor_status, const char * org_info, xdas_audit_ref_t * das_ref); int xdas_terminate_session( int * minor_status, xdas_audit_ref_t * das_ref);

84

Enter OpenXDAS and the XDAS standard


Issue 17 The event submission API provides five functions, but don’t let this number deceive you—the submission API can be effectively used with only two of them: int xdas_commit_record( int * minor_status, xdas_audit_ref_t das_ref, xdas_audit_rec_desc_t * audit_record_descriptor); int xdas_discard_record( int * minor_status, xdas_audit_ref_t das_ref, xdas_audit_rec_desc_t * audit_record_descriptor); int xdas_put_event_info( int * minor_status, xdas_audit_ref_t das_ref, xdas_audit_rec_desc_t * audit_record_descriptor, unsigned event_number, unsigned outcome, const char * initiator_information, const char * target_information, const char * event_information); int xdas_start_record( int * minor_status, xdas_audit_ref_t das_ref, xdas_audit_rec_desc_t * audit_record_descriptor, unsigned event_number, unsigned outcome, const char * initiator_information, const char * target_information, const char * event_information); int xdas_timestamp_record( int * minor_status, xdas_audit_ref_t das_ref, xdas_audit_rec_desc_t audit_record_descriptor);

Developers must call xdas_start_record and xdas_commit_record. The remaining functions exist for convenience in special cases. The instrumentation library sends messages to the service through a local IPC channel, which applies filters and then forwards remaining records to installable logging facilities. It might surprise you to read that after all of the above discussion of the lack of merit in the use of system logging facilities as audit frameworks, one of the supported OpenXDAS logging facilities is none other than Syslog. The problems with using a system logging facility as an audit framework are not related to the data store, but rather to the record format. When OpenXDAS applies the XDAS common record format to syslog messages, they become so much more useful to security analysis software, which is already designed to read syslog message logs.

The benefits of a taxonomy Another aspect of a well-designed audit system is a common event taxonomy. Remember when I said that machines must be able to easily parse and classify audit events? Well, a common record format makes parsing easy, but a common event taxonomy makes event classification easy. An event taxonomy is nothing more than a standardized set of common audit events, sometimes organized into a suitable hierarchy. XDAS defines a standard set of events that are general-purpose enough to capture a high percentage of audit-worthy events in a software system. Interestingly, there are only about 30 standard events in the XDAS event taxonomy. The events in the taxonomy are divided into nine major classes as follows: • Account Management Events • User Session Events • Data Item and Resource Element Management Events • Service or Application Management Events • Service and Application Utilization Events

The benefits of a taxonomy

85


Issue 17 • Peer Association Management Events • Data Item or Resource Element Content Access Events • Exceptional Events • Audit Service Management Events Events in the Account Management Event class include the following: • Create account • Delete account • Disable account • Enable account • Query account attributes • Modify account attributes A standard event taxonomy allows security analysis software to quickly and efficiently capture the essence of an event. The software may be configured to generate an alarm or execute an external program on receipt of a specific type of event. This process is completely deterministic with a standard event taxonomy, but somewhat arbitrary and subjective with free-form log messages. A certain log message may have been intended to convey the desired information, but was simply not formatted according to the pattern matching criteria specified by the analysis software. A standard event taxonomy alleviates this problem. Often, developers come to me, ready to instrument their applications, with questions like, “My application doesn’t manage accounts! How can you say these events fit my needs?” Developers must realize that this is a very generic set of high-level security-relevant events. While account management may be a perfect fit for software systems that keep track of users through user accounts, account management might also be thought of more generally as a set of events related to the creation and management of the persistent storage of attributes associated with users in any fashion. Some applications simply may not have anything to do with account management in any form, so they won’t use the account management events.

Security-relevant, or just stuff that happens The XDAS standard is aimed at creating a common security infrastructure in the face of existing security or pseudo-security systems already widely in use. For instance, one of the XDAS C language API functions is designed to import records from native logging facilities. This import process sorts through the myriad of log messages in a system log, extracting messages that have security relevance, and reformatting them into XDAS format. Remember that one of the fields of the common XDAS record format is the “Source” field. This field is generally left blank when XDAS instrumented applications commit audit records. It’s used during import when log records in other systems are converted to XDAS common record format and then submitted to the XDAS auditing framework. The Source field contains a referral to the original record from which an XDAS record was generated. It could be any type of referral, but in today’s world, a URL seems an appropriate vehicle for source record information. So often, developers submit reams of log records containing nothing useful to security analysis software So often, developers submit reams of log records containing nothing useful to security analysis software. The XDAS common event taxonomy helps developers determine what’s security-relevant, and what’s just interesting stuff that happened.

Getting the package OpenXDAS is available in several package formats, including SuSE and RedHat binary RPM’s for Intel and AMD 32 and 64 bit platforms, Windows installer packages, simple “tarballs”, and of course full source code archives in both tar.bz2 and zip formats. You can download the latest version of the OpenXDAS packages from SourceForge, and you’ll find the project page there too. Both pages are cross-linked, so you should have no trouble getting to one from the other. There is also very complete documentation in both OpenOffice (2) format and Adobe PDF format. Documentation currently includes a complete user’s manual targeted toward developers wanting to instrument

86

Getting the package


Issue 17 their applications to submit XDAS audit records, and even a conversion guide for developers who have previously instrumented their applications using the Novell Nsure Audit SDK.

Summary More than ever, corporate software consumers are begging vendors to include more robust auditing features in their software packages. OpenXDAS provides a well-designed, standards-based approach to relatively simple audit instrumentation. As time passes, consumers will demand better auditing functionality. This is not an opinion, but a fact driven by recent business world events such as the Enron and Arthur Anderson fiascoes. The US Securities Exchange Commission is cracking down with tougher requirements for corporate security policy. A better auditing system is coming, and Novell and the developers of OpenXDAS hope to pave the way through this new legal requirements jungle with a well-designed common audit record.

Biography John Calcote (/user/28810" title="View user profile.): John Calcote has worked in the software industry for over 25 years, the last 17 of which were at Novell. He's currently a Sr. Software Engineer with the LDS Church working on open source projects. He's the project maintainer of the openslp project, the openxdas project, and the dnx project on sourceforge.net. He blogs on open source, programming and software engineering issues in general at http://jcalcote.wordpress.com.

Copyright information Verbatim copying and distribution of this entire article is permitted in any medium without royalty provided this notice is preserved. Source URL: http://www.freesoftwaremagazine.com/articles/openxdas

Summary

87


Issue 17

88

Summary


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

ODF/OOXML technical white paper A white paper based on a technical comparison between the ODF and OOXML formats By Edward Macnaghten PUBLISHED: 2007-05-02 I was asked by the UK Action Group of the Open Document Format Alliance to write a white paper on the technical differences between ODF and OOXML. After much agonizing, correcting, having others correct my mistakes, suggestions, changes and drafts I still have got something that may be alright to be previewed by all. The actual documents are in ftp://officeboxsystems.com/odfa_ukag both as a “PDF” and an “ODT” (Open Document Format). The following is a transcribed version of the white paper. Although it has all the Free Software Magazine formatting constraints which means that the information is not as clearly presented, so therefore I recommend you to download the document from the above URL. It is here primary for reference purposes. Enjoy.

Technical Distinctions of ODF and OOXML ODF Alliance UK Action Group A Consultation Document by Edward Macnaghten

Introduction For many years various computer software vendors produced office software. However, it was difficult for a user of one application to reliably manipulate documents that were created by another. The file format specifications were closely guarded secrets, and for interoperability to exist developers would spend large amounts of resources trying to decipher complex “file dumps”. Obviously a standard was needed, and ODF came to the fore. Soon after, Microsoft suggested that its own OOXML should perform that role instead. An important point of any standard is the desirability and ease with which it can be implemented. A standard that cannot be implemented by all interested parties within the realm it applies to makes it virtually useless, and only serves to hinder interoperability rather than promote it. The technical philosophy of the design of a standard is therefore important. This document reviews the ODF and OOXML formats. It examines some of the nuts and bolts as to how the

Introduction

89


Issue 17 files are actually formed and the technical merits (or otherwise) of what is created. This only examines the technical issues; those concerning intellectual property and legal issues are dealt with elsewhere.

ODF Background History ODF is a format developed as a vendor neutral standard. However, it did not originate from anywhere inparticular but rather through a process of evolution [1]… • In 1999 StarDivision began work on an XML interchangeable file format for their StarOffice product. • In August that year StarDivision was acquired by Sun Microsystems. • In October 2000, Sun Microsystems released large amounts of the source code to the community driven OpenOffice.org project under an open licence. At the same time an XML community project was created with the goal of defining an XML specification for the interchangeable file format. • In May 2002 OpenOffice.org version 1.0 and StarOffice version 6 were released using this XML format (SXW). • Also in 2002 collaboration began with other office suites, notably the KOffice project, to further refine the interoperability of the format. • In December 2002, OASIS had a conference call announcing the creation of what is now the ODF standard. • Then, from 2002 to 2004 the format was overhauled based on experiences to date and examination of what is required in an office format. • In December 2004, a second draft of the XML file format was approved by OASIS for review. • In February 2005, a third draft was published for public feedback—six years after commencement of the project and five years after public consultation began. • In May 2005, the ODF format was approved as an OASIS standard [2]. • Soon after that, many office suites adopted the standard as a means to store the documents [3]. • In September 2005, ODF was submitted as ISO standard. • In May 2006, ODF achieved ISO certification (ISO/IED 26300). • In February 2007, OpenDocument Version 1.1 had been approved by OASIS [4]. It particularly addresses accessibility issues. • ODF throughout continued and continues to grow in popularity and support [5].

Philosophy The phiosophy behind the format was to design a mechanism in a vendor neutral manner from the ground up using existing standards wherever possible. Although this meant that software vendors would need to tweak their individual packages more than if they continued down their original routes, the benefits of interoperability were understood by the participants to be important enough to justify this [6]. This is reflected in the specification in many ways, but specifically: • XSL:FO—Formatting • SVG—Scaleable Vector Graphics • MathML—Mathematical formulas • XLink—Embedded links • SMIL—Synchronized Multimedia Integration Language • Xforms—Forms definitions

OOXML Background

90

OOXML Background


Issue 17

History OOXML is the format Microsoft developed for its Office 2007 suite. The development of OOXML was not performed with visible public consultation. It is difficult to determine when development of the format started. However, the following is known: • Microsoft used an XML format as an option in their Office 2003 suite, though it was not the default format. It was not compressed and all data was stored in the single XML file, binary data, such as pictures, being represented as BASE64 strings in special binData tags. A strict licence governing use of this format was included. This was released during 2003. • Microsoft started development of Microsoft Office 12, which would be known as “Microsoft Office 2007”. They developed a new XML schema (OOXML), probably using the Office 2003 XML files as a base. Like ODF, the format stores the data in a number of files embedded in a .zip file. No visible consultation with the public occurred during its creation. • Under pressure, Microsoft relaxed its licensing terms in January 2005. However, they were not relaxed enough to permit free software to use it [7]. • Shortly after the Commonwealth of Massachusetts’ Information Technology Division chose OASIS ODF as a standard for its documents Microsoft announced that it would be submitting its format to ECMA for standardisation [8]. Later that month (November 2005), Microsoft relaxed the licence further as well as placing a mutual Non-Assertive-Clause for the patents they held on it [9]. • In December 2006, ECMA approved OOXML as a standard (ECMA 376) [10]. This was done after no visible public consultation, and approximately two and a half years of development since releasing their previous (Microsoft Office 2003) closed XML format(10). It was almost immediately submitted to ISO to be certified as an international standard later that month. • In January 2007, a draft of over 6000 pages was released to members for 30 days to analyse and submit “contradictions”. • Microsoft released Microsoft Office 2007 in January 2007. • In February 2007, an unprecedented twenty countries submitted comments and contradictions to the standard.

Philosophy We are of the view that the format appears to be designed by Microsoft for Microsoft products, and to inter-operate with the Microsoft environment. Little thought appears to have been exercised regarding interoperability with non-Microsoft environments or compliance with established vendor-neutral standards [11].

An example of the XML differences between ODF and OOXML word processing files Introduction The philosophies behind ODF and OOXML greatly affect the end result. A way to demonstrate this is to review the meat of the file of the same document saved in the different formats. To this end an example document has been assembled, and the appropriate parts of the XML files examined.

Procedure To do this the following operations were performed: 1. A basic 1 page document consisting of a sentence, with some elementary font effects, and a picture, was created. This document has been pasted onto the following page for reference. 2. The document was saved both as an ODF (.odt) and an OOXML (.docx) file. 3. The resulting zip files were each expanded and explored to find the “meat” of the document. For each this was then extracted.

An example of the XML differences between ODF and OOXML word processing files

91


Issue 17 4. The resulting XML for each was then reformatted for readability just by adding indents and line breaks, and by colouring different parts of the text. The same formatting rules and methods were used on each example. 5. The formatted XML extract for each is reproduced below. 6. An analysis follows the XML extracts. Although this example shows a relatively small aspect of the two formats, it does highlight the differences between the designs.

Example Document

The ODF XML Representation of the “meat” of the “Example Document” <text:h text:style-name="P1" text:outline-level="1"> Example document </text:h> <text:p text:style-name="Standard"> This has some <text:span text:style-name="T1"> bold formatting </text:span> , also some <text:span text:style-name="T2"> with italics </text:span> , a <text:a xlink:type="simple" xlink:href="http://www.odfalliance.com"> <text:span text:style-name="Internet_20_link"> web link </text:span> </text:a> and a picture... </text:p> <text:p text:style-name="Standard"> <draw:frame draw:style-name="fr1" draw:name="graphics1" text:anchor-type="as-char" svg:width="5.9929in" svg:height="5.4362in" draw:z-index="0"> <draw:image xlink:href="Pictures/10000000000002DC00000298CDD44AEF.jpg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/> </draw:frame> </text:p>

The OOXML XML Representation of the “meat” of the “Example Document” <w:p> <w:pPr> <w:pStyle w:val="Heading1"/>

92

Procedure


Issue 17 </w:pPr> <w:r> <w:t> Example document </w:t> </w:r> </w:p> <w:p> <w:r> <w:t> This has some </w:t> </w:r> <w:r> <w:rPr> <w:b/> </w:rPr> <w:t> bold formatting </w:t> </w:r> <w:r> <w:t> , also some </w:t> </w:r> <w:r> <w:rPr> <w:i/> </w:rPr> <w:t> with italics </w:t> </w:r> <w:r> <w:t> , a </w:t> </w:r> <w:hyperlink w:rel="rId4" w:history="1"> <w:r> <w:rPr> <w:rStyle w:val="Hyperlink"/> </w:rPr> <w:t> web link </w:t> </w:r> </w:hyperlink> <w:r> <w:t> and a picture... </w:t> </w:r> </w:p> <w:p> <w:r> <w:pict> <v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/>

The OOXML XML Representation of the “meat” of the “ExampleDocument”

93


Issue 17 <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype> <v:shape id="_x0000_i1025" type="#_x0000_t75" style="width:431.25pt;height:391.5pt"> <v:imagedata w:rel="rId5" o:title="dalek"/> </v:shape> </w:pict> </w:r> </w:p>

Analysis of the two examples This section highlights aspects demonstrated in the above example. It is by no means a complete analysis of the differences between the two formats but it does show the philosophical and conceptual thought processes behind each. Tags and tag naming To start with, a brief and over-simplified description of a tag. A tag is what XML encloses in the “<” and “>” characters. The name is the first (and sometimes only) part of it. The name is of the format namespace:tagname where the “namespace” is a means of grouping some tags of a particular type together. Should the name begin with a “/” character then that signifies the end of a “block” created with a tag of the same name. The OOXML has shorter tag names. The benefits to this are firstly a saving of file space, and secondly it facilitates an increase in the speed used of “parsing” the data to convert it to the internal structures the application needs. However a greater number of tags are needed in that format. The ODF naming is longer and more wordy although it follows the XML convention for naming tags. The benefit to that is it eases interoperability when implementing the standard. File space and parsing performance increases are offset by the fact there are fewer tags required in this format. The differences in file space and performance are of little significance. Firstly, the ZIP algorithm of the containing files, which each uses, compresses all the tag names to such an extent that they use almost exactly the same amount of file space. Secondly, in modern machines disk access takes the bulk of load time, rendering the processing resource required for parsing tag names insignificant. The readability and clarity of the tag names influence the adoption of the formats. The cost of implementing the standard such as this is directly related to the resource required to develop the mechanics. If the standard is cryptic, then extra resources need to be deployed both to implement it and support it. There are hundreds of tags in each format and the more unintuitive they are the harder it is for developers to understand, remember and reference them. Span feature Again a brief and over-simplified description: “Spanning” is a method of changing the attributes of a section of a block within the block itself. For instance, a bold italic red piece of text might be embedded within a paragraph. A method of storing that in an XML document is to place a tag at the beginning of that section (in the example, specifying the text to be bold and italic), and a terminating tag at the end. ODF supports the “span” feature, as seen by the text:span tag above. OOXML does not support this. OOXML needs to end the parent block at the beginning of the change of format and create a new one, then end that block when the format changes back, and create yet another one prior to continuing. This can be seen with the relative proliferation of the w:t, and w:r tags in the example,

94

Analysis of the two examples


Issue 17 and makes the document format considerably more complex. Use of prior standards The use of existing standards eases the process of creating a compliant product, which is an obvious goal for standards in the first place. The already-existing “xlink” and “svg” standards can be seen in the ODF XML example above. The design of that format used existing standards wherever possible. OOXML seems not to apply existing standards in this area. The only standard it appears to follow is the basic XML formatting standard itself. Also some aspects of OOXML can be exceedingly obfuscated, such as the eqn attributes in the v:f tag in the example—“<v:f eqn="prod @3 21600 pixelWidth"/>”.

An example of the XML differences between ODF and OOXML spreadsheet files Introduction As with the word processing example above, the spreadsheet file format was examined. Again, the differences between the philosophies of the formats come to the fore on examination.

Procedure To do this, the following operations were performed: 1. A basic spreadsheet (represented below) was created, consisting of two rows each consisting of a name, a date, a value and a simple formula. A total row was created with the word “Total” in bold and the sum of the values in the respective columns, and finally a piece of text of a varying format was added. 2. The document was saved both as an ODF (.ods) and an OOXML (.xlsx) file. 3. The resulting zip files where each expanded and explored to find the “meat” of the document. This was then extracted. 4. As with the word processing example, the resulting XML was then reformatted for readability just by adding indents and line breaks, and by colouring different parts of the text. The same formatting rules and methods were used on each example. 5. The formatted XML extract for each was reproduced in the pages below. 6. An analysis follows the XML extracts. Example spreadsheet

Example spreadsheet

An example of the XML differences between ODF and OOXML spreadsheet files

95


Issue 17 Contents: . A B C 1 Fred 3/5/2007 23.00 2 George 6/2/2007 14.00 3 Total . 37.00 4 Normal Bold_Italic_Both . . Contents of the example spreadsheet

D 7.67 4.67 12.33 .

Notes: • Cells “D1” and “D2” contain the formulas “=C1/3” and “C2/2” • Cells “C3” and “D3” contain the formulas “=SUM(C1:C2)” and “=SUM(D1:D2)” • Dates are UK representations (DD/MM/YYYY)

ODF XML Representation of the “meat” of the spreadsheet <table:table table:name="Sheet1" table:style-name="ta1" table:print="false"> <table:table-column table:style-name="co1" table:default-cell-style-name="Default"/> <table:table-column table:style-name="co1" table:default-cell-style-name="ce3"/> <table:table-column table:style-name="co1" table:default-cell-style-name="Defaul"/> <table:table-column table:style-name="co1" table:default-cell-style-name="ce5"/> <table:table-row table:style-name="ro1"> <table:table-cell office:value-type="string"> <text:p> Fred </text:p> </table:table-cell> <table:table-cell table:style-name="ce4" office:value-type="date" office:date-value="2007-03-05"> <text:p> 3/5/2007 </text:p> </table:table-cell> <table:table-cell office:value-type="float" office:value="23"> <text:p> 23.00 </text:p> </table:table-cell> <table:table-cell table:formula="oooc:=[.C1]/3" office:value-type="float" office:value="7.66666666666667"> <text:p> 7.67 </text:p> </table:table-cell> </table:table-row> <table:table-row table:style-name="ro1"> <table:table-cell office:value-type="string"> <text:p> George </text:p> </table:table-cell> <table:table-cell table:style-name="ce4" office:value-type="date" office:date-value="2007-06-02"> <text:p> 6/2/2007 </text:p> </table:table-cell> <table:table-cell office:value-type="float" office:value="14"> <text:p> 14.00 </text:p> </table:table-cell> <table:table-cell table:formula="oooc:=[.C2]/3" office:value-type="float" office:value="4.66666666666667"> <text:p>

96

Procedure


Issue 17 4.67 </text:p> </table:table-cell> </table:table-row> <table:table-row table:style-name="ro1"> <table:table-cell table:style-name="ce1" office:value-type="string"> <text:p> Total </text:p> </table:table-cell> <table:table-cell table:style-name="Default"/> <table:table-cell table:style-name="ce5" table:formula="oooc:=SUM([.C1:.C2])" office:value-type="float" office:value="37"> <text:p> 37.00 </text:p> </table:table-cell> <table:table-cell table:style-name="ce7" table:formula="oooc:=SUM([.D1:.D2])" office:value-type="float" office:value="12.3333333333333"> <text:p> 12.33 </text:p> </table:table-cell> </table:table-row> <table:table-row table:style-name="ro2"> <table:table-cell table:style-name="ce2" office:value-type="string"> <text:p> <text:span text:style-name="T1"> Normal </text:span> <text:span text:style-name="T2"> Bold </text:span> <text:span text:style-name="T3"> Italic </text:span> <text:span text:style-name="T4"> Both </text:span> </text:p> </table:table-cell> <table:table-cell table:number-columns-repeated="2"/> </table:table-row> </table:table>

OOXML XML representation of the “meat” of the Spreadsheet Excerpt from the “sheet1.xml” file <sheetData> <row r="1" spans="1:4"> <c r="A1" t="s"> <v> 0 </v> </c> <c r="B1" s="1"> <v> 39146 </v> </c> <c r="C1"> <v> 23 </v> </c> <c r="D1" s="2"> <f> C1/3 </f>

ODF XML Representation of the “meat” of the spreadsheet

97


Issue 17 <v> 7.666666666666667 </v> </c> </row> <row r="2" spans="1:4"> <c r="A2" t="s"> <v> 1 </v> </c> <c r="B2" s="1"> <v> 39235 </v> </c> <c r="C2"> <v> 14 </v> </c> <c r="D2" s="2"> <f> C2/3 </f> <v> 4.666666666666667 </v> </c> </row> <row r="5" spans="1:4"> <c r="A5" s="3" t="s"> <v> 2 </v> </c> <c r="C5"> <f> SUM(C1:C4) </f> <v> 53 </v> </c> <c r="D5" s="2"> <f> SUM(D1:D4) </f> <v> 12.333333333333334 </v> </c> </row> </sheetData>

OOXML Spreadsheet—“sharedStrings.xml” file <sst count="4" uniqueCount="4"> <si> <t> Fred </t> </si> <si> <t> George </t> </si> <si> <t> Total

98

OOXML XML representation of the “meat” of the Spreadsheet


Issue 17 </t> </si> <si> <r> <t> Normal </t> </r> <r> <rPr> <b/> <sz val="10"/> <rFont val="Arial"/> <family val="2"/> </rPr> <t> Bold </t> </r> <r> <rPr> <sz val="10"/> <i/> <rFont val="Arial"/> <family val="2"/> </rPr> <t> Italic </t> <rPr> <sz val="10"/> <b/> <i/> <rFont val="Arial"/> <family val="2"/> </rPr> <t> Both </t> </r> </si> </sst>

Analysis of the two examples The XML for spreadsheets is more “fiddly” than the one for word processing. The reason for this is that it needs to organise the data into a table, rows, columns and cells. As before, the above is not a complete representation of the entire XML files but it does highlight the differences in philosophy. Tags and tag naming The same applies to spreadsheets as it does to the word processing example. Short tag names in OOXML simply means the specification is somewhat cryptic. For example, what DOES “<c r=”A5” s=”3” t=”s”>” mean exactly? XML is intended to be more descriptive. Although it is computers that interpret the files for the application it is human developers who are assigned to implement and maintain the routines. Faster and more cost effective deployment and integration of the format is achieved when the tag and attribute-name’s meanings are clear. Storage of text An almost immediate “feature” of OOXML is that there is no “string” or “text” data in the main content area of the sheet’s XML. Instead there are references to a special “sharedStrings.xml” file. Where the type of the cell is text, OOXML sets the t attribute in the c tag to be value s, and the body contains a number representing the nth item (starting from zero) of a list of strings stored in the sharedStrings.xml file. The stated reason behind this is to reduce the size of the file by consolidating duplicate text entries of the spreadsheet to save space.

Analysis of the two examples

99


Issue 17 Cell value (A1) Fred

ODF representation <table:table-cell office:value-type="string"> <text:p> Fred </text:p> </table:table-cell>

OOXML representation <c r="A1" t="s"> <v> 0 </v> </c>

Another peculiar “feature” of the OOXML’s treatment of text is the inconsistent formatting. The cell’s formatting style is defined in the cell’s tag (the c tag) using the s attribute, which contains a number that cross references to the nth item, starting from zero, of a list of fonts defined in the “styles.xml” file (n being the number defined in the s attribute). The inconsistency appears when examining a cell with varying text formats, where some of the formatting is defined in the si tag in the sharedStrings.xml file, but explicitly instead of using “font item numbers” references as the main file.EDITOR: This last sentence from “but explicitly…” doesn’t make sense to me. Please review it. The ODF format renders above complexity unnecessary. ODF only uses a style-name attribute that cross references a style table. This is consistent throughout the ODF specification: “<...style?name="ce5"...>”. Date representations Cell value (B1) 3/5/2007

ODF representation <table:table-cell table:style-name="ce4" office:value-type="date" office:date-value="2007-03-05"> <text:p> 3/5/2007 </text:p> </table:table-cell>

OOXML representation <c r="B1" s="1"> <v> 39146 </v> </c>

An important aspect is the treatment of dates. OOXML stores the dates 5th March 2007 and the 2nd June 2007 as the numbers 39146 and 39235 respectively. This is the number of days since 31st December 1899. However, there is a “design bug” in the specification that states that the year 1900 needs to be treated as a leap year, which it is not. If a particular setting is altered in the OOXML format, the above numeric representation changes to the number of days since 1st January 1904, avoiding this problem.

100

Analysis of the two examples


Issue 17 ODF represents the dates 5th March 2007 and 2nd June 2007 as “2007-03-05” and “2007-06-02” as in accordance with the existing ISO standard. Redundancy in numeric and date cells Cell value (C1) 23.00

ODF representation <table:table-cell office:value-type="float" office:value="23"> <text:p> 23.00 </text:p> </table:table-cell>

OOXML representation <c r="C1"> <v> 23 </v> </c>

(also see date example above) OOXML simply stores the numeric value in each table cell unless there is a formula, in which case it stores that and the result of the formula. ODF always stores the numeric value as an attribute and the formatted representation in the body, as well as the formula as an attribute if it exists. This means ODF stores redundant data. One rationale behind this is that although it is a little more complicated to create, it is a lot easier to read. A program inquiring on the spreadsheet can extract either the value or the formatted text easily, whereas in OOXML, extracting the formatted text is highly complicated. The other rationale deals with consistency within the specification, which is covered in the next section. A rationale for OOXML omitting this redundancy is that it creates larger files. Consistency with the rest of the specification ODF’s table specification for spreadsheets is identical to the table definition used in the word processing documents. The tags and the attributes are the same. In fact, the “Table” definition only occurs once in the specification and the spreadsheet and word processing table sections simply refer to it. This simplifies the task of implementing the specification as well as making it shorter. In the OOXML specification, the same is not the case. The tag and attribute names and structures differ. There are some formatting similarities for the cells with a variable format. However, they are not stored as part of the table data but in the “sharedStrings.xml” file, making simple portability very difficult in practice. Summary of differences The differences between the formats appear to reflect their respective philosophies. The emphasis of OOXML appears to be on representing the data the Microsoft Office applications use and reducing file sizes to save space and enhance performance. The emphasis of ODF appears to be one of interoperability, ease of implementation and access to the data. The file space savings of OOXML are all but obliterated through the ZIP algorithm of the containing file that the formats use. This reduces the redundancy without complicating the formats themselves. Also, performance enhancements of shorter tag names are insignificant to the resource required by the computer to retrieve the data from the disk, memory card or network. Although OOXML is better designed for use with Microsoft Office products, the use of meaningful tag names, explicit representations of data and consistency throughout the specification will make ODF more interoperable and easier when implementing the format in different scenarios.

Analysis of the two examples

101


Issue 17

Unique application configuration settings For an open format to be adopted it needs to be the default means of saving data for the applications adopting it. This presents a problem.

The problem An office manipulation program, such as a word processor or spreadsheet, will have quirks that are unique to it. For instance, Microsoft’s Word 2003 has compatibility options such as “Auto Space like Word 95” and “Convert backslash characters into Yen signs”. By the same token, OpenOffice.org 2.0 Writer has options to “Use OpenOffice.org 1.1 tabstop formatting” and “Consider wrapping style when positioning objects”. These options are unique to their respective applications, and have no place in the interoperability of the documents themselves; other applications run a risk of not knowing how to interpret them. They can, however, mean competitive advantages for one application over another. This information needs to be included somehow. The reason is that, should an application save its data on a local disk, then, after reloading the data, it is important that these unique application configuration settings are maintained. The above does mean that it’s likely that the precise rendering of a document is slightly different when transferring it from one application to another, regardless of format used. However, this is not relevant when considering the fact that the same office application often renders differently from one version to the next, or even that the same version of the same office application running on the same operating system will render differently depending on the machine on which it is run. Peripheral items like fonts installed and different printers attached can affect rendering. Should precise rendering of a document be required then there are standards for that, notably PDF. In these circumstances no editable office document format should be used. The problem the specification designers need to solve is how to maintain these application-specific settings in an open document format.

The ODF Solution ODF’s solution is the adoption of a configuration tag. An example follows: Sample of ODF configuration settings for OpenOffice.org <config:config-item-set config:name="ooo:configuration-settings"> <config:config-item config:name="PrintPaperFromSetup" config:type="boolean"> false </config:config-item> <config:config-item config:name="AddFrameOffsets" config:type="boolean"> false </config:config-item> <config:config-item config:name="PrintLeftPages" config:type="boolean"> true </config:config-item> <config:config-item config:name="PrintReversed" config:type="boolean"> false </config:config-item> <config:config-item config:name="PrintTables" config:type="boolean"> true </config:config-item> <config:config-item config:name="LinkUpdateMode" config:type="short"> 1 </config:config-item> </config:config-item-set>

The particular configuration parameter is stored in the config:name attribute, the type of the parameter’s value in the config:type attribute and the configuration setting in the body of the tag itself.

102

Unique application configuration settings


Issue 17 As shown above, all the parameters are also enclosed within a config-item-set tag which is specific for the application, which means identical config:name values for different applications will not clash. These unique settings mean nothing to other applications, so they are ignored when they load the document, and are, as far as functionality is concerned, irrelevant. Here is a possible scenario. In the future, it would be practicable for ODF aware applications to create a “generic” or “alien” configuration panel in their settings option that simply stores and lists unknown configuration settings it finds. The tag itself states what type of setting it is in a human-readable form, so theoretically modification of these would be possible too. When the document is saved for transfer then these settings could be included in the file. This means when one person creates a document, setting some of their application’s configuration in their own way, then transfers it to a second person who edits the document using a different application, saves it and passes it back, the first person would be able to edit the file and the unique application’s configuration settings would have been kept.

The OOXML solution OOXML chose this route. Rather than create an application-definable configuration tag there is a unique tag for each setting. An example follows: Sample of OOXML configuration settings for Microsoft Office <w:compat> <w:doNotSnapToGridInCell/> <w:doNotWrapTextWithPunct/> <w:doNotUseEastAsianBreakRules/> <w:growAutofit/> <w:footnoteLayoutLikeWW8/> </w:compat>

There are well over a hundred of these tags defined in the specification. Although OOXML’s version on the face of it seems simpler, it adds additional complications for adoption of the standard. Currently, the only application’s unique settings that are catered for are the applications that the standard’s authors have decided to include, which would appear to currently consist of the Microsoft Office suites. For other applications to be added, further tag names would need to be defined in the specification, potentially creating thousands of them, each having nothing to do with interoperability. A new application vendor could get around this by unilaterally devising their own home-grown tag names and using those. However these would break the specification. Also as the specification does not define a method of placing these tags within a container tag creating your own tags could lead to a possibility of a clash with other applications. Furthermore, there seems no obvious way for an application using OOXML to display “alien” configuration settings in its own panel. Although the application could theoretically store the tag names and associated values, there is no guaranteed way of knowing what the type of the attribute is, making it much harder to present and nearly impossible to make changeable with any validation at all. This is made worse by the fact that boolean values are decided by the existence or otherwise of a tag rather than a value in its body, meaning that the only way to find if it is unset is to look for it and see if it is not there.

Interoperability between applications regarding configuration settings If Microsoft were to adopt ODF for Office, it could cater for all its unique settings by the way that specification is defined at the moment. The above example could be represented as:

Interoperability between applications regarding configuration settings

103


Issue 17

How some Microsoft Office configuration settings could be represented in ODF <config:config-item-set config:name="mso:compatability-settings"> <config:config-item config:name="SnapToGridInCell" config:type="boolean"> false </config:config-item> <config:config-item config:name="WrapTextWithPunctuation" config:type="boolean"> false </config:config-item> <config:config-item config:name="UseEastAsianBreakRules" config:type="boolean"> false </config:config-item> <config:config-item config:name="AllowTableExpandBeyondMargin" config:type="boolean"> true </config:config-item> <config:config-item config:name="EmulateWW8FootnotePlacement" config:type="boolean"> true </config:config-item> </config:config-item-set>

Although the above would still be alien to non Microsoft Office applications they could easily be made to store them and to reproduce them when the file is saved. However, should OpenOffice.org adopt OOXML, there is no current way that it can add its configuration settings using the standard:

How some OpenOffice.org configuration settings could be represented in OOXML ***** UNABLE TO DO IT *****

Contradictions in OOXML Upon examination of the OOXML specification, a number of contradictions between it and existing standards emerged. Some of these are listed below. These are expressed as the form of the contradiction, one or more rationales used to defend OOXML, and a response to each rationale.

OOXML duplicates and overlaps ODF It is clearly pointless to have OOXML when ODF already exists as a standard for office document interoperability. The cost penalties to industry, governments and other institutions to implement two standards instead of one are self evident and should be uneccessary. Rationale: standards can overlap Standards already exist that overlap with each other, such as HTML, PDF/A and ODF for exchanging office documents, CGM and SVG for vector graphics, JPEG and PNG for image formats, RELAX NG and DTD for XML schema definitions and TIFF/IT and PDF/X for publishable graphics. Response: Standards should not overlap. In the examples given, HTML, PDF/A and ODF are used for very different types of document interchange, CGM and SVG are used for different purposes, JPEG and PNG handle different types of images and PDF/X was created because of shortcomings of TIFF in certain areas. Where a standard exists for a purpose then it should be used for that. It is pointless to create a competing standard for its own sake. It seems illogical to create a competing standard when one already exists and is meeting industrial strength requirements. To intentionally create a standard that is known simply to duplicate

104

Contradictions in OOXML


Issue 17 the functionality of another just results in extra costs with no benefits to those who need to adopt it. Rationale: OOXML has a distinct purpose of storing existing Microsoft Office documents OOXML is different to ODF in that OOXML was designed with compatibility with existing Microsoft closed formats and ODF was designed for document interoperability. There are many existing Microsoft Office documents in existence; a standard should exist that reproduces the precise formatting of these documents as originally written. Those that require this include national library archives and mission critical scenarios. Also, persistence of this precise formatting is required when moving data to and from other platforms such as mobile and fixed computers. Response: The purpose of an editable document standard is interoperability, otherwise there is no point to it. Also, after examination of the specifications, no technical reason can be found why Microsoft Office cannot store its files using ODF as reliably as with any other format. Rationale: OOXML and ODF can co-exist The fundamental differences between ODF and OOXML means they cannot be merged. OOXML was designed to be compatible with Microsoft Office documents, and ODF was designed for document interchange; this as well as some “nitty gritty” differences makes merging them impossible. However, translators can be written, are being written and have been written to convert from one format to the other; therefore co-existence is possible. This means there is no contradiction between the two. Response: The two points above cancel each other out. Although OOXML and ODF have too many namespace and structural differences to be merged, ODF can store documents created for OOXML, but not vice-versa. OOXML therefore should not be a standard.

Objection: OOXML has inconsistencies with existing ISO standards OOXML has inconsistencies with the following standards: Standard OOXML Ref Description Page Size Names (ISO ISO 216 defines names for pager sizes, OOXML uses its own 3.3.1.61, 3.3.1.62 216) numeric codes for these sizes rather than the existing standard. Language codes ISO OOXML defines its own language codes that are inconsistent with 2.18.52 639 the standard Not only does OOXML sometimes redefine some colour names, Colour Names but it also redefines some colours corresponding to names ISO/IEC 15445 2.18.46 belonging to the standard. The colours “dark blue”, “dark cyan”, (HTML) “dark gray”, “dark green”, “dark red” and “light gray” are different in OOXML to the existing standard. OOXML represents the dates as integers from 31st December 1899 with the caveat that 1900 needs to be incorrectly considered a leap Dates and times ISO 4.17.4.1 year, or 1st January 1004 depending on a configuration setting. This 8601 is enormously inconsistent with the standard which represents the date more descriptively. Tag names such as scrgbClr, algn, dir, dist, rPr Readable XML ISO Almost all rotWithShape and w are neither consistent nor human-readable. 8879 There are many other examples. OOXML inconsistencies with existing standards

OOXML duplicates and overlaps ODF

105


Issue 17 Rationale: page sizes The ISO 216 page sizes are represented in OOXML, as well as others. OOXML simply uses a number to represent each page size and the specification documents the correspondence. Also, ODF does not use ISO 216 but page size measurements. Response: If page names and codes are to be used then it seems sensible that it should be standard ones. For instance, if a size of Letter, A4 or C4 is to be defined then it makes sense for the attribute value to be “Letter”, “A4” or “C4”, not “1”, “9” and “30” (as it is in OOXML). There is a good argument stating that ODF should use ISO 216 names. However it does not contradict that by making up its own names, but stores the page’s dimensions instead. Rationale: language codes OOXML gives the implementer a choice. Either the ISO 639/ISO 3166 combination can be used or a special two byte hexadecimal value as specified in the document. Response: If a standard is there, and it does the job, then it should be used. Putting these “optional alternatives” in is pointless and only detracts from adoption. The ISO 639 and 3166 codes should be used alone, then if Microsoft were to drop the hexadecimal codes that would ease adoption. Rationale: colour names OOXML uses its own abbreviations for colour modifications: “dk” for “dark”, “lt” for “light” and “med” for “medium” for colour highlighting. It also uses its own description of colors such as “darkRed” (OOXML) for “maroon” (ISO 15445) and “darkCyan” (OOXML) for “teal” (ISO15445); these are more meaningful. Response: The purpose of standards is that if everyone uses them it will make the world a more meaningful place. Unilaterally defining alternative and/or redefining the actual colours in a standard that is supposedly open is a contradiction, and as they vary from the standard they are less meaningful. Rationale: dates and times There are legacy applications, such as Microsoft Excel and Lotus 123 that treat the year 1900 as a leap year. The two methods of converting numbers to dates are to help cater for that. The first (the number of days since 31st December 1899) is to cater for the legacy applications: the second (the number of days since 1904) gives a more accurate representation for newer applications. Although the range of dates supported for OOXML (12-December-1899 or 1-January-1904 to 21-December 1999) is not as big as the range for ISO 8601, it should suffice. Response: The interchangeable document format should not be handicapped by the limitations of any application. Should an application need to store dates as a number it can convert them when loading the interchangeable format, and convert them back when saving it. ISO 8601 specifies an unambiguous method for interchanging dates, there is no reason why it cannot be used. Rationale: terse tag names Other SGML standards have terse tag names. For instance, the HTML standard has tag names such as <P>, <HR>, <TR>, <TD> and so on. OOXML is a specification for a technical markup language and it is not unreasonable to expect direct manipulation and implementation to be done with a reference manual.

106

Objection: OOXML has inconsistencies with existing ISOstandards


Issue 17 Response: OOXML is supposed to be a standard for document interchange that uses XML. One of the advantages of XML is that descriptive tag and attribute names can be used: this makes understanding and implementation of the standard easier. Using short and/or inconsistent abbreviations is not considered good practice in an open standard. The original version of HTML had about thirty tags, making it relatively easy to remember them all despite their cryptic nature, whereas OOXML has several hundred, making the sane naming of tags all the more important.

OOXML inconsistencies: references to external or redundant non-standard resources Resource

OOXML Ref

Description OOXML defines its own vector graphics XML—DrawingML. But the recognised standard for this, also recommended by W3C, is SVG. OOXML also Vector graphics 14, 8.6.2 includes Microsoft’s VML specification in contradiction to both SVG and DrawingML. VML was turned down as a W3C standard in 1999 in favour of SVG. OOXML references Windows Metafiles and Enhanced Objects 6.2.3.17 6.4.3.1 Metafiles, both closed proprietary Microsoft formats. OOXML contains specific application configuration settings, most notably: autoSpaceLikeWord95, footnoteLayoutLikeWW8, lineWrapLikeWord6, mwSmallCaps, shapeLayoutLikeWW8, Configuration 2.15.3 suppressTopSpacingWP, truncateFontHeightsLikeWP6, uiCompat97To2003, useWord2002TableStyleRules, useWord97LineBreakRules, wpJustification and wpSpaceWidth. The OOXML standard is inconsistent within itself, as well as with recognised methods, of the representations of percentage values, which can be expressed as a decimal 2.15.1.95, 2.18.97, Percentages integer (Magnification Settings—2.15.1.95), as a code 5.1.12.41 made up of an integer being the real percentage multiplied by 500 (Table Width Units—2.18.97) and a real percentage multiplied by 1000 (Generic Percentage Unit—5.1.12.41). OOXML references to external or redundant non-standard resources Rationale: vector graphics Although SVG caters for most of VML and DrawingML it does not cater for all. OOXML was designed to meet the needs of interpreting legacy documents. These would contain VML graphics, and the later ones would contain graphics that can easily be converted to DrawingML. In order to reproduce them it is necessary for applications to interpret these graphics. Response: SVG is extensible. It would have been easy to extend SVG using OOXML namespaces to cater for the functionality of VML and DrawingML, maybe for inclusion in a later version of SVG. ODF did that. These legacy documents mentioned would not currently exist in OOXML so would need a translator to convert them from the closed formats. This could just as easily be used to convert the VML and DrawingML’s predecessor formats to the SVG derivative. Rationale: Objects

OOXML inconsistencies: references to external or redundant non-standard resources

107


Issue 17 The first reference to this—“Embedded Object Alternate Image Request Types” (6.2.3.17)—the OOXML format mentions these formats in enumeration lists, and any formats can be included. The specification does not limit embedded graphic types to Microsoft formats. ODF performs a similar distinction by singling out Java applets. The second—“Clipboard Format types” (6.4.3.1)—simply specifies suggested action taken by the application in certain circumstances and again does not limit the document’s embedded graphic format types. Response: The enumeration list mentioned in the first instance (6.2.3.17) includes: Bitmaps, Enhanced Meta Files (EMF) and any other picture format. If all formats can be handled there is no need to include the Microsoft closed formats specifically, and they should not be in an “open” standard. Although Java is not an ISO standard it is well documented and its main implementation is about to be released as free software. There are large differences between this and the closed Microsoft Meta-files. The second instance should not be specified in an open document standard at all. The precise behaviour of a particular application for particular (closed) formats is unique to it and not really transferable. Document standards are for interoperability of the document itself, not a determination of how any particular application behaves. Should this be needed for Microsoft Office then it should be stored in a more generic, application defined, “config”-type field that does not infringe on other applications. Rationale: application specific configuration tags These are relatively few when compared to the large number of fully documented tags in OOXML. Also, it is not necessary for the implementer of the standard to cater for these. They are settings specific to those applications, so those applications can behave in a consistent manner between saving and loading. It is worth noting that ODF and OpenOffice.org have a similar, though undocumented, case in ISO 26300, namely the use of the config:config-item tag and the config:name attribute value for what is set. Notable examples are when OpenOffice.org sets the attribute value to AddParaTableSpacingAtStart or UseFormerLineSpacing, or when KOffice sets this to underlinelink or displayfieldcode. Response: No open office document standard can be perfect and cater for every application’s quirk and scenario, but these applications need to store their own unique meta information and sometimes unspecified peculiarities for consistency between sessions. To this end, OOXML seems to cover a more limited range of applications—namely the ones in Microsoft Office and some WordPerfect formatting which Microsoft supports—place the features in the main name-space specification and then ignore all other applications. ODF, on the other hand, provides an extensible mechanism for any application to add its unique quirks without breaking the standard. It does this by placing the “quirk” in a “config” attribute value defined by the application, not a tag name, and placing the setting in the body of that tag. This is covered in detail in the section “Unique application configuration settings” above. Rationale: percentages Where the percentages are actual values they have been converted to integers to allow for efficient parsing. Fractions of a percentage are catered for by multiplying the actual percent by a number. Response: The overhead for converting a percentage value such as “27.32” into an equivalent internal integer value of, for example “27320” is trivial. So much so that compared to the processing resource used and time spent by the computer retrieving the document data from a disk, memory card or network the overhead of that calculation would be unnoticeable.

108

OOXML inconsistencies: references to external or redundant non-standard resources


Issue 17 The fact that sometimes OOXML specifies the percentage should be multiplied by 500 in some circumstances, and 1000 in others simply enhances the contradiction. An open editable document specification should represent percentage values as percentages, that is a number between zero and one hundred representing from none to all.

Conclusion Standards exist for interoperability, and office document format standards should not be different. The goal is that someone in country A working for company B using product C can interchange documents with someone in country D working for company E using product D without any thought as to what precisely A, B, C, D, E or any other letter actually is. It simply works. There is no need to worry if any single vendor would continue in the office suite business or not, as any other vendor could be used. ODF was created using existing standards with this interoperability in mind, using long public consultation and design periods to achieve this. The benefits of this are evident when examining the resulting formats themselves. It has been implemented by a large number of office products and the list is growing. OOXML was designed by a single vendor, Microsoft, with no extensive public consultation or design input. It was largely designed to co-exist with their legacy formats using their own products. The design of the specification is such that might happen if their own legacy closed binary formats were simply XML-ised—that is binary encodings simply converted to arbitrary XML tags. Upon examining the formats it is difficult to ascertain any technical reason why Microsoft Office documents cannot be saved and interchanged using ODF with one hundred percent reliability. ODF has the features that will deal with all Microsoft Office’s quirks, even ones like “footnoteLayoutLikeWW8”. However, OOXML in its current state cannot handle any applications except Microsoft Office. It is my opinion that Microsoft peculiarities in OOXML, together with the fact the specification is over 6000 pages long, would greatly hinder the ability of other parties to develop products that would completely, or near completely, read and manipulate documents in that format and to the extent that it would render it practically difficult to work with as a universal standard.

Notes: Note 1: Form the OASIS document Open by Design—http://www.oasis-open.org/committees/download.php/21450/oasis_odf_advantages_10dec2006.pdf. Note 2: OpenDocument Format version 1.0 can be found at http://www.oasis-open.org/committees/download.php/12572/OpenDocument-v1.0-os.pdf. Note 3: An up to date list of ODF applications is at http://opendocumentfellowship.org/applications. Note 4: OpenDocument Format version 1.1 can be found at http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.pdf. Note 5: A description of OpenDocument Format adoption can be seen at Wikipedia’s OpenDocument adoption page: http://en.wikipedia.org/wiki/OpenDocument_adoption. Note 6: Form the OASIS document Open by Design referenced in note [1]: The OpenDocument Format was designed to be vendor neutral and implementation agnostic. It was designed to be used by as many applications as possible. In order to simplify transformations and to maximize interoperability, the format reuses established standards such as XHTML, SVG, XSL, SMIL, XLink, XForms, MathML, and Dublin Core.

Notes:

109


Issue 17 Note 7: Dissecting Microsoft’s “Patent License” at http://www.groklaw.net/article.php?story=20050330133833843#A4. Note 8: Precise history is documented at http://www.groklaw.net/staticpages/index.php?page=20051216153153504. Note 9: Microsoft Non Assertive Contract can be viewed at http://www.microsoft.com/interop/osp/default.mspx. Note 10: From ECMA’s web site—http://www.ecma-international.org/: Ecma is the inventor and main practitioner of the concept of “fast tracking” of specifications drafted in international standards format through the process in Global Standards Bodies like the ISO. Note 11: In the ECMA’s “Office Open XML Overview” found at http://www.ecma-international.org/news/TC45_current_work/OpenXML%20White%20Paper.pdf it states: OpenXML was designed from the start to be capable of faithfully representing the pre-existing corpus of word-processing documents, presentations, and spreadsheets that are encoded in binary formats defined by Microsoft Corporation. References: GrokDoc OOXML Objections: http://www.grokdoc.net/index.php/EOOXML_objections. Open Malaysia: http://www.openmalaysiablog.com/.

Biography Edward Macnaghten (/user/18" title="View user profile.): Edward Macnaghten has been a professional programmer, analyst and consultant for in excess of 20 years. His experiences include manufacturing commercially based software for a number of industries in a variety of different technical environments in Europe, Asia and the USA. He is currently running an IT consultancy specialising in free software solutions based in Cambridge UK. He also maintains his own web site (http://eddy.edlsystems.com).

Copyright information Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation. A copy of the license is available at http://www.gnu.org/copyleft/gpl.html. Source URL: http://www.freesoftwaremagazine.com/articles/odf_ooxml_technical_white_paper

110

Notes:


Issue 17

Published on Free Software Magazine (http://www.freesoftwaremagazine.com)

The perfect network server Serving small networks with free software By Ryan Cartwright PUBLISHED: 2007-04-18 So you need a server? Not a web server of course, you rent someone else’s for that. No, you need a file server, print server, intranet, mail server and more. Can free software provide the answer? Of course it can. Well what kind of answer did you expect from Free Software Magazine?

Growing pains Many office networks grow in an almost organic way. They start life as a single PC, then a second is added and before you know it there are five or ten. Sometimes these are standalone but more often they will be peer-to-peer networked. Eventually this becomes cumbersome and some kind of server solution is desirable. At this point the fledgling IT budget becomes hungrier. Proprietary servers are expensive to buy and licence. Free software has for some time offered a choice of alternatives in this field and this article aims to discuss those options and explain how you might deploy a free software LAN server, which will allow you to start small but which can grow with you with minimal extra outlay. So, if you are looking to deploy a server but are baulking at the expense and hardware needs of Microsoft Exchange, read on. Figure 1 shows a typical network layout for your server, for the purposes of this article I am talking about five to ten client PCs behind a single ADSL line. If you are looking to deploy a server but are baulking at the expense and hardware needs of Microsoft Exchange, read on

Figure 1: typical network layout for our target system

Hardware choices First, I’ll look at the hardware choice. Server hardware for this kind of project will not be particularly special. Bear in mind that it won’t be running a GUI, so you won’t need that 128MB 3D graphics card. Sound is also

Hardware choices

111


Issue 17 irrelevant beyond a system beep, so no sub-woofers are required either. CPU, RAM and hard disk will be crucial as will removable storage if you are implementing an on-site backup solution. Exactly how fast or how big this all needs to be will vary. However, as a guide, I have recently installed two such servers. One serves five people in a small office and is a Pentium II 700/256 MB RAM/40GB IDE HDD. The other serves about 50 people and runs a lot of services. It is a Pentium 4 3GHz/1 GB RAM/2x160GB SCSI RAID array. The first has a USB DVD writer and the second an AIT-2 tape drive. The first was an old desktop PC which was no longer required and the second was custom-built and rack-mounted. Of course, neither have a (permanent) monitor, keyboard or mouse attached. It’s unlikely you’ll have any hardware issues specific to running free software. Especially considering the advances made by GNU/Linux distributions and the BSD options. If anything, I would be careful of older network cards and devices mounted on motherboards as some of these can use peculiar chipsets. If you do have an issue then you can buy fairly cheap GNU/Linux compatible alternatives on-line.

Designed to serve What might such a server be expected to—er—serve? Here is a suggestion: files (Samba); printers (CUPS); Dynamic Host Configuration Protocol (DHCP); mail (Exim/Procmail/Qmail/Sendmail) and intranet (Apache) internal websites. The names in parentheses indicate typical free software packages you could use to provide such services. The resources section at the end of this article has links to most of their websites. The mail and intranet services could be provided elsewhere but there may well be situations where a standard ADSL account is used for connectivity and this includes a single catch-all email account. A server like this would give staff individual mail addresses. Similarly, a website may be available, but in a single office environment a local server would provide a more manageable and controllable intranet.

Free software options Whilst there will be many ways to skin this particular cat, I shall look into two of the most popular ways of deploying a free software LAN server. 1. Build it yourself from a typical distribution 2. Download and install a customised made-for-purpose distribution So how do you decide? My advice is to work out how much time, budget and skills you have available and go from there. If you have no time at all I would stop now. Installing a server will require some time (even—or especially—a proprietary one). If you have a couple of weeks, know how to use a command line and fancy a challenge then go for the first option. If you have a week and don’t know what a command line is then go with the second option. Work out how much time you have available. If you have no time—stop now I’ll be looking at one example of each. Of course, your preferences may differ from mine but that’s the beauty of free software—choice. Another one is scalability. Both these options will, given adequate hardware, scale to support much larger setups.

DIY servers Building your own server from a standard distribution will involve more work, particularly in maintaining packages, installing updates, etc., but it will be your server. It will run the software you choose and will be as unique as you want it to be. You are unlikely to get a support contract for it but at this level you are unlikely to need one. This is the “fun” option. That’s in the same way that building your own house can be fun. I’m looking at a Debian GNU/Linux-based server.

112

DIY servers


Issue 17

Base install You can download an install CD from the Debian website. I usually go for the NetInst CD. The Debian installer (at time of writing) has a familiar curses-based interface with fairly self-explanatory options (see figure 2). Follow the instructions and then reboot when requested.

Figure 2: the Debian installer showing package collections

Packages Once your base system is installed you can install the specific packages you need. The installer has package collections aimed at particular tasks. Figure 2 shows this screen and, as an example, the web server collection will install apache2 and the file server collection will install Samba. Obviously you won’t be needing the Desktop Environment collection. This is a server and contrary to what certain software companies believe, running a GUI is a waste of resources. Any packages not included at this stage, such as dhcp, can be installed using apt-get at the command line. I installed the current stable distribution. You can of course install the testing distribution if you prefer. I would advise against using something like Debian’s unstable distribution on a mission centric server like this. Contrary to what certain software companies believe, running a GUI is a waste of resources for a server Note that you may have particular preferences for some services, Procmail instead of Exim, for example. Debian usually has packages for these but supplies certain ones by default. This is not the place for a debate on why they have made those choices. Feel free to join the Debian mailing lists if you want to enter that debate. ;o). If selected, the installer helps you configure the mail server as shown in figure 3. It does a good job of helping you setup the basics with well laid out options.

Figure 3: Choosing packages is made easy by collections

Base install

113


Issue 17 There’s no GUI so configuration is with a console based text editor. Debian packages have config files under /etc in fairly obviously named files. What I don’t have room for here is detailed instructions for the exact setup for each package, so I’ll just layout the options I used for each package where it usually differs from the default installation. Samba, installed as part of the file server collection, essentially mimics a Windows server with regard to providing shared directories and printers. The Windows clients (and generally their users) remain largely oblivious to the fact that the shared directories are not on a Windows server. Each user’s home directory and any CUPS printers are shared by default. In addition to these, I usually add a [public] share (mapped to /home/public) which is browse-able and has no user restrictions. You can setup default and specific permission masks for shares. Apache is setup with a single site. The ADSL router/firewall is set to block inbound access to port 80 thus only the clients can access the web server. If you want a public facing website you might be better to host it across something more stable than a domestic ADSL line.

Maintenance Keeping your server up-to-date is vital if you are to keep on top of security issues and package bugs. Debian provides a simple method for this via apt. It will update installed packages, and the operating system itself, on-the-fly and need a reboot only if you update the kernel or modules. This means that you should never need to reinstall your system and updating an application does not require server downtime. You can, of course, setup a cron job to update your system overnight but perhaps a safer strategy is to use the -d option for apt which will download the required updates ready for you to install them at your convenience. You should never need reinstall your system and updating a package does not require server downtime

Let someone else do the hard bit Sometimes you don’t have the time for a DIY server and this is where a custom distribution comes in. SME Server is based on the popular enterprise level Cent OS. The idea of a custom-made distribution is to provide everything you need on a single CD. The downside of this is that you have little choice in the packages used. Deviating from the standard install is possible but, of course, it makes it more difficult when it comes to upgrading later. Updating a custom distro will often require booting from a new CD. This requires server downtime and thus is best done outside of working hours.

Installation The SME Server installer is another curses-based affair and walks you very easily through each step. Rebooting, as requested, then leads you to package installation and server setup. By the end you are left with a working server ready for you to setup the details, like users and shares. The whole process took around half an hour. Figure 4 shows one of the later options where you choose whether your server is a server only or a gateway as well and whether to enable the firewall.

114

Let someone else do the hard bit


Issue 17

Figure 4: The SME Server installer. Look familiar?

Configuration Of the two options I’ve discussed, SME Server wins hands down for ease of configuration. It comes with an administration console, which can be accessed via a local web interface, a curses-based console at the server, or via ssh. Figure 5 shows a typical web-based screen. Pretty much everything can be configured from within here, which makes this a perfect choice if you are less comfortable on the command line. That said, you are limited to the configuration choices decided by the SME Server maintainers.

Figure 5: The SME Server web interface Mail transport is handled by qmail. Fetchmail is also provided and it is easy to setup a maildrop from a single ISP account. The web interface provides a webmail client as well. SME Server uses the concept of i-bays which double as both folder shares and directories within the intranet. This makes it very easy for staff to make files available to each other via SMB or the intranet. Setting up a website is trivial using the administration console. SME Server wins hands down for ease of configuration

Security SSH access is available within SME Server although enabling remote access to the administration console also enables root logins. This particular hole can be closed but not through administration console so unless you are handy with the command line I would suggest you leave admin logins disabled. If you do make the required changes, then be prepared to keep a note/backup of them because when you upgrade they could well be overwritten.

Installation

115


Issue 17

Backups For any machine a backup is vital. This is more so for a server where the data is not only more extensive but has more stakeholders in it. Most insurance and business continuity plans require backups be removed from the premises. On-line backup solutions exist which meet this but for a small server like this I would suggest it’s more cost-effective to use removable media such as tape or optical discs. SME Server provides backup facilities to both tape (using flexbackup) and to a desktop client. There is a 2GB maximum limit on backup to desktop and if you are backing up to tape make sure you are using one of the supported tape drives. Flexbackup is also a Debian package so you can install it on the DIY server if you want. There are other solutions, like Amanda. SMEServer does not support optical devices so instead of using the built-in backup solution be prepared to write your own. Personally, I have a set of scripts using tar which I recycle from server to server.

Conclusion Whether you choose a custom distribution or a do-it-yourself option, a server based on free software has tremendous advantages. Firstly, you can have complete control over each package used and how it is setup. Secondly, the server will grow with you but without additional licence hassles. And thirdly, the level of uptime for free software servers is, in my experience, a lot higher than proprietary alternatives. Servers do not have the same needs (e.g. a GUI, music or video applications) as desktop machines and thus the traditional arguments for not using free software are, in my view, nullified. With greater control, arguably better security and no licence worries, using a free software server could end up being a better use of your time, resources and money.

Resources • Debian GNU/Linux— main website — NetInst CD download • SME Server— main website — community support • Samba • Exim • QMail • Fetchmail • Cups • Apache

Biography Ryan Cartwright (/user/8833" title="View user profile.): Ryan Cartwright is IT Manager for Contact a Family (http://www.cafamily.org.uk), a UK National charity for families with disabled children where they make significant use of free software (http://www.cafamily.org.uk/oss). He is also a free software advocate and you might find him on the GLLUG (http://gllug.org.uk) mailing list. Views posted here are his own - sadly.

Copyright information This article is made available under the "Attribution-NonCommercial-Sharealike" Creative Commons License 3.0 available from http://creativecommons.org/licenses/by-nc-sa/3.0/. Source URL: http://www.freesoftwaremagazine.com/articles/the_perfect_network_server

116

Resources


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.