Wednesday, April 27, 2011

How do free and open source projects earn revenue?

Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program. -- Linus Torvalds
Ever wondered how commercial companies which develop open source software make money? How are they able to thrive in today's competitive world (with competitors employing tactics such as Fear, uncertainity and doubt, Embrace, extend and extinguish etc). Here are some ways using which free and open source projects get their revenue:

1. Donations (from users).
2. Microdonation providers such as flattr and Gittip.
3. Crowdfunding such as Bountysource.
4. Advertisements on project's website.
6. Paid support: Provide support to customers in return for money.

Tuesday, April 26, 2011

Potential software project ideas

The fact is the human race is not only slow about borrowing valuable ideas--it sometimes persists in not borrowing them at all. -- Mark Twain in "Some National Stupidities"
Mind you, this blog post might be blatantly outdated due to me being unable to update this post in future. Quoting Artificial Intelligence: A Modern Approach: What if a cargo door falls off a passing airliner and I'm crushed under it? So, please do your homework before working on any topic from the list below. In short, don't reinvent the wheel (aka NIH syndrome). Also, if a project idea is already being actively worked on by someone (including you), please post details in comments below so that I can update this post accordingly.

1. Cross-platform (and preferably free and open source) alternative to Windows Live Writer:
Though there are many similar alternatives, none of them surpasses Windows Live Writer.

2. Vertical tabs support in chromium/chrome web browser:
Similar to vertical, (nested) tree style tabs for firefox. There had been some work (removed?) done already on this but there's no consistent implementation for all operating systems (plus, none of methods seem to work on linux and other unix-like systems).

3. ext4 (as well as better ext3/ext2) FS drivers for Windows OSes:
There are a few drivers out there but none of them have rock-solid (Todo: Define 'rock-solid') support for ext4 (as well as ext3/ext2).

4. Better open standard for authorization:
I'm talking here about alternatives to OpenID and OAuth. Both OpenID and OAuth seem to have potential problems.

Notes:
1. Most projects that had participated (or applied) in Google Summer of Code in past years have some sort of ideas/brainstorming page (e.g. 1, 2, 3 etc.). The 'ideas' page are (usually) a rich source for potential project ideas. GIYF.

I'll append more ideas to this post as and when they pop up in my mind. Post your ideas in comments to be added to this blogpost. Links to similar lists on web are also welcome.

Wednesday, April 20, 2011

GRUB bootloader


Don't bother people for help without first trying to solve the problem yourself. -- Colin Powell
Source (of most of info in this post): http://bytes.com/topic/unix/answers/800560-wheres-my-grub (Reply #2, #5, #7). Thanks 'micmast'.

If GRUB bootloader was overwritten with Windows bootloader when trying to repair some Windows OS, you may reinstall it without the need of reinstalling your linux distro from scratch. Follow these instructions:

  1. Boot into a linux *live* CD. Choose your favourite distribution. I personally prefer Debian. All the steps after this step should be done as root user in terminal.
  2. Mount the partition on which linux is installed (here /dev/sda1) using something like:
    # mount /dev/sda1 /mnt/sda1
    
    Use 'fdisk -l', cfdisk or gparted to find your linux partition. Or, you can also try mounting using a graphical file manager and then typing 'mount' to know partition and it's mount location.
  3. Next mount /dev, /proc and /sys:
    # mount --bind /dev /mnt/sda1/dev
    # mount --bind /proc /mnt/sda1/proc
    # mount --bind /sys /mnt/sda1/sys
    
  4. Now you need to chroot to your linux installation:
    # chroot /mnt/sda1
    
    From now on, whatever you'll do will be applied to linux installed on partition /dev/sda1. You have got access to your installed linux using a live CD.
  5. Let's install GRUB now:
    # grub-install /dev/sda
    
    Note that you need to type the name of your hardrive in the above command (and *not* the partition on which linux is installed).
  6. To close chroot environment (not sure about some of steps below):
    # umount /proc
    Now, press CTRL+D (i.e. the keycombination). Then:
    # umount /mnt/sda1/dev
    # umount /mnt/sda1/proc
    # umount /mnt/sda1/sys
    
That's it. Reboot and remove your live CD. You'll be greeted with your GRUB.
You can also try using AutoSuperGrubDisk or Super Grub Disk.


Note: Also, sometimes GRUB cannot correctly find the OS or kernel version (in case multiple kernel versions are installed) on your computer. If you find any of installed operating system missing from GRUB boot menu, login to your linux installation and run following as root:
# update-grub
Ideally, this will find all installed operating systems and update your GRUB menu accordingly.

Thursday, April 14, 2011

Getting multimedia keys to work on Unix-like systems

Notes:
1. I tested this with Xorg, though it should flawlessly work with Xfree86 too.
2. Thanks 'macrobat' on #debian (irc.freenode.net) for help.

First of all setup your ~/.Xmodmap based on following links:
http://en.gentoo-wiki.com/wiki/Multimedia_Keys#Setting_up_xmodmap
http://wiki.archlinux.org/index.php/Extra_Keyboard_Keys_in_Xorg#Step_1:_Create_the_xmodmap_file

Now you need to bind keys using xbindkeys. Install 'xbindkeys', if it's not already installed. Now generate ~/.xbindkeysrc using:

xbindkeys --defaults > /home/amber/.xbindkeysrc

Or else, simply start with a new blank file ~/.xbindkeysrc in your text editor. Then edit the code snippet below to match your system and put it in ~/.xbindkeysrc. As you had probably guessed yourself, you can bind other actions/commands specified in your .Xmodmap here.
# mute
"amixer sset Master toggle"
  m:0x0 + c:160
  XF86AudioMute 
# vol down
"amixer set Master 2dB- unmute"
  m:0x0 + c:174
  XF86AudioLowerVolume
# vol up
"amixer set Master 2dB+ unmute"
  m:0x0 + c:176
  XF86AudioRaiseVolume
Note: The lines indented in the code above may be different on your system. To find them, use:
xbindkeys --key
Now, put these line to your .xinitrc:
xmodmap ~/.Xmodmap
xbindkeys -f ~/.xbindkeysrc
Then restart X.

Saturday, April 09, 2011

Error in virtualbox: "No suitable vboxnetflt module for running kernel found"

If you get this error during boot on console:
"No suitable vboxnetflt module for running kernel found"
and you are unable to run any virtual machines inside virtualbox, then you are missing the linux kernel required to run this version of virtualbox.

This log (from debian lenny) provides some useful information (Lines 90, 91, 92, 108, 109, 110 are worth noting):
http://codepad.org/twhonwWA

So, find out the version of linux kernel you need and install it using your package manager.

Thanks to folks at #debian, #vbox (at freenode) for help. 

Thursday, April 07, 2011

Editing PDFs on Unix/BSD/Linux

Computers make it easier to do a lot of things, but most of the things they make it easier to do don't need to be done. -- Andy Rooney
Programs in the list that follows are free (at least for non-commerical use) at the time of writing.

1. PDFedit
http://pdfedit.petricek.net/en/index.html

2. flpsed
http://flpsed.org/flpsed.html

3. Xournal
http://xournal.sourceforge.net/

4. Jarnal
http://www.dklevine.com/general/software/tc1000/jarnal.htm

5. PDF-Xchange viewer (Use Wine to run this program under *nix.)
http://www.docu-track.com/home/prod_user/pdfx_viewer/

Note: Alternatively, there are many online PDF editors available. You know how to use Google...right? 

If I find other similar applications, I'll append them to this post.