Followers

About Me

My photo
My Name Is DeeP@K R@j ,I m loving and caring.. just a lil bit sensitive !! thats a main thingy u will not know when i get rude :D .. everything except bharamz and attitudez i can resist but when these things i see .. i get mad .. A computer nerd :P and crazy to go to new and exciting places, i love to chat on fone for hOurS .. i love Religious and Social Celebrations .. i love to eaT :D ...dats all For me:)!.....mah fRiends noe evEry ThiNG abt m3 ;)
Powered By Blogger

Sunday, August 24, 2008

My 1st week at WIPRO!!!

Well well the journey from my student days takes a break and now at this juncture, where things are really going at a rather slow pace, got an opportunity to join Wipro as a Technical associate. The first one week was pretty adventurous, made a lot of friends, pretty fun loving, enthusiastic bunch of friends i must say!!!.

Feel really good to be trained along side such cool buddies. Coming to the training part, hhhhmmmm, pretty much the same old blah blah stuff :( . Hope to clear the first assessment with ease.

Day begins at 6 in the morning with the cab guy picking me up from my place, and i come back home at around 5 in the evening. Though we haven't got much to do, rather than just sitting and looking at those boring ppt's and stuff, all the energy somehow gets sapped by evening. Hope the next few months too go on well, until we hit the floor. from there on its going to be a smooth ride.. :)(Atleast hope it does.)

Problems with the new iPhone 3G :(


Do you think the iPhone 3G is awesome? Well, I can't say I totally disagree, but it seems there are a lot of problems with it, some real, some that may appear in time, while others are nothing more than fiction at this time. While the dock issue is a real one, there are plenty of things to think about, as we're going to see right away, but before anything else, let's see what's up with that dock, shall we?

According to an Apple Store employee, quoted by IntoMobile, your old iPhone dock won't be able to host the new iPhone 3G. As the guy said, "the iPhone 3G is shaped differently and doesn’t fit in the same dock," so you can leave all hope. The worst thing is that all audio systems featuring universal docks build so far will also be incompatible with the latest iPhone! What a pity...

Well, at least let's hope someone will manage to come up with a "iPhone dock to iPhone 3G dock converter," so those audio systems I mentioned above won't instantly become obsolete as soon as their owners will upgrade to the iPhone 3G, but this is not all - now, let's see what else can be bad about the iPhone 3G!

Another possible issue with the iPhone 3G is long term cost. To make a longer story short, during the first two years, you'll have to pay $160 more because the pricier data plan for the iPhone 3G, compared to the old iPhone.

The iPhone 3G's camera still doesn't have a flash, and there are no replaceable batteries for it, either.

Friday, July 4, 2008

Defending Openness in the European Union

One of the most surprising recent developments in the field of openness has been the rise of Europe as a key player there. This is not the result of some grand plan, despite what the conspiracy theorists in proprietary software companies might think, but simply a natural evolution of the European Union itself, and a consequence of its attempts to become more tightly integrated.
The OOXML fiasco at ISO is perhaps the highest-profile manifestation of this, where a closed, proprietary standard was gradually made to seem open. Here, the “open standard” label represents simply a box that must be ticked to keep that pesky EU and its communistic member states happy, not a real Damascene conversion to fairness and a level playing-field.
The key issue here is that of patents. The EIF rightly insists that everything must be on a royalty-free basis. Opponents of free software and fans of intellectual monopolies - who seem to believe that they have a right to extract licensing fees from what are supposed to be totally open standards - are trying to paint this as discriminatory, when it is exactly the opposite: anything but royalty-free will lock out all open source solutions, which are unable to charge their users. By contrast, proprietary companies can not only function perfectly well with royalty-free open standards, but positively thrive, as the Internet and Web both show.

Forget the Iphone...

Nokia's announcement this week that it would purchase London-based Symbian Ltd.--a cellphone operating system it co-owned with Sony, Ericsson and Samsung, among others--and distribute the once costly software for free.
To oversee that distribution, Symbian is establishing a nonprofit alliance studded with other tech giants, such as AT&T,LG Electronics, Samsung Electronics, STMicroelectronics ,Texas Instruments,and Vodafone.
The move sparked comparisons to two other mobile consortia: Google's Open Handset Alliance (OHA), a group of more than 30 tech companies that is building an open-source mobile platform called Android, and the LiMo Foundation, which has similar plans. With consumers demanding more advanced services on their cellphones, pundits speculated that Nokia was trying to steal momentum--and developer talent--away from these competitors.

Thursday, May 29, 2008

How to Remove Windows Genuine Advantage Notifications


Windows genuine advantage notifications occur when your computer hasn't passed the validation test. The validation test can be failed due to being sold a pirated (non-genuine) copy of XP, or because you have changed your XP product key to a software-generated key, or sometimes it just happens for no reason at all. The failed validation installs three types of notifications on your computer: one on the log in screen, one log in timer, and one balloon. It also stops updates from Microsoft and disables your ability to install IE7 and Windows Media Player 11. This solution can get rid of all three notifications, even though you will still not be able to update through Windows Update. You will not be able to download things from Microsoft that requires a valid license either.

STEPS TO FOLLOW

1. If you have only just installed Windows Genuine Advantage notifications, simply using the system restore function will remove the program. Then refuse to accept the WGA update next time Windows updates... Otherwise, proceed as detailed below. (NOTE: If you try these steps while you are in "Safe Mode," step #8 is unnecessary).

2. First Try the Following:

3. - Open a CMD Line Window by Clicking on Start ==>Run ==> type CMD and Press OK.

4. - Change Directory into the System32 Folder (Like Cd c:\Windows\System32)

5. - Open a notepad Window and type the following lines:

6. taskkill -IM wgatray.exe

7. del wgatray.exe


8. del wgalogon.dll

9. - Highlight and copy to the Clipboard the three lines above

10. - now Paste the the contents of the Clipboard to the CMD Window

11. This should kill the wgatray.exe Process from the Taskbar and imediately delete both files wgatray.exe and wgalogon.dll without the need to to go through all steps bellow.


FOR NEWBIES BETTER TRY THIS

12. If that does not work, then continue and follow the steps bellow

13. Open System32 by either A or B of the following methods:

* a)
Click "Start", "Run", then type-in "System32". Click "Okay".
* b) Find System32 manually by clicking "Start" > "My Computer" > "(C:)" (Replacing "C" with the drive letter of the host of Windows) > "Windows" > "System32".


14. In "System32", go to "Tools" > "Folder options" > click on the tab, "View" > Uncheck "Hide extensions for known file types". Now you can begin...

15. Check to make sure the window that comes up has a full screen of various files. The files are in alphabetical order, which makes it easier to locate the specific file.

16. Find "WgaLogon.dll" and rename it "WgaLogon.dll.bak".

17. Create an empty copy of WgaLogon.dll:

*
Right click on a blank space in System32 and select "New" > "Text Document".
* Leave the text document empty and label it "WgaLogon.dll". Press Enter (on your keyboard).
*
You may get a warning from the above step that says, "If you change a file name extension, the file may become unusable. Are you sure you want to change it?". Click "Yes" on this warning.

18. Be ready to complete the next two steps very quickly! Find "WgaTray.exe" in "System32" and delete it. You will then have 5 seconds to find "WgaTray.exe" in the Task Manager (the next step). NOTE: If you remove the files mentioned above while you are in "Safe Mode," step #8 is unnecessary.

19.Immediately open Task Manager. You can do this by pressing the Ctrl, Shift, and Esc keys simultaneously, pressing the Ctrl, Alt, and Delete keys simultaneously, or right clicking the Taskbar and selecting "Task Manager". Click on the process tab and click end process when "WgaTray.exe" is selected. Note: If you take longer, do NOT panic! All that will happen is that "WgaTray.exe" will keep reapearing in the processes list (i.e. you won't be able to delete it as required). To remove the notifications after this, return to system32. You will find two files:"WgaLogon.dll.bak" (the one you renamed) and an Application Extension (0KB) called "WgaLogon.dll". Delete the Application Extension, rename "WgaLogon.dll.bak" to "WgaLogon.dll" and repeat the steps from the fifth one onwards (at a greater speed!!).

20. Restart your computer once you have finished. All the notification messages should be gone.

TIPS

* This process will only get rid of the notifications, and will not validate your copy of XP. It will remove the timer at the beginning of your XP log on, the white notice on the log on screen, and the annoying yellow star that appears in the bottom right corner of the screen.
* This is easier to do if you have someone reading the steps to you while you do it.
* You may need to Find Hidden Files and Folders in Windows to get to System32 manually.
* If task manager programs are moving, click the title of the "image name" row to freeze them.
* If you are having problems after this, disable the updates before rebooting.
* There is a program called RemoveWGA which does all of this for you. Just run the program, click yes, and you're done. (See External Links, below.)
* If you have problems changing files in the System32 directory, you will have to turn off "system restore". "Start" -> "Control Panel" -> "System" -> "System Restore" -> Check the "Turn off system restore" check box.
* You will not be able to download Automatic Updates anymore. This is not to say you cannot update your system anymore, Microsoft just won't do it for you. In the links, there is a program that will allow you to update any system, regardless of if it is genuine or not.
* You can also rename WgaTray.exe to WgaTray.exe.bak if you can't remove WgaTray.exe from your Taskbar.
* It will be useful to have task manager open first before deleting WgaTray.exe

Sunday, March 2, 2008

All the C you need to know for GTK+ A short refresher on basic C concepts

If you want to develop applications with GTK+, a graphical toolkit used by the GNOME desktop environment, it is essential that you are comfortable with the C programming language. This article is meant to give you a short refresher on the basics of C that you will need to know when developing GTK+ applications.
Basic C program structure

Every C program is composed of one or more functions in the following format. The function receives a number of variable parameters, runs the commands in the function, and then returns a variable of the given type. Note that you can omit the return value by using void as your function type.

type function (parameters)
{
local variables
commands
}

Here is a practical example (don’t worry if you don’t understand it yet):

int my_function(int a)
{
char b;

b='r';
printf("%d %c",a,c);
}

Another example function is shown below. The main() function is the only one that is required by every C program. It receives two parameters (argc and argv), which contain the command line parameters entered when the program begins and the number of parameters. The function should return an integer to exit. The following code will print out “x = 0 and y = 1”. (The printf() function will be covered later in this section!)

#include

int main (int argc, char *argv[])
{
int x, y;

x = 0;
printf ("x = %d ", x);

y = 1;
printf ("and y = %d", y);

return 0;
}

Compiling your programs

If you are reading this article, you will probably need to compile your programs. Assuming that you call your file result.c, you can compile your programs by typing:

gcc -o result result.c

You will now be able to run the program by typing ./result in the directory where the program was compiled. It’s handy to have a console open with the program, and a second console with the command line above, ready to compile the code.
Variable types

C provides a number of variable types. You may notice that these are very basic types, all holding numbers, but they can be used to represent any piece of data. The following table gives an overview of the types that are available to you.
Data Type Bytes Lower Bound Upper Bound
char 1 -128 127
unsigned char 1 0 255
short (int) 2 -32768 32767
unsigned short (int) 2 0 65536
int 4 -2^31 2^31 - 1
unsigned int 4 0 2^32 - 1
long (int) 4 -2^31 2^31 - 1
unsigned long (int) 4 0 2^32 - 1
float 4 -3.2e38 3.2e38
double 8 -1.7e308 1.7e308

C Data Types

It’s important to think about where you place the declaration when creating variables. The scope of a variable refers to which parts of the application can access the variable. In general, variables use the following scope rules in C:

1. You can only access a variable that has been declared before referencing it. In other words, the declaration of a variable must appear above its use.
2. A variable cannot be accessed outside the set of brackets where it was declared. For example, if a variable was declared inside of a for loop, it cannot be accessed outside of that loop.

You can declare variables outside any function, such as above the main() function. This is called a global variable. Also, a variable declared within a function is local to that function.
Arrays

The variable types previously mentioned are useful, but what if you want a thousand integers? It would take quite some time to create a variable for each of these integers. To solve this problem, you could create an array of integers. The following program creates an array, and then fills it up with the numbers 1 to 1000. Notice that arrays are indexed beginning from zero.

int arrayOfInt[1000], i;

for (i = 0; i < 1000; i++)
arrayOfInt[i] = i + 1;

It is also possible to create arrays with multiple dimensions. The following applications creates an array that has 1000 columns and 1000 rows, and fills it up with the sum of the indexes.

int multiArray[1000][1000], i, j;

for (i = 0; i < 1000; i++)
for (j = 0; j < 1000; j++)
arrayOfInt[i][j] = i + j;

The maximum number of dimensions is defined by the compiler, but most applications do not use more than three at the most. If you reach the maximum (GCC’s maximum is 29), you should consider rethinking your approach to the problem at hand!
Outputting (printing) data

Although GTK+ is a graphical toolkit, it is still useful to be able to output debugging information to the terminal. To do this in C, you would use printf(), which you already saw in a previous example. You can use additional parameters in this function to embed numbers and strings into the output text. In order for this function to work, you must include the header file stdio.h

The following example would print out “x = 5 and y = 10.7”. The %d is replaced by the first variable, which is an integer. Then, %4.1f is replaced by the second floating point variable with a maximum length of 4 characters and one character following the decimal point.

int x = 5;
double y = 10.74;

printf ("x = %d and y = %4.1f", x, y);

There are a large number of options available of printf(). It would be pointless to enumerate them here since the reference is available on thousands of sites around the Internet. To read more on this function, take a look at this page.
Conditionals and loops

C provides a number of methods for controlling the flow of your program. In order to understand these, you need to understand a few logical operators that are available. They are introduced in the following table.
Operator Description
== Comparison operator that returns true if the value on the left is equal to the value on the right.
!= Comparison operator that returns true if the value on the left is not equal to the value on the right.
< (>) Comparison operator that return true if the value on the left is less than (greater than) the value on the right.
<= (>=) Comparison operator that return true if the value on the left is less than (greater than) or equal to the value on the right.
&& Used to concatenate multiple comparisons that will only return true if both evaluate to true. For example, ((2 > 1) && (0 > 1)) would return false.
| | Used to concatenate multiple comparisons that will return true if at least one evaluates to true. For example, ((2 > 1) || (0 > 1)) would return true.
! Returns the opposite value of the following expression. For example, !(1 > 0) would return false.

Logical Operators in C
If/else comparisons

The if statement is a comparison command that can be used to run code only if a condition is met. In addition, you can include optional else if statements, that will only be evaluated if the previous statements were found to be false. Lastly, an else statement can be used at the end to catch all other cases.

The following example shows you how to use an if. Note, the curly brackets can be omitted if only one command is run after a conditional statement.

int x;

if (x > 0) {
printf ("x is positive");
}
else if (x == 0) {
printf ("x is equal to zero");
}
else {
printf ("x is negative");
}

In this example, what would be printed if x was equal to -5, 0, or 5? The application would print “x is negative”, “x is equal to zero”, and “x is positive” respectively.
The switch statement

The switch can be used as a cleaner style in place of some if statements. It compares the variable or expression in the switch to each case value. If the correct value is found, all of the commands will be run until a break or the end of the statement is reached.

In the following example, white space will be printed if ch is a space, tab, or new line character. If the letter is an uppercase vowel, vowel will be printed. Otherwise, the output will show other character.

char ch;

switch (ch) {
case ' ':
case '\t':
case '\n':
printf ("white space");
break;
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
printf ("vowel");
break;
default:
printf ("other character");
}

The default case is not required, but it can be used to catch all other cases not previously specified. Note that each case value must be constant, meaning that they cannot be variables.
While loops

The while loop will continue to run its contained commands over and over until its condition is evaluated as false.

while (condition) {
commands
}

In the following example, the while will continue running until x is greater than or equal to ten. The break statement can be used to exit the loop before it is completed. What will this code print out?

int x = 0;

while (x < 10) {
printf ("%d ", x);
x += 2;
if ((x % 3) == 0)
break;
}

The code above will print 0 2 4 . The x variable is incremented by 2 every time, but when it reaches 6, the if statement evaluates to true and exits the loop. Note: The percent sign (%) represents the modulus operator, which returns the remainder of the division.
For loops

The for loop allows you to perform initialization, comparison, and incrementing all at once. You can omit one or all of these steps by leaving it blank, although leaving out the comparison will make an infinite loop. In this case, you could use the break command to exit the loop when necessary.

for (initialize; comparison; increment) {
commands
}

In the following example, the integer i is initialized to zero at the beginning of the loop. It will continue running until i is greater than or equal to ten, incrementing by one every time the loop is run. What will this code output?

int i;

for (i = 0; i < 10; i++) {
if ((x % 3) == 0)
continue;
printf ("%d ", i);
}

The above code will output 1 2 4 5 7 8 . If x is divisible by three, continue will skip the rest of the loop’s iteration, so the values 0, 3, 6, and 9 will not be printed. You can also use the break command with for loops.
Pointers

One of the most important parts the C programming language is the pointer. A pointer is basically a variable that store the memory address of a variable, array, function, etc. There are two operators that are used with pointers:

* The ampersand (&) symbol is called the monadic or unary operator. It returns the address where the variable is located.
* The asterisk (*) symbol is used for dereferencing, and returns the object that is at the location stored by a pointer.

To help you understand this concept, look at the following example. The second line creates a pointer that stores the memory location of x. The next line dereferences ptr, printing out the integer at that memory location (1). Then, the memory location ptr is set to the value 7. Since ptr points to x, the last statement prints out “7”.

If you find this confusing, slowly re-read the sentence above (yes, it does make sense!) and experiment with the code.

int x = 1;
int *ptr = &x;

printf ("%d", *ptr);
*ptr = 7;
printf ("%d", x);

Pointers are very powerful, because they can be used with arrays. The following example creates an array of one hundred characters, and then uses a pointer to traverse the array, setting each to the value of its index.

char chArray[100];
char *ptr;
int i;

for (i = 0, ptr = &chArray[0]; i < 100; i++, ++ptr)
*ptr = i;

This example shows a few important concepts. First, you should notice that you can provide multiple commands in the first and third parts of the for statement by separating them will commas. This allows you to initialize multiple variables, or provide more than one increment.

In terms of pointers, you can increment or decrement a pointer by using standard integer operations. It is legal to move a pointer with any of the following: ++ptr, --ptr, ptr += 10, ptr -= intVariable, etc.
Strings

Strings are very important to any programming language, because human interaction would be very difficult otherwise. A string is defined in C as an array of char variables. Each string in C must end with the null character (‘\0’ or 0) so that the end can be found. This is because most strings are stored as pointers.

The following example shows one way to create a string. A pointer called text is created that points to nothing at first. It is then initialized to “Hello world!” and printed to the screen.

char *text;

text = "Hello world!";
printf (text);

This string was initialized by setting the text directly, but this is generally not a good idea. Instead, you should use a function defined in string.h called strdup() to dynamically allocate a copy of the string like the following example. Once the application is done with the string, free() should be called so that the memory taken up by that string can be used by other parts of the program.

char *text;

text = strdup ("Hello world!");
printf (text);
free (text);

There are a number of other functions available in string.h for manipulating strings. The following application shows a few of them, but you should reference the header file for a full list of functions.

#include
#include
#include

int main ()
{
char *text1, *text2;

text1 = strdup ("+");
text2 = (char*) malloc (10 * sizeof (char));
strcpy (text2, text1);

while (strlen (text2) < 10)
{
if (strcmp (text2, "+++++") == 0)
printf ("Pluses: ");
strcat (text2, text1);
}

printf (text2);

free (text1);
free (text2);

return 0;
}

The example above is a bit frivolous, but it shows some of the most common functions used for string manipulation. First, the malloc() function was used to allocate a piece of memory with a size of 10 bytes. This function requires you to include stdlib.h and will be covered in more detail in the next section.

Then, the contents of text1 are copied into text2 with strcpy(). The loop continues until the length of text2 is nine characters. During each iteration of the loop, a single plus is concatenated to the variable with strcat().

The conditional statement uses strcmp() to compare two strings. It will return a negative number if the first string should be sorted before the second, zero if the two strings are equal, or a positive number otherwise. You should note that you cannot use ==, !=, or any other operator to compare strings, since using those operators would just comparing the pointer location!
Dynamic memory allocation

One of the main reasons for pointers is to enable dynamic memory allocation, or the ability to allocate memory while the application is running. Memory is allocated in C with malloc(), which uses the following syntax. It accepts the number of bytes to allocate, returning a pointer to the newly allocated memory location. When you are done with the memory, you must call free(), or that space will be leaked by your application!

int *data;
data = (int*) malloc (100 * sizeof (int));

In addition to this function, you can use calloc(), which allocates an array of data with the given size. In the following example, an array of 100 elements with a size of 4 bytes is allocated. This code does the same essentially the same thing as the previous example.

int *data;
data = (int*) calloc (100, sizeof (int));

As with malloc(), everything allocated with calloc() should be freed when you are done using it. Also, one of the most common problems encountered with pointers is not allocating memory before using it, so make sure to avoid using uninitialized pointers! Basically, if you get a Segmentation Fault, you are misusing pointers.
Structures

The struct type allows you to create your own data types in C. For example, let us assume you want to store information about an animal. You could use the following structure to do this:

typedef struct
{
char *name;
char *sound;
int legs;
} animal;

The structure definition above creates a new data type called animal. This data type holds two strings and one integer. This is useful because you can create as many instances of animal as you want. The following code shows two ways you can use the new structure, one without and one with pointers.

animal cow;
animal *chicken;

cow.name = strdup ("Cow");
cow.sound = strdup ("Moo");
cow.legs = 4;

chicken = (animal*) malloc (sizeof (animal));
chicken->name = strdup ("Chicken");
chicken->sound = strdup ("Cluck");
chicken->legs = 2;
free (chicken);

In this example, and instance of animal is created called cow. Since this is not a pointer, you can use the period character to reference the members of the structure. In the second part of this code, the memory is allocated for another animal instance. Notice that, with a pointer, you must use -> to access the members of the structure!

It may not be immediately apparent from this example why you would want to use a pointer. However, if you wanted to pass the structure to a function, it would be much more convenient. Passing chicken would just create a copy of the pointer. This is why pointers are preferred in C.
Conclusion

By now, you should be familiar with the basics of the C programming language. While there are other aspects of the language that you may need to learn when programming with GTK+, these basics will allow you to use all but the most advanced portions of the libraries.

If you are interested in learning GTK+, I would encourage you to check out my book on the subject: Foundations of GTK+ Development. This book covers everything from the basics of the libraries to creating your own widgets, and much more in between.

Wednesday, February 20, 2008

African developers build pharmacy management tool

African free software developers have released early versions of a free hospital pharmacy management system. The developers that initiated the project were part of a three week-long developer workshop at the University of the Western Cape(UWC) recently.

Free Software Innovation Unit(FSIU) manager Paul Scott says the idea to develop the system came from a request at a previous workshop held at the university. Scott says Mohammed Sonday, chief pharmacist at the GF Jooste Healthcare Project, approached the FSIU at UWC in September last year to ask if the FSIU could create a system to replace the outdated Microsoft Access system that they were using to run their pharmacy operations.

The project was scoped and specifications designed during the workshop, and the software was developed by the workshop participants. Scott says the software is almost complete, with only a few things remaining to be done.

The development of KHospPharm is part of the Kinky application framework being actively developed by developers at UWC.

The completed software will be available for download from the AVOIR website at http://avoir.uwc.ac.za/ as soon as it has been tested. Development versions can be checked out of cvs as part of the KEWL.NextGen code at cvs.uwc.ac.za, using anoncvs as both username and password.

For further information and for sourcecode see the AVOIR website at http://avoir.uwc.ac.za. Working versions of Kewl.NextGenFor can be found at http://kngforge.uwc.ac.za/kng_unstable.

Friday, January 11, 2008

9 Characteristics of Free Software Users

Operating systems come with cultures as much as codebases. I was forcibly reminded of this fact over the holidays when several family members and neighbors press-ganged me into troubleshooting their Windows computers. Although none of us had any formal computer training, and I know almost nothing about Windows, I was able to solve problems that baffled the others -- not because of any technical brilliance, but because the free software culture in which I spend my days made me better able to cope.

The origins of these cultures are more or less obvious. Windows and other proprietary software are the products of a commercial software market. In this culture, information flows mainly in one direction -- from the manufacturer -- and companies' obsession with so-called intellectual property and vendor lock-in encourages them to force users into the role of unquestioning consumers.

By contrast, free software culture has two sources. The first is the Unix culture that Eric Raymond describes in The Art of Unix Programming, with its emphasis on excellence. The second is the Free Software Definition's four freedoms.

True, end-users are unlikely to be interested themselves in the freedoms to study or improve the program. But the availability of these freedoms for developers conditions everybody's expectations. Moreover, the freedoms to run and redistribute programs relieve everyone of some of the more unwelcome aspects of proprietary culture. At any rate, together these sources create a more active, more demanding set of users than is found in proprietary software.

Unsurprisingly, these differences in origins lead to entirely different sets of expectations. Exceptions do occur, of course, and, the more expertise users have, the less pronounced the differences are. Moreover, free software like FireFox and OpenOffice.org are becoming more commonplace on proprietary platforms. And, similarly proprietary culture is seeping into free software as it becomes big business.

Still, for the most part, you can expect free software users to differ from proprietary in a number of fundamental ways. Furthermore, whether you are aware of these differences can have considerable impact in your success when marketing or developing software.

1) Free software users expect open licenses and no activation methods

Proprietary vendors like Adobe and Xara who have experimented with GNU/Linux versions of the software usually conclude that free software users will not buy commercial software. However, as companies such as Mandriva and Red Hat have proved, such conclusions are more of a failure to conceive of alternative business methods than an observation of reality. If nothing else, business users will often buy commercially in order to have the comfort of a traditional relationship with a vendor.

However, given any sort of chance, free software users do reject proprietary licenses or activation methods that restrict their freedom to copy and redistribute software. Some may endure proprietary licenses if comparable functionality is unavailable elsewhere. Others may accept a proprietary license for non-essential software like games. But, at the first sign of an alternative, they will abandon a proprietary product. And many, of course, will not even accept these temporary compromises.

If you want to sell to the free software community, forget about making money on the software and see what services you can develop around the software. Or do you think it's an accident that file-sharing and free culture have roots in the free software community?

2) Free software users expect regular upgrades and patches

Free operating systems are set up for instant gratification. You want a piece of software? Switch to the root account, and in five minutes you have it installed and ready to use without rebooting.

This daily functionality results in the same high expectations for upgrades and patches. In free software, upgrades and patches are not a once yearly event complete with beta versions and release candidates. They are closer to a daily occurrence. Project maintainers take this responsibility so seriously that many have been known to take personal time from work in order to get a bug or security patch out as quickly as possible.
3) Free software users expect to work the way they choose

Switching from Windows to GNU/Linux, the first thing that users are likely to notice is how many customization options are available just for the look and the operation of the desktop. If anything, they are likely to feel that too many options are available. Often, they cannot imagine ever wanting half the options.

These options are a direct result of the sense of control that free software encourages in its users. Not only do they expect to use menus, toolbars or keyboard shortcuts as their preference dictates, but they expect to control the color, widgets and even placement of desktop features easily and efficiently. If they cross the other way, going from GNU/Linux to Windows, they are apt to feel restricted, that they are being forced to do things the way that the developers want them to do, rather than consulting only their own preferences.

4) Free software users want control of their own systems

For a free software user, one of the most irksome aspects of Windows XP or Vista is that you are constantly being nagged by pop-ups. The system itself notifies you about available upgrades, possible security risks, and the current state of your system. And it's not unusual for your manufacturer's software to have its own messages as well as Java and several other programs. Meanwhile, the operating system and one or two other basic pieces of software are phoning home, and lockdown technologies are policing your computing. Sometimes, it seems like your work is being interrupted every 30 seconds or so.

Desktops in free software operating systems are starting to have notifications, but, so far, they are for the entire system. Even more importantly, they can be turned off. Experienced GNU/Linux or FreeBSD users know that routine system events belong in log files, where they can be read at leisure.

As for lockdown or surveillance technologies, forget it. Many free software users are suspicious of comparatively benign automatic survey tools like the Debian Popularity Contest or Smolt, let alone something that takes control from their hands.

5) Free software users explore

I was able to solve two of the Windows problems I faced over the holidays in a matter of moments. One was simply a case of plugging the monitor into the dedicated video card instead of the onboard on the mother board. The other was solved by using a file manager instead of the dedicated tools that came with the new hardware. Asked why they didn't look around for solutions, those I was helping hemmed and hawed, but eventually they more or less admitted that they were afraid to try.

To me, these reactions epitomize the learned helplessness that proprietary software usually encourages. With only a limited number of tools visible from the desktop -- many buried several dialogs down -- and most of those tools giving no indication of how they achieve their results -- the average Windows user has little incentive to learn how to administer their systems.

However, on free software systems, exploration is easy. Most configuration, for instance, is done using plain text files that you can view from your file manager. And since exploration leads to quick and effective results, the users of free operating systems are encouraged to explore and soon grow to expect the ability to do so. Place them on a Windows system, and they'll probably complain that they are isolated from the system as effectively as if they were trying to type wearing mittens.

6) Free software users expect to help themselves

Free software users have no objection to help files. If anything, they love them. To the traditional Unix man pages, they have info pages at the command line, and online help on the desktop. But they are far less likely than proprietary users to expect formal technical support. Instead, what they expect are the means to help themselves -- not only help files, but easily accessible configuration files (preferable in human-readable plain text), and mail forums and IRC channels where they can consult each other. A Do-it-yourself philosophy runs deep in almost every free software user. The longer they have been using it, the deeper it runs.

7) Free software users don't fear the command line

To Windows users, the command line is a fearful place. And no wonder, considering its awkwardness and limitations; a new one was one of the features promised for Vista and dropped. But the command line is much more friendly in free operating systems than in Windows, and many users soon become comfortable with it.

In almost every case, a typed command has more options and power than its graphical equivalent in free software. Users will gladly use the graphical interface, but, when its limitation is reached, many still happily drop down into the command line. Partly, it's a geek macho thing, but a large part of the habit is sheer practicality. Unless interface designers manage to offer the same functionality as the command line, that's not going to change -- and, frankly, not many are trying to do so.

8) Free software users learn software categories, not programs

Blocked from easily learning about their operating system, consumers of proprietary software operate as if casting magic spells -- ritual recipes that, if used exactly right, will give them the desired results. Added to the fact that proprietary software can be expensive, they tend to become familiar with one office suite, and one web browser and mail reader. As a result, switching software can be traumatic to them.

By contrast, free software users come to have both the system knowledge and the software selection to experiment. They may settle on one piece of software in each category, but only after experimenting with all the possibilities. Should they need a feature that their choice lacks, they'll find a temporary or permanent replacement, trusting that other features they need will be in both programs. Far more than proprietary users, their loyalty is provisional, and dependent on quality and selection. They lack the financial investment that keeps proprietary users locked-in to a particular vendor, and see no reason to change that.

9) Free software users expect access to developers and other employees

The free software community prides itself on being a meritocracy, where status is the result of accomplishment and contribution. Since status depends on what you have done recently, it is less fixed than in a traditional office. Even where obvious leaders exist, they are more often first among equals than managers with direct control over others. That, in turn, means that community members cannot isolate themselves behind a wall of authority. Community members generally have direct access to project leaders, generally via email and IRC. Nor do most project leaders object to this arrangement.

Even in companies, traces of this flat structure exists. Instead of resisting it, sensible managers will accept it and claim a special place solely because of their position.

Conclusion

How long these characteristics of free software will continue to exist is uncertain. In the last few years, a new category of free operating system users has begun to emerge: those who remain entirely on the desktop. In the rush to become more user-friendly -- which usually means more like Windows -- the chance exists that the free software user culture will become unrecognizable to long-time users in the next few years.

However, that seems unlikely. For the most part, the purely desktop user's sensibilities are not sapping the free software culture so much as being accommodated and isolated as a special case. Unless they are content to stay in their normal routines, within a year or two, desktop users will face some problem that they cannot solve without becoming either more adventurous or more in contact with the mainstream culture. When that happens, they will have taken the first steps away from being passive consumers and towards becoming the owners of their own machines.

IE still top dog over Firefox in corporate browser kennel

With a new CEO on board and a major update of its Firefox Web browser expected this year, Mozilla Corp. hopes to reinvigorate its campaign to pull users away from Microsoft Corp.'s still-dominant Internet Explorer software.

But Mountain View, Calif.-based Mozilla continues to expend little energy on wooing IT managers to formally adopt Firefox for deployment within their organizations, according to analysts and users of the open-source browser.

In the past, Firefox faced two main obstacles that limited its adoption by corporate users: its immaturity, and its incompatibility with corporate Web applications and intranets that relied on Microsoft technologies such as ActiveX.

Now nearly three-and-a-half years old and nearing the release of Version 3, Firefox no longer can be accused of being callow. And while many IE-only apps remain, plenty of others have been overhauled to support Firefox as well, according to Rafael Ebron, general manager of Browser Garage LLC, a Web consulting firm in Mountain View.

However, other obstacles to broader adoption have emerged. Mozilla thus far has neglected to develop tools to help IT departments deploy and manage Firefox, and it doesn't offer paid technical support services to risk-averse corporate users.

"The enterprise is looking for a neck to choke, and that is absolutely what is missing from Firefox," said Ebron, a former product manager for Firefox and its predecessor, Netscape Navigator. "If you have a problem with IE and you are a big enough customer to Microsoft, [CEO] Steve Ballmer is going to come out and talk to you. That isn't there yet from Mozilla. It isn't their focus."

Mozilla claims that Firefox has more than 125 million users. And according to market researchers, the open-source browser has made some steady, albeit relatively small, inroads against IE on usage.

For example, Net Applications Inc., an Aliso Viejo, Calif.-based company that tracks visitors to about 40,000 Web sites, said Firefox held a 17% share of browser usage in December, compared with 76% for IE.

Similarly, Janco Associates Inc. in Park City, Utah, currently gives Firefox a 16% usage share among visitors to 17 business-to-business Web sites that it monitors. Janco puts IE's share at 67% while giving 9% to Netscape and 3% to Google Desktop. (Netscape is credited with only a minuscule market share by Net Applications, which doesn't include Google Desktop in its rankings.)

Firefox's market share has increased from 14% since last January, while IE's share has eroded by two percentage points, according to Janco. But Firefox's gains have mostly come from workers installing the browser on their own, without IT's blessing, noted Janco CEO Victor Janulaitis.

"Users are frustrated with Microsoft's product, and more people are starting to experiment in enterprises with Firefox," he said.

Firefox may gain more users following AOL LLC's Dec. 28 announcement that it will discontinue Netscape Navigator -- and its recommendation that users switch to Mozilla's browser.

But Mozilla's laissez-faire attitude toward corporate users can lead to awkward situations, such as the one at a leading vendor of Web-based software. The company's CIO, who asked not to be identified, said it is a longtime Microsoft shop that has standardized on IE as its browser of choice.

Even so, all of the apps that the vendor sells or uses internally can run on multiple browsers. And demand for Firefox among its employees is so heavy — "Salesforce.com runs better in Firefox," one worker told the CIO — that the internal ratio of Firefox to IE usage currently is about 60:40.

The big downside is the difficulty of managing Firefox, especially in comparison to administering IE, according to the CIO. For example, he said that the IT department can patch IE via automated central updates. On the other hand, "we have to send an e-mail and have users manually download Firefox updates, which is not ideal," he said.

That won't change in Firefox 3. A Beta 2 release available now lacks features that IT managers typically want, such as the ability to automatically deploy multiple copies of Firefox through Windows Installer package files — better known as .MSI files, for the file extension they use.

The update also can't be patched from a central console, like IE can be through Microsoft's Windows Server Update Services. Nor can it be managed and secured via Active Directory, Microsoft's tool for setting group policies.

As a result, many IT staffs looking for help in rolling out or managing Firefox have resorted to using free third-party tools.

One, FirefoxADM, lets administrators centrally manage locked or default settings in Firefox via group policy settings in Active Directory. Another, called FrontMotion, offers basic .MSI installation packages for Firefox for free, and custom ones for a small fee.

FirefoxADM has been downloaded about 22,000 times, according to Mark Sammons, a senior computing officer at the University of Edinburgh, who created the tool and is using it to manage Firefox on 8,000 PCs at the Scottish school.

FrontMotion's installers has been downloaded nearly 131,000 times, said Eric Kuo, its developer. By day, Kuo works as an IT director at a medical company in Lubbock, Texas, that he asked not be identified.

Both FirefoxADM and FrontMotion are open-source products. But each is largely developed by a moonlighting individual. That has hurt FirefoxADM, in particular; Sammons acknowledges that he hasn't added any new features to the management tool in the past two years.

"I have no illusions as to what FirefoxADM is," he wrote in an e-mail. "I think it works well, but ultimately, it's a work-around for functionality that really needs to be built into Firefox itself."

An even bigger problem is that neither of the two tools has been formally tested and certified by Mozilla.

"It's absolute FUD to say that you can't administer Firefox well within an Active Directory environment with third-party tools," Ebron said, using the acronym for fear, uncertainty and doubt.

Nonetheless, both he and Kuo said that having Mozilla's official seal of approval would be a big plus to corporate users planning major deployments.

"It comes down to a perception of who owns the tools, not the tools themselves," Kuo said. He noted that preliminary talks with Mozilla about selling FrontMotion — a move he would welcome — went nowhere.

Mozilla has no plans to add tighter integration between Firefox and Active Directory, according to Chris Hofmann, the open-source vendor's director of special projects. He dismissed Active Directory as a "proprietary technology" that would hurt rather than help Firefox administrators.

"Multiple levels of permissions applied across different groups add a lot of complexity," he said. "If you look at the track record for that feature, it’s resulted in less security for IE."

But Hofmann, who oversees security and language localization development for Firefox in addition to helping run its enterprise-oriented efforts, acknowledged that users are clamoring for Mozilla to provide more enterprise tools. For example, on a public wiki maintained by Mozilla's Firefox Enterprise Working Group, .MSI installers and better tools for preferences management top a new-features wish list.

Automated installers are relatively easy to create, and such a tool "might come sooner" from Mozilla than one for Active Directory would, Hofmann said. But he added that Mozilla has no plans to acquire or certify third-party tools or to set up a paid support business for corporate users.

Despite the success that open-source vendors such as Red Hat Inc. and MySQL AB have had in getting corporate users to sign paid support contracts, Hofmann contended that companies are starting to favor DIY support approaches on open-source technologies. "There's a growing number of CIOs asking, 'What is the value of a support contract? What are we getting out of it?'" he said.

Mozilla's stance doesn't surprise Kuo, who claimed that the organization is dominated by developers who would be unlikely to find the idea of starting an IT support business sexy.

Kuo added that he doesn't think Mozilla will suddenly change its attitude and develop a browser deployment tool that could render FrontMotion obsolete. Mozilla "could create it themselves," he said. "But it's obviously not their priority."

Michael Kaply, a senior software engineer at IBM who describes himself as a "Firefox advocate," said that the open-source browser is currently being used by about 72,000 of the IT vendor's 360,000 employees.

IBM wrote its own Firefox deployment software, but it doesn't use any group policies to lock down or otherwise control the browser. "Our employees have full control of their machines," Kaply wrote in an e-mail.

The company still runs some Web applications that work only with IE. But it is building in Firefox support, Kaply said. For example, a travel reservation app was recently switched to a cross-browser design. "That was a big hurdle," he wrote.

However, in a posting on his personal blog last September, Kaply lamented that the number of participants on Firefox Enterprise Working Group conference calls had "dwindled." And in an earlier posting, he said that he thought most of the large companies that had adopted Firefox were using it "as a secondary browser" only.

Gregg Keizer contributed to this story.

National Boards to Vote No for OOXML (Office Open Xml) at ISO

"There will be a BRM (Ballot resolution meeting) in Geneva on 25-29 February 2008 to answer the comments by National Standard Boards on OOXML and to resolve issues.

"Microsoft has set up a situation where many of the shortcomings and thousands of comments which need to be resolved at the BRN will not be addressed. They have closed this process as much as possible and have delayed National Boards from having adequate time to review proposed changes..."

Open Standards represent a democratic ideal, which means accountability. When one proposes one’s own property to become an ISO standard, we have a right to know all the answers before we vote you in.


As it currently stands, for the ISO community to adopt OOXML as a standard would be the first step toward our cherished Open Internet and Open Standards becoming an asset on the balance sheet of just one company, Microsoft. Recall that Microsoft was held liable by the US government and the EU as a proven monopolist, which illegally leveraged that monopoly to stifle competition. Here are some of the unresolved questions regarding OOXML that Microsoft cannot or simply will not answer:

* What will be the default file format of Office 14 (Office 2009)? Will it be identical to that described in Ecma-376? We don’t know, because Microsoft is not providing us with a clear roadmap. Further more, there appears to be a very real question as to whether or not MS’s covenant not to sue applies only to the current implementation, MS Office 2007, if you read the fine print. Where is Microsoft taking the world with OOXML? We just don’t know.
* As part of the comment disposition process in JTC1, Microsoft is proposing to make thousands of changes to the Ecma-376 specification. When will we see a version of MS Office that implements all of the revised specification? Currently, not one single version of Microsoft Office is capable of actually implementing the OOXML specification.
* Thousands of changes are being made to OOXML as part of the JTC1 comment resolution process. Is MS going to implement those changes, and if so, and how?
* We have the OOXML “standard” and we have the MS-OOXML “reality”, what Microsoft Office actually writes out. It is known, for example, that MS-OOXML can contain scripts, macros and DRM, features that are not documented at all in the OOXML specification. What other features are output by MS Office but not described in the OOXML specification?
* The Microsoft Open Specification Promise (http://www.microsoft.com/interop/osp/default.mspx) says that it only covers things that are “described in detail and not merely referenced in such Specification.” What are the technologies that are not covered by the OSP, the technologies that Microsoft believes are not described in detail or are merely referenced? What is shown in the OSP simply reinforces that the whole OOXML spec cannot be implemented. Rather than this vague language, why doesn’t Microsoft give an explicit list?
* What comments from the general public did Ecma TC45 receive during its review period in Ecma? Why have these public comments been suppressed?
* If Microsoft Office “Open” XML is truly “open,” why is it that the OOXML specification is tied so heavily to only one vendor’s products, as opposed to 40 applications currently capable of supporting the ODF specification?
* OOXML still has many technical shortcomings, as failed tests demonstrate. A couple of examples:
1) Excel 2007 can produce a fully binary file format that has the same extension as OOXML for spreadsheets, so the application knows what is inside, but the user will never be privy to that information, absent specific accommodation from Microsoft on a case-by-case basis, which is an accommodation that Microsoft is unlikely to grant to the public at large; 2) try setting a password on an OOXML spreadsheet file from Office 2007. The document is no longer in OOXML format and the user is given no indication that they are no longer in a documented file format. Is OOXML ready to be an International Standard?
* From the overall document contents, it is acutely clear that no effort has been made in OOXML to start from the existing ISO standard for the representation of documents in XML. (The current standard is ODF 1.0, formally known as ISO/IEC 26300:2006). OOXML is unneeded and only harmful. Why did MS embark on this deliberate departure from an internationally recognized standard?
* If you read through the draft submitted to ECMA and ISO you will see MS has only disclosed a disabled subset of the markup and functionality of its new file formats. Lots of elements designed into OOXML are left undefined in the specification and require behaviors upon document files that only Microsoft Office applications can provide. Why? Also, when MS released the feature RTF format for interoperability initially in OOXML, it supported both read and write capabilities in Office. But they changed that so Office 2007 can receive OOXML files but will only “Write” now to a different file format. Why did MS make this change?
* In addition to the “open specification promise,” Microsoft should change the licensing scheme for any relevant current patents which can be used to extend OOXML. Those patents should be made available under a license which is clearly compatible with GPL and LGPL. This licensing schema should apply to future relevant Microsoft patents, too. Will Microsoft make its relevant patents legally valid for Open Source use.
* The name “Office Open XML” is often mistakenly called “Open Office XML” implying a non-existent connection to the OpenOffice.org project. This naming confusion has been documented and has occurred numerous times, including by analysts and even in Microsoft press releases and blogs. Since “OpenOffice.org ” is the pre-existing name, by 6 years, Ecma should choose a new name, less apt to continue this confusion. Will Microsoft make this change as a condition of gaining ISO status for OOXML? Don’t hold your breath.
* The Open Specification Promise that covers OOXML explicitly covers only the “Ecma 376″ version of the standard. However, thousands of changes are being made to OOXML as part of the JTC1 comment resolution process. Are these changes covered as well?
* While Microsoft originally made assurances that the ISO would take control of the standard if it were approved, Microsoft has now reversed that position and will keep near-full control over OOXML within ECMA [PDF], an industry group that exists to advocate its members interests. Since the development and standardization of OOXML has been opaque, what guarantee will MS make to assure those activities will be done in an open setting in the future, including changes to MS Office as they are made which have direct effect on the format? Will Microsoft fulfill their promise to transfer stewardship, control and ownership of OOXML over to ISO, a promise made they made publicly and repeatedly?
* There’s a limit to what you can do with metadata. Working with RDF is nice, but custom XML schemas are the complete opposite of interoperability. Custom schemas break interoperability as they are by definition not shared by everybody or every organization. It thus condemns documents containing custom XML schemas to be manipulated and shared only by the users who have access to those custom XML schemas (typically inside one organization, generating maintenance problems for the future). How can the ISO community ever be assured that OOXML will interoperate with the established ISO standard?
* Many countries, including Thailand, expressed that they had no time to review the MS OOXML Spec during the Fast Track process. Other countries combined submitted thousands and thousands of comments. Yet only a small percentage of those comments will be addressed at the BRM, and all of those comments to be addressed will be technical comments only. When will comments on IPR, ISO policies/goals and JTC1 “contradiction” be resolved if not at the BRM? These countries deserve a resolution. Will they be resolved in an open and transparent fashion?
* MS claims that MS Office can support arbitrary user-supplied XML schemas. If that is really true, then the established ISO standard ODF’s schema could be loaded into Office 2007 and future versions natively, with an ODF option as default and the cloaking of OOXML as a standard dropped? Why not?

Information and communication technology (ICT) devices are able to exchange information only if they adhere to common communication protocols, technical interfaces, and information formats. We all desire the freedom and ability to develop, and implement these ICT’s. We all feel the need for ICT within the same field to be able to interchange data efficiently.

OOXML demonstrates a “standard” Microsoft hurried through ECMA and appears to be nothing more than a rubber-stamp of one vendor’s product specification. Microsoft’s OOXML is nothing more than a format Microsoft created by running a program that spits out the guts of MS Office in an XML form. Now MS appears to have realized this and expressed the “Intent” to deprecate features in the future. Microsoft appears to think it is best to get rid of references to legacy formats and other proprietary technology in experimental Version 1.

The trend is that Microsoft is opening up the boring legacy bits of OOXML, in stupefying detail, while neglecting to document the pieces actually needed for interoperability at a competitive level, like macros, scripting, encryption, etc. In essence, Microsoft is opening up and releasing the file format information that competitors like OpenOffice.org have already figured out on their own, while still at the same time restricting access to the information needed to compete. And the more MS realizes it has to open up the specification, deprecate and modernize OOXML, what do you get? You get XML. XML is XML. Strip out the non-XML garbage from OOXML and you will have the OpenDocument Format.

We need for MICROSOFT TO ANSWER THESE QUESTIONS. Rather than hiding all the information we need and trying to cloak OOXML as ODF, we ask Microsoft to please get off the sinking ship, collaborate with the global community (which will welcome Microsoft) and help develop one universal file format for all. Long term, Microsoft can only benefit from cooperating with the market!

To our readers outside Microsoft’s walls, we ask that you please consider contacting the National Board in your country, and request complete resolution for all issues raised by the comments to Microsoft’s OOXML ISO application. Please be sure to insist that both the technical and non-technical issues be completely resolved as a pre-condition before OOXML is granted ISO status.

Sunday, January 6, 2008

HELP US PROTECT YOUR FREEDOM