Quantcast
Channel: Sameh Attia
Viewing all 1407 articles
Browse latest View live

A Beginner's Guide To btrfs

$
0
0
http://www.howtoforge.com/a-beginners-guide-to-btrfs


This guide shows how to work with the btrfs file system on Linux. It covers creating and mounting btrfs file systems, resizing btrfs file systems online, adding and removing devices, changing RAID levels, creating subvolumes and snapshots, using compression and other things. btrfs is still marked as experimental, but all those features make it a very interesting and flexible file system that should be taken into consideration when you look for the right file system.
I do not issue any guarantee that this will work for you!

1 Preliminary Note

I'm using an Ubuntu 12.10 system here with four additional, yet unformatted hard drives (/dev/sdb, /dev/sdc, /dev/sdd, and /dev/sde). I will use these four hard drives to demonstrate btrfs usage.
A note for Ubuntu users:
Because we must run all the steps from this tutorial with root privileges, we can either prepend all commands in this tutorial with the string sudo, or we become root right now by typing
sudo su

2 Installing btrfs-tools

Before we start using btrfs, we must install the btrfs-tools package:
apt-get install btrfs-tools

3 Creating btrfs File Systems (RAID0, RAID1)

One great feature of btrfs is that you can create btrfs file systems on unformatted hard drives, i.e., you don't have to use tools like fdisk to partition a hard drive.
To create a btrfs file system on /dev/sdb, /dev/sdc, and /dev/sdd, we simply run:
mkfs.btrfs /dev/sdb /dev/sdc /dev/sdd
Without any further switches, this file system uses RAID0 for data (non-redundant) and RAID1 for metadata (redundant). When data is lost for some reason (e.g. failed sectors on your hard drive), btrfs can use metadata for trying to rebuild that data.
root@server1:~# mkfs.btrfs /dev/sdb /dev/sdc /dev/sdd

WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using

adding device /dev/sdc id 2
adding device /dev/sdd id 3
fs created label (null) on /dev/sdb
        nodesize 4096 leafsize 4096 sectorsize 4096 size 15.00GB
Btrfs Btrfs v0.19
root@server1:~#
If you want to use btrfs with just one hard drive and don't want metadata to be redundant (attention: this is dangerous - if your metadata is lost, your data is lost as well), you'd use the -m single switch (-m refers to metadata, -d to data):
mkfs.btrfs -m single /dev/sdb
If you want to do the same with multiple hard drives (i.e., non-redundant metadata), you'd use -m raid0 instead of -m single:
mkfs.btrfs -m raid0 /dev/sdb /dev/sdc /dev/sdd
If you want data to be redundant and metadata to be non-redundant, you'd use the following command:
mkfs.btrfs -m raid0 -d raid1 /dev/sdb /dev/sdc /dev/sdd
If you want both data and metadata to be redundant, you'd use this command (RAID1 is the default for metadata, that's why we don't have to specify it here):
mkfs.btrfs -d raid1 /dev/sdb /dev/sdc /dev/sdd
It is also possible to use RAID10 (-m raid10 or -d raid10), but then you need at least four hard drives. For RAID1, you need at least two hard drives, but it is not important that both drives have exactly the same size (which is another great thing about btrfs).
To get details about your filesystem, you can use...
btrfs filesystem show /dev/sdb
... which is equivalent to...
btrfs filesystem show /dev/sdc
... and...
btrfs filesystem show /dev/sdd
... because you can use any hard drive which is part of the btrfs file system.
root@server1:~# btrfs filesystem show /dev/sdb
failed to read /dev/sr0
Label: none  uuid: 21f33aaa-b2b3-464b-8cf1-0f8cc3689529
        Total devices 3 FS bytes used 28.00KB
        devid    3 size 5.00GB used 1.01GB path /dev/sdd
        devid    2 size 5.00GB used 1.01GB path /dev/sdc
        devid    1 size 5.00GB used 2.02GB path /dev/sdb

Btrfs Btrfs v0.19
root@server1:~#
To get a list of all btrfs file systems, just leave out the device:
btrfs filesystem show
root@server1:~# btrfs filesystem show
failed to read /dev/sr0
Label: none  uuid: 21f33aaa-b2b3-464b-8cf1-0f8cc3689529
        Total devices 3 FS bytes used 28.00KB
        devid    3 size 5.00GB used 1.01GB path /dev/sdd
        devid    2 size 5.00GB used 1.01GB path /dev/sdc
        devid    1 size 5.00GB used 2.02GB path /dev/sdb

Btrfs Btrfs v0.19
root@server1:~#

4 Mounting btrfs File Systems

Our btrfs file system can now be mounted like this:
mount /dev/sdb /mnt
Again, this is equivalent to...
mount /dev/sdc /mnt
... and:
mount /dev/sdd /mnt
In your /etc/fstab, this would look as follows (if you want to have the file system mounted automatically at boot time):
vi /etc/fstab
[...]
/dev/sdb /mnt btrfs defaults 0 1
[...]
Run...
df -h
... to see your new file system:
root@server1:~# df -h
Filesystem                Size  Used Avail Use% Mounted on
udev                      489M  4.0K  489M   1% /dev
tmpfs                     200M  308K  199M   1% /run
none                      5.0M     0  5.0M   0% /run/lock
none                      498M     0  498M   0% /run/shm
none                      100M     0  100M   0% /run/user
/dev/mapper/server1-root   27G  1.1G   25G   5% /
/dev/sda1                 228M   29M  188M  14% /boot
/dev/sdb                   15G   56K   10G   1% /mnt
root@server1:~#
The command...
btrfs filesystem df /mnt
... gives you some more details about your data and metadata (e.g. RAID levels):
root@server1:~# btrfs filesystem df /mnt
Data, RAID1: total=1.00GB, used=0.00
Data: total=8.00MB, used=0.00
System, RAID1: total=8.00MB, used=4.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=1.00GB, used=24.00KB
Metadata: total=8.00MB, used=0.00
root@server1:~#

5 Using Compression With btrfs

btrfs file systems can make use of zlib (default) and lzo compression which means that compressible files will be stored in compressed form on the hard drive which saves space. zlib has a higher compression ratio while lzo is faster and takes less cpu load. Using compression, especially lzo compression, can improve the throughput preformance. Please note that btrfs will not compress files that have already been compressed ar application level (such as videos, music, images, etc.).
You can mount a btrfs file system with lzo compression as follows:
mount -o compress=lzo /dev/sdb /mnt
For zlib compression, you'd either use...
mount -o compress=zlib /dev/sdb /mnt
... or...
mount -o compress /dev/sdb /mnt
... since zlib is the default compression algorithm.
In /etc/fstab, this would look as follows:
vi /etc/fstab
[...]
/dev/sdb /mnt btrfs defaults,compress=lzo 0 1
[...]

6 Rescuing A Dead btrfs File System

If you have a dead btrfs file system, you can try to mount it with the recovery mount option which will try to seek for a usable copy of the tree root:
mount -o recovery /dev/sdb /mnt

7 Resizing btrfs File Systems Online

btrfs file systems can be resized online, i.e., there's no need to unmount the partition or to reboot into a rescue system.
To decrease our /mnt volume by 2GB, we run:
btrfs filesystem resize -2g /mnt
(Instead of g for GB, you cam also use m for MB, e.g.
btrfs filesystem resize -500m /mnt
)
root@server1:~# btrfs filesystem resize -2g /mnt
Resize '/mnt' of '-2g'
root@server1:~#
Let's take a look at our /mnt partition...
df -h
... and we should see that it has a size of 13GB instead of 15GB:
root@server1:~# df -h
Filesystem                Size  Used Avail Use% Mounted on
udev                      489M  4.0K  489M   1% /dev
tmpfs                     200M  308K  199M   1% /run
none                      5.0M     0  5.0M   0% /run/lock
none                      498M     0  498M   0% /run/shm
none                      100M     0  100M   0% /run/user
/dev/mapper/server1-root   27G  1.1G   25G   5% /
/dev/sda1                 228M   29M  188M  14% /boot
/dev/sdb                   13G  312K   10G   1% /mnt
root@server1:~#
To increase the /mnt partition by 1GB, run:
btrfs filesystem resize +1g /mnt
df -h
root@server1:~# df -h
Filesystem                Size  Used Avail Use% Mounted on
udev                      489M  4.0K  489M   1% /dev
tmpfs                     200M  308K  199M   1% /run
none                      5.0M     0  5.0M   0% /run/lock
none                      498M     0  498M   0% /run/shm
none                      100M     0  100M   0% /run/user
/dev/mapper/server1-root   27G  1.1G   25G   5% /
/dev/sda1                 228M   29M  188M  14% /boot
/dev/sdb                   14G  312K   10G   1% /mnt
root@server1:~#
To increase the partition to the max. available space, run:
btrfs filesystem resize max /mnt
df -h
root@server1:~# df -h
Filesystem                Size  Used Avail Use% Mounted on
udev                      489M  4.0K  489M   1% /dev
tmpfs                     200M  308K  199M   1% /run
none                      5.0M     0  5.0M   0% /run/lock
none                      498M     0  498M   0% /run/shm
none                      100M     0  100M   0% /run/user
/dev/mapper/server1-root   27G  1.1G   25G   5% /
/dev/sda1                 228M   29M  188M  14% /boot
/dev/sdb                   15G  312K   10G   1% /mnt
root@server1:~#

8 Adding/Deleting Hard Drives To/From A btrfs File System

Now we want to add /dev/sde to our btrfs file system. While the file system is mounted to /mnt, we simply run:
btrfs device add /dev/sde /mnt
Let's take a look at the file system afterwards:
btrfs filesystem show /dev/sdb
root@server1:~# btrfs filesystem show /dev/sdb
failed to read /dev/sr0
Label: none  uuid: 21f33aaa-b2b3-464b-8cf1-0f8cc3689529
        Total devices 4 FS bytes used 156.00KB
        devid    4 size 5.00GB used 0.00 path /dev/sde
        devid    3 size 5.00GB used 1.01GB path /dev/sdd
        devid    2 size 5.00GB used 1.01GB path /dev/sdc
        devid    1 size 5.00GB used 2.02GB path /dev/sdb

Btrfs Btrfs v0.19
root@server1:~#
As you see, /dev/sde has been added, but no space is being used on that device. If you are using a RAID level other than 0, you should now do a filesystem balance so that data and metadata get spread over all four devices:
btrfs filesystem balance /mnt
(Another syntax for the same command would be:
btrfs balance start /mnt
)
root@server1:~# btrfs filesystem balance /mnt
Done, had to relocate 5 out of 5 chunks
root@server1:~#
Let's take a look at our file system again:
btrfs filesystem show /dev/sdb
root@server1:~# btrfs filesystem show /dev/sdb
failed to read /dev/sr0
Label: none  uuid: 21f33aaa-b2b3-464b-8cf1-0f8cc3689529
        Total devices 4 FS bytes used 28.00KB
        devid    4 size 5.00GB used 512.00MB path /dev/sde
        devid    3 size 5.00GB used 32.00MB path /dev/sdd
        devid    2 size 5.00GB used 512.00MB path /dev/sdc
        devid    1 size 5.00GB used 36.00MB path /dev/sdb

Btrfs Btrfs v0.19
root@server1:~#
As you can see, data/metadata has been moved to /dev/sde.
To delete an intact hard drive, e.g. /dev/sdc, from the btrfs file system online, you can simply run:
btrfs device delete /dev/sdc /mnt
(This automatically does a rebalance of data/metadata, if necessary.)
While...
btrfs filesystem show /dev/sdb
... still lists /dev/sdc, the output of...
df -h
... shows the reduced size of the file system.
To remove a failed hard drive, unmount the file system first:
umount /mnt
Mount it in degraded mode:
mount -o degraded /dev/sdb /mnt
Remove the failed hard drive. If you use a RAID level that requires a certain number of hard drives (e.g. two for RAID1 and four for RAID10), you might have to add an intact replacement drive because you cannot go below the minimum number of required drives.
If you have to add a replacement drive (e.g. /dev/sdf), do it as follows:
btrfs device add /dev/sdf /mnt
Only if you are sure you have enough intact drives do you run the following command to complete the replacement:
btrfs device delete missing /mnt

The RAID level of a btrfs file system can also be changed online. Let's assume we're using RAID0 for data and metadata and want to change to RAID1, this can be done as follows:
btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

10 Creating Subvolumes

With btrfs, we can create subvolumes in volumes or other subvolumes, and we can take snapshots of these subvolumes or mount subvolumes instead of the top-level volume.
To create the subvolume /mnt/sv1 in the /mnt volume, we run:
btrfs subvolume create /mnt/sv1
This subvolume looks like a normal directory...
ls -l /mnt
root@server1:~# ls -l /mnt/
total 0
drwxr-xr-x 1 root root 0 Nov 21 16:06 sv1
root@server1:~#
... but it's a subvolume of /mnt (with the suvolid 265 in this case):
btrfs subvolume list /mnt
root@server1:~# btrfs subvolume list /mnt
ID 265 top level 5 path sv1
root@server1:~#
To create a subvolume of a subvolume (e.g. /mnt/sv1/sv12), run:
btrfs subvolume create /mnt/sv1/sv12
The command...
btrfs subvolume list /mnt
... lists now also the new subvolume:
root@server1:~# btrfs subvolume list /mnt
ID 265 top level 5 path sv1
ID 266 top level 5 path sv1/sv12
root@server1:~#

11 Mounting Subvolumes

When you mount the top-level volume, this also mounts any subvolume automatically. But with btrfs, it is also possible to mount a subvolume instead of the top-level volume.
For example, to mount the subvolume with the ID 266 (which we created in the last chapter) to the /mnt directory, first unmount the top-level volume...
umount /dev/sdb
... and then mount the subvolume like this:
mount -o subvolid=266 /dev/sdb /mnt
(Instead of the subvolid, you can also use its name from the btrfs subvolume list /mnt output:
mount -o subvol=sv1/sv12 /dev/sdb /mnt
)
To mount the default volume again, unmount /mnt...
umount /dev/sdb
... and run the mount command like this:
mount /dev/sdb /mnt
This is in fact equivalent to the command...
mount -o subvolid=0 /dev/sdb /mnt
... because the top-level volume has the subvolid 0.
If you want to make the subvolume with the subvolid 266 the default volume (so that you can mount it without any parameters), just run...
btrfs subvolume set-default 266 /mnt
... and then unmount/mount again:
umount /dev/sdb
mount /dev/sdb /mnt
Now the subvolume with the ID 266 is mounted to /mnt instead of the top-level volume.
If you've changed the default subvolume and want to mount the top-level volume again, you must either use the subvolid 0 with the mount command...
umount /dev/sdb
mount -o subvolid=0 /dev/sdb /mnt
... or make the top-level volume the default one again:
btrfs subvolume set-default 0 /mnt
Then unmount/mount again:
umount /dev/sdb
mount /dev/sdb /mnt

12 Deleting Subvolumes

Subvolumes can be deleted using their path while they are mounted. For example, the subvolume /mnt/sv1/sv12 can be deleted as follows:
btrfs subvolume delete /mnt/sv1/sv12
The command...
btrfs subvolume list /mnt
... shouldn't list the deleted subvolume anymore:
root@server1:~# btrfs subvolume list /mnt
ID 265 top level 5 path sv1
root@server1:~#

13 Creating Snapshots

One of the most useful btrfs features is that you can create snapshots of subvolumes online. This can be useful for doing rollbacks or creating consistent backups.
Let's create some test files in our /mnt/sv1 subvolume:
touch /mnt/sv1/test1 /mnt/sv1/test2
Now we take a snapshot called /mnt/sv1_snapshot of the /mnt/sv1 subvolume:
btrfs subvolume snapshot /mnt/sv1 /mnt/sv1_snapshot
If everything went well, we should find our test files in the snapshot as well:
ls -l /mnt/sv1_snapshot
root@server1:~# ls -l /mnt/sv1_snapshot
total 0
-rw-r--r-- 1 root root 0 Nov 21 16:23 test1
-rw-r--r-- 1 root root 0 Nov 21 16:23 test2
root@server1:~#

14 Taking Snapshots Of Files

With btrfs, it's even possible to take a snapshot of a single file.
For example, to take a snaptshot of the file /mnt/sv1/test1, you can run:
cp --reflink /mnt/sv1/test1 /mnt/sv1/test3
As long as the contents of /mnt/sv1/test1 doesn't change, the snapshot /mnt/sv1/test3 will not take up any space! Only if the original file /mnt/sv1/test1 is modified, will the original contents be copied to the snapshot /mnt/sv1/test3.

15 Defragmentation

To defragment a btrfs file system, you can run:
btrfs filesystem defrag /mnt
Please note that this command is useful only on normal hard drives, not on solid state disks (SSDs)!

16 Converting An ext3/ext4 File System To btrfs

It is possible to convert an ext3 or ext4 file system to btrfs (and also to do a rollback). To do this for your system partition, you need to boot into a rescue system - for Ubuntu 12.10, I've written a tutorial about this: How To Convert An ext3/ext4 Root File System To btrfs On Ubuntu 12.10
For non-system partitions, this can be done without a reboot. In this example, I want to convert my ext4 partition /dev/sdb1 (mounted to /mnt) to btrfs:
First unmount the partition and run a file system check:
umount /mnt
fsck -f /dev/sdb1
Then do the conversion as follows:
btrfs-convert /dev/sdb1
root@server1:~# btrfs-convert /dev/sdb1
creating btrfs metadata.
creating ext2fs image file.
cleaning up system chunk.
conversion complete.
root@server1:~#
That's it - you can now mount the btrfs partition:
mount /dev/sdb1 /mnt
The conversion has created an ext2_saved subvolume with an image of the original partition:
btrfs subvolume list /mnt
root@server1:~# btrfs subvolume list /mnt
ID 256 top level 5 path ext2_saved
root@server1:~#
If you want to do a rollback, you must keep that subvolume. Otherwise, you can delete it to free up some space:
btrfs subvolume delete /mnt/ext2_saved

16.1 Doing A Rollback To ext3/ext4

Let's assume you're not happy with the result - this is how you can roll back to the original file system (ext3 or ext4):
The conversion should have created an ext2_saved subvolume with an image of the original partition:
btrfs subvolume list /mnt
root@server1:~# btrfs subvolume list /mnt
ID 256 top level 5 path ext2_saved
root@server1:~#
This image will be used to do the rollback.
Unmount the partition...
umount /mnt
... then do the rollback...
btrfs-convert -r /dev/sdb1
... and finally mount the original partition again:
mount /dev/sdb1 /mnt

17 Links



40+ Open Source and Free Software

$
0
0
http://pcquest.ciol.com/content/topstories/2012/112113008.asp


Whether you want to monitor your network bandwidth, secure your network against malware, or setup a simple mail server, there's an open source or free software available for the job. Presented here are more than 40+ of them

 'Slow Internet' can be due to actual connectivity issue and in most cases due to mismanagement of bandwidth. So next time while trying to download that critical attachment if it takes forever, go to your task manger and check network performance. You might find out that bulk of your bandwidth is taken up by YouTube HD video running in background.
Here we list down some popular bandwidth management tools which can be downloaded for free.
Traffic Shaper XP 1.21
Traffic Shaper XP is an IP based bandwidth management solution for your networks. As the name suggests it provides network administrators with traffic shaping and flow control capabilities, including automated components for Internet allocation and provision. One can install this package as gateway which would make all Internet streams flow through it. Each stream can be controlled using a combination of prioritization, guaranteed service levels and speed limiting. This system will allow full control over all types of data such as games, video, VoIP, web and e-mail.
No client software or configuration is needed except for the manager application which can be installed on any machine for remote management of the server.
www.bandwidthcontroller.com
NetBalancer
A very simple to use utility for Windows machine which supports following operating systems: XP, 2003, Vista, 7, and 8. Once you install free version of this utility, you can check out which all processes are using bandwidth. You also come to know how much bandwidth each application is using. You can limit usage of bandwidth by simply right clicking particular application and setting priority to it> You can go further and define numerical bandwidth of each application. One point to note here is that free version has some limitation, it is limited to a maximum of 3 process priorities/limits and 3 rules at a time and has no separate network adapters management and no support for Network Grouping.
www.seriousbit.com
Networx 5.2.5
While the above two tools help you to actually manipulate bandwidth, this one can help you check and report bandwidth usage. You can also measure the speed of Internet or any other network connection. This type of monitoring can help you identify possible sources of network problems, ensure that you do not exceed the bandwidth limits specified by your ISP, or track down suspicious network activity characteristic of Trojan horses and hacker attacks. One good feature of this free software is a system of highly customizable visual and sound alerts. You can set it up to alert you when the network connection is down or when some suspicious activity, such as unusually heavy data flow, occurs.
www.softperfect.com
ISP Monitor 5.7.5
Just like Netwox this one too lets you monitor bandwidth usage of your machine; it shows details regarding the amount of downloaded and uploaded information and the downstream/upstream speed. In addition to network monitoring, the application also features a disk monitor that offers real-time information on read/write speed or used disk space. This feature should come in handy when you plan to download large files and decide their location. Application's settings allow you to customize warnings to help you better control your quota by setting limits for download and upload. www.ispmonitor.be
Network Meter 1.1.0.0
In case you work on a machine with more than one network adapter, it might be a good idea to know how much bandwidth is used up by each adapter. Network Meter is a network information tool that monitors any installed adapter and provides traffic details. Users are required to pick a network interface to monitor because Network Meter doesn't automatically select the one currently in use. Once Network Meter starts collecting statistics, you can see the current and the total download and upload rates, along with a simple graph to track recent activity. Session totals are also available, and so is a network properties window that displays the maximum device speed, MTU size, MAC address and network type.
www.softpedia.com
10 network monitoring & management tools
OpenNMS
A network management application written in Java. It claims to be the world's first enterprise network management developed under an open source model. The project was registered on SourceForge on July 2000. Designed to scale to thousands of notes from one installation, OpenNMS can automatically discover network services and has an API for integration with bug tracking systems. While commercial development and support services are available through opennms.com, the project makes a point about not having a proprietary “enterprise” version.

 Zenoss Core
An open source network management product backed to manage the configuration, health, and performance of network, servers and applications, all from one system. Zenoss has an integrated CMDB and it is controlled by a Web-based GUI. Custom devices like temperature sensors can also be monitored using this tool. In addition to standard uptime and performance monitoring features, Zenoss supports monitoring templates dubbed “ZenPacks”.
NetXMS
An independent open source network management project that has client and server apps for Linux, Unix and Windows. In addition to standard network monitoring features, NetXMS also has business impact analysis tools. The NetXMS interface is a “fat” client and there apart from a Web interface.
Both free and paid support is available for this tool.
Nagios
One of the most popular open source network management tools, widely deployed by Linux users. It began life as “NetSaint” before being renamed as Nagios. The central application is called Nagios Core, with additional functionality available through Nagios Plug-ins, Front-ends and Config Tools. Regarding third-party applications and plug-ins for Nagios, there is the Nagios Exchange portal that categorises extensions across various genres.
Hyperic
An open source network management suite that targets itself as being suitable for Web application and virtual machine management. The commercial Hyperic was acquired by SpringSource, which was then acquired by VMWare. Hyperic features automatic discovery and records some 50,000 matrices across 75 application stacks. An Enterprise edition is available for Hyperic which includes more features than the open source edition along with commercial support.
PRTG Network Monitor
A handy and professional network montoring utility featuring up/downtime monitoring, traffic and usage monitoring, packet sniffing, in-depth analysis and concise reporting. Its user-friendly web-based interface allows users to quickly configure network devices and sensors they wish to monitor. All common methods for network usage data acquisition are supported: SNMP and WMI, Packet Sniffing, and NetFlow. PRTG Network Monitor includes more than 30 types of sensors for all common network services (e.g. PING, HTTP, SMTP, POP3, FTP, etc.), allowing users to monitor networks for speed and failures.
NetTraffic
A network data rate monitoring tool, NetTraffic show data rates on chart and as text label. It monitors Application log traffic and system up-time. There's a Statistics module that presents prognosis, average rates and information about current state. Tables and charts present statistical information from selected period (available: year, month, day, hour). The application can work with any network connection and works on Windows 7 / Vista / XP / 2000. It requires Microsoft .NET Framework 2.0.
CyD Network Utilities 2011
A useful application that helps users diagnose networks and monitor their computer's network connections. It can check open ports (checking running services), scan for open resources, manage the ARP table, analyze web site, Test connections, and a few other things.
NETGEAR Genie
Allows you to easily monitor your network and view the status of your Internet connection. The application automatically generates a network map and enables you to test the download speed of any website. Configure the router settings, set high traffic threshold and use AirPrint to access any printer in your network! The new version now supports AirPrint for iOS 6.0, and NETGEAR Powerline devices on a Network Map.
Etherwatch
A simple, small and Open Source tool that can monitor your network traffic, search for images and Google search terms. Etherwatch will display all found elements on your computer screen in the form of a mosaic.
10 Security Tools
SpamAssassin 3.3.2
The new release of this powerful anti-spam tool now supports perl-5.12 and later. The tool uses a wide variety of local and network tests to identify spam signatures, making it harder for spammers to identify one aspect that they can craft their messages to work around. The Anti-spam tests and configuration are stored in plain text, making it easy to configure and add new rules. It encapsulates its logic in a well-designed, abstract API so it can be integrated anywhere in the email stream.
ClamAV
An open source anti-virus engine designed for detecting Trojans, viruses, malware and other malicious threats. It is the de facto standard for mail gateway scanning. It provides a high performance mutli-threaded scanning daemon, command line utilities for on demand file scanning, and an intelligent tool for automatic signature updates.
IPCop Firewall
A Linux-based firewall distribution geared towards home and SOHO users, so its web-interface is extremely user-friendly.

 Smoothwall Express
A Free firewall that includes its own security-hardened GNU/Linux operating system and an easy-to-use web interface. It can convert a redundant PC into a hardened Internet firewall device.
Untangle
Yet another firewall solution for small businesses. Like IPCop and SmoothWall Express, Untangle is free to use. Unlike others however, Untangle also offers paid plans that grant more control and more web filtering options. What also sets Untangle apart is that it does not require any operating system to run. It just requires a dedicated PC, and during the installation process it will install its own operating system.
Endian Firewall Community
Similar to Untangle, Endian Firewall Community can turn an old PC into a unified threat management (UTM) appliance that provides a firewall, anti-virus, anti-spam, content filtering, and a VPN. Pre-configured appliances and support are also available for fee.
OpenVPN
A virtual private network, or VPN, is an excellent cost-saving tool in its own right. A VPN allows a business to use pre-existing infrastructure of the internet to host and access a private organizational network. This means a business no longer has to pay for costly private lines. OpenVPN takes the savings even further by eliminating the need to pay for expensive proprietary VPN software. It is easy to use and available on every platform imaginable.
TruCrypt
Create a virtual encrypted disk within a file or encrypt a partition or drive on a Windows system. It can also be used to encrypt a portable hard drive or USB flash drive. It works on Windows, Mac, and Linux.
Eraser
This completely eliminates a file so that it cannot be read even with digital forensic tools. It overwrites data several times with random patterns erasing all traces of sensitive information. It works on Windows.
10 Mail Servers
hMailServer
A free e-mail server for Microsoft Windows. It's used by Internet service providers, companies, governments, schools and enthusiasts in all parts of the world. It supports common e-mail protocols (IMAP, SMTP and POP3) and can easily be integrated with many existing web mail systems. It has flexible score-based spam protection and can attach to your virus scanner to scan all incoming and outgoing email.
Java Apache Mail Enterprise Server
An open source SMTP and POP3 mail transfer agent and NNTP news server written entirely in Java. IMAP support has been added as of preview version 3.0-M2. It now requires Java 1.5 or later.
The Courier mail transfer agent (MTA)
An integrated mail/groupware server based on open commodity protocols such as ESMTP, IMAP, POP3, LDAP, SSL, and HTTP. Courier provides ESMTP, IMAP, POP3, Webmail, calendaring, and mailing list services.
Zimbra: An open source server and client technology for next-generation enterprise messaging and collaboration.
Dwarf Mail Server 1.1.3
Implements SMTP, POP3 and IMAP4 rev 1 protocols. It provides support for rich application message processing via pluggable mail filters and agents, as well as full handling of virtual domains for the SMTP/POP3/IMAP4 protocols. Since the server is based on the Dwarf framework, it also shares its common design principles and features-simplicity, high modularity and extensibility, authentication and authorization, XML-based configuration, logging and remote management. With Dwarf Mail Server you get a powerful email server that supports POP3, IMAP and SMTP protocols.
MailEnable Standard Edition
Provides robust SMTP, POP3 and web mail services for Microsoft Windows servers. Simple to install, with powerful administration software means that your mail server will be up and running quickly. This edition is FREE, contains no spyware or adware, for both personal and commercial usage, with no time or user restrictions.
iRedMail
A ZERO COST, full fledged, full-featured mail server. All used packages in this are free and open source based, provided by the Linux/BSD distribution venders you trust.

 Hedwig
An open source IMAP, SMTP server written in Java, designed with ease of installation and configuration in mind. Hedwig enables storage of mail message headers in a relational database (MySQL) and mail messages in a file system.
Machinet mailserver
A setup for a (small) enterprise mail server using standard GPL components
QMAIL 3.0.5
A communications program that deserves to be more well known. It supports POP3, IMAP4, NNTP & RSS protocols. Installation simply involves copying the files to the Windows Mobile.
6 Virtualization Software
Microsoft Virtual Server 2005 R2
A virtualization environment for Windows Server 2003, Windows Server 2003 Service Pack 1, Windows XP Professional Edition and Windows XP Service Pack 2. It works on x86 servers or workstations and is available in 32- or 64-bit versions.
Q
Open source software for running Windows or Linux on a Macintosh. It allows users to switch between guest PCs and restart guest PCs at any point. Q also enables users to exchange files between the host operating system and the guest. Q is based on the QEMU open source CPU emulator. You need to be careful about using Q – according to the Web site, it is still alpha software.
KVM
Short for Kernel-based Virtual Machine, KVM is not as widely deployed as other open source hypervisors, but its stature is growing rapidly. KVM is a full virtualisation hypervisor and can run both Windows and Linux guests. With the kernel component of KVM included in Linux since kernel 2.6.20, KVM can claim a good level of integration with the rest of the operating system.
Xen
began life as a Microsoft-funded startup at the University of Cambridge and has risen to become the “de facto standard” in Linux hypervisors. Xen supports paravirtualisation and “hardware assisted” virtualisation for modified and un-modified guests, respectively.
Freevps
We will create seperate computing environments by Virtualising the native operating system with each environment acting as a dedicated server.Each environment (or VPS)act as different server with different network and files and processes.
VirtualBox
is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use. Not only is VirtualBox an extremely feature rich, high performance product for enterprise customers, it is also the only professional solution that is freely available as Open Source Software under the terms of the GNU General Public License (GPL) version 2. 

5 Best Practices to Secure and Protect SSH Server

$
0
0
http://www.tecmint.com/5-best-practices-to-secure-and-protect-ssh-server


SSH (Secure Shell) is an open source network protocol that is used to connect local or remote Linux servers to transfer files, make remote backups, remote command execution and other network related tasks via scp or sftp between two servers that connects on secure channel over the network.
SSH Security Tips
SSH Server Security Tips
In this article, I will show you some simple tools and tricks that will help you to tighten your ssh server security. Here you will find some useful information on how to secure and prevent ssh server from brute force and dictionary attacks.

1. DenyHosts

DenyHosts is an open source log-based intrusion prevention security script for SSH servers was written in python programming language that intended to run by Linux system administrators and users to monitor and analyzes SSH server access logs for failed login attempts knows as dictionary based attacks and brute force attacks. The script works by banning IP addresses after set number of failed login attempts and also prevent such attacks from gaining access to server.
DenyHosts Features
  1. Keeps track of /var/log/secure to find all successful and failed login attempts and filters them.
  2. Keeps eye on all failed login attempts by user and offending host.
  3. Keeps watch on each existing and non-existent user (eg. xyz) when a failed login attempts.
  4. Keeps track of each offending user, host and suspicious login attempts (If number of login failures) bans that host IP address by adding an entry in /etc/hosts.deny file.
  5. Optionally sends an email notifications of newly blocked hosts and suspicious logins.
  6. Also maintains all valid and invalid failed user login attempts in separate files, so that it makes easy for identifying which valid or invalid user is under attack. So, that we can delete that account or change password or disable shell for that user.
Read More : Install DenyHosts to Block SSH Server Attacks in RHEL / CentOS / Fedora

2. Fail2Ban

Fail2ban is one of the most popular open source intrusion detection/prevention framework written in python programming language. It operates by scanning log files such as /var/log/secure, /var/log/auth.log, /var/log/pwdfail etc. for too many failed login attempts. Fail2ban used to update Netfilter/iptables or TCP Wrapper’s hosts.deny file, to reject an attacker’s IP address for a set amount of time. It also has a ability to unban a blocked IP address for a certain period of time set by administrators. However, an certain minutes of unban is more enough to stop such malicious attacks.
Fail2Ban Features
  1. Multi-threaded and Highly configurable.
  2. Support for log files rotation and can handle multiple services like (sshd, vsftpd, apache, etc).
  3. Monitors log files and looks for known and unknown patterns.
  4. Uses Netfilter/Iptables and TCP Wrapper (/etc/hosts.deny) table to ban attackers IP.
  5. Runs scripts when a given pattern has been identified for the same IP address for more than X times.
Read More : Install Fail2ban to Prevent SSH Server Attacks in RHEL / CentOS / Fedora

3. Disable Root Login

By default Linux systems are per-configured to allow ssh remote logins for everyone including root user itself, which allows everyone to directly log in to system and gain root access. Despite the fact that ssh server allows a more secure way to disable or enable root logins, it’s always a good idea to disable root access, keeping servers a bit more secure.
There are so many people trying to brute force root accounts via SSH attacks by simply supplying different account names and passwords, one after another. If you are a system administrator, you can check ssh server logs, where you will find number of failed login attempts. The main reason behind number of failed login attempts is having weak enough passwords and that makes sense for hackers/attackers to try.
If you are having strong passwords, then you’re probably safe, however it’s better to disable root login and have regular separate account to log into, and then use sudo or su to gain root access whenever required.
Read More : How to Disable SSH Root Login and Limite SSH Access

4. Display SSH Banner

This is one of the oldest feature available from the beginning of the ssh project, but I’ve hardly seen it is used by anyone. Anyway I feels its important and very useful feature that I’ve used for all my Linux servers.
This is not for any security purpose, but the most greatest benefit of this banner is that it is used to display ssh warning messages to UN-authorized access and welcome messages to authorized users before the password prompt and after the user logged in.
Read More : How to Display SSH & MOTD Banner Messages

5. SSH Passwordless Login

A SSH Password-less login with SSH keygen will establish a trust relationship between two Linux servers which makes file transfer and synchronization much easier. This is very useful if you are dealing with remote automated backups, remote scripting execution, file transfer, remote script management etc without enter passwrod each time.
Read More : How to Set SSH Passwordless Login

Linux tip: Using an exclamation point (!) to reference events

$
0
0
http://www.itworld.com/operating-systems/329125/linux-tip-using-exclamation-point-reference-events


The C Shell history mechanism uses an exclamation point to reference events. This technique, which is available under bash and tcsh, is frequently more cumbersome to use than fc but nevertheless has some useful features. For example, the !! command reexecutes the previous event, and the shell replaces the !$ token with the last word from the previous command line.
You can reference an event by using its absolute event number, its relative event number, or the text it contains. All references to events, called event designators, begin with an exclamation point (!). One or more characters follow the exclamation point to specify an event.
You can put history events anywhere on a command line. To escape an exclamation point so the shell interprets it literally instead of as the start of a history event, precede it with a backslash (\) or enclose it within single quotation marks.

Event Designators

An event designator specifies a command in the history list. Table 8-8 lists event designators.

Table 8-8 Event designators

DesignatorMeaning
!Starts a history event unless followed immediately by SPACE, NEWLINE, =, or (.
!!The previous command.
!nCommand number n in the history list.
!–nThe nth preceding command.
!stringThe most recent command line that started with string.
!?string[?]The most recent command that contained string. The last ? is optional.
!#The current command (as you have it typed so far).
!{event}The event is an event designator. The braces isolate event from the surrounding text. For example, !{–3}3 is the third most recently executed command followed by a 3.

!! reexecutes the previous event

You can reexecute the previous event by giving a !! command. In the following example, event 45 reexecutes event 44:

44 $ ls -l text
-rw-rw-r--. 1 max pubs 45 04-30 14:53 text
45 $ !!
ls -l text
-rw-rw-r--. 1 max pubs 45 04-30 14:53 text

The !! command works whether or not your prompt displays an event number. As this example shows, when you use the history mechanism to reexecute an event, the shell displays the command it is reexecuting.

!n event number

A number following an exclamation point refers to an event. If that event is in the history list, the shell executes it. Otherwise, the shell displays an error message. A negative number following an exclamation point references an event relative to the current event. For example, the command !–3 refers to the third preceding event. After you issue a command, the relative event number of a given event changes (event –3 becomes event –4). Both of the following commands reexecute event 44:

51 $ !44
ls -l text
-rw-rw-r--. 1 max pubs 45 04-30 14:53 text
52 $ !-8
ls -l text
-rw-rw-r--. 1 max pubs 45 04-30 14:53 text

!string event text

When a string of text follows an exclamation point, the shell searches for and executes the most recent event that began with that string. If you enclose the string within question marks, the shell executes the most recent event that contained that string. The final question mark is optional if a RETURN would immediately follow it.

68 $ history 10
    59 ls -l text*
    60 tail text5
    61 cat text1 text5 > letter
    62 vim letter
    63 cat letter
    64 cat memo
    65 lpr memo
    66 pine zach
    67 ls -l
    68 history
69 $ !l
ls -l
...
70 $ !lpr
lpr memo
71 $ !?letter?
cat letter
...

Open Source Software: The Mega List

$
0
0
http://www.datamation.com/open-source/open-source-software-the-mega-list-1.html


Throughout the year, Datamation publishes guides to open source software in a variety of different categories, such as security, cloud computing, big data, small businesses, mobility and even games. It's become an annual tradition to compile all those open source apps we've featured into one gigantic list.
Our 2012 guide is longer than ever before with a jaw-dropping 1000+ open source apps in all. As usual, we've divided the list into categories and then alphabetized the projects within each category.
Whether you're a long-time Linux fan or a Windows or OS X user who's curious about the open source phenomenon, you're sure to find something new, interesting and useful.

Accounting

1. Edoceo Imperium
Designed for small and medium-sized businesses, this Web-based app offers billing and accounting capabilities, plus basic CRM and job tracking. It integrates with Google Calendars and other Google Apps, and it can import IMAP email. Operating System: OS Independent.
2. FrontAccounting
Another Web-based option, FrontAccounting offers financial management and some ERP functionality. It boasts more than 100,000 downloads, and a helpful demo is available on the site. Operating System: OS Independent.
3. GnuCash
GnuCash combines personal and small business accounting functionality into a single app that's great for consultants, freelancers and other independent professionals. It offers double-entry accounting, investment tracking, financial calculators and import/export with common financial file types. Operating System: OS Independent.
4. LedgerSMB
Another Web-based option for small and medium businesses, LedgerSMB offers financial management features like accounts receivable, accounts payable and general ledger, as well as some ERP functionality, like inventory control, sales tracking, and POS. It aims to greatly reduce the time it takes for small businesses to get up and running with an ERP system. Operating System: Windows, Linux, OS X.
5. osFinancials
With an emphasis on simplicity, osFinancials aims to take the complications out of business accounting software. It can track up to 9999 accounts, 1 million creditors and debtors and 1 million stock items. Note: because it is developed by a team in the Netherlands, a lot of the osFinancials Web site and documentation is in Dutch, but English is also available. Operating System: Windows, Linux.
6.TurboCASH
This free, open source small business accounting package invites potential users to compare its features against those of its commercial competitors. It supports multiple languages, multiple currencies, multiple companies, batch data entry, VAT/tax reports and much more. Operating System: Windows.
7. XIWA
Short for "XIWA is Web accounting," XIWA is now more than a decade old. Key features for this Web-based accounting app include basic payroll functionality, double-entry accounting, stock and investment tracking, and support for multiple users and multiple sets of ledgers. Operating System: Linux.

App Collection

8. OpenDisc
This project combines many of the most popular open source apps for Windows into one package. It includes LibreOffice, Firefox, Celestia, The Gimp, Inkscape, Dia, and many other very good open source progams. Operating System: Windows.

Appliances

9. Turnkey Linux
Turnkey offers a variety of pre-configured appliances, including a NAS appliance. In addition, all Turnkey appliances come with TurnKey Linux Backup and Migration pre-installed. Operating System: Linux.

Anti-Spam

10. ASSP
The self-proclaimed "absolute best SPAM fighting weapon that the world has ever known," ASSP sits on your SMTP servers to stop spam and scan for viruses. Features include browser-based setup, support for most SMTP servers, automatic whitelists, early sender verification, Bayesian filters and more. Operating System: OS Independent.
11. MailScanner
Downloaded more than 1.3 million times by users in 225 countries, MailScanner is a free e-mail security package for mail servers. It incorporates SpamAssassin, ClamAV and a number of other tools to block spam and malware. Operating System: OS Independent.
12. SpamAssassin
"The powerful #1 open-source spam filter," SpamAssassin uses header and text analysis, Bayesian filtering, DNS blocklists, collaborative filtering databases and other techniques to block spam. The project is managed by the Apache Foundation, and it's been incorporated into a number of other open source and commercial products. Operating System: primarily Linux and OS X, although Windows versions are available.
13. SpamBayes
As you might guess from the name, this project offers a group of Bayesian filters for blocking spam. The site includes versions for Outlook, Outlook Express, Windows Live Mail, IncrediMail, Thunderbird, Gmail, Yahoo Mail and others. Operating System: OS Independent.

Anti-Spyware

14. Nixory
Nixory removes and block malicious tracking cookies (aka, spyware) from your system. It supports Mozilla Firefox, Internet Explorer and Google Chrome, and it won't slow your system while you surf. Operating System: OS Independent.

Anti-Virus/Anti-Malware

15. ClamAV
Undoubtedly the most widely used open-source anti-virus solution, ClamAV quickly and effectively blocks Trojans, viruses, and other kinds malware. The site now also offers paid Windows software called "Immunet," which is powered by the same engine. Operating System: Linux.
16. ClamTK
ClamTK makes ClamAV a little bit easier to use by providing a graphical interface for the anti-virus engine. Like the original, this one runs on Linux and scans on demand. Operating System: Linux.
17. ClamWin Free Antivirus
Based on ClamAV, ClamWin protects more than 600,000 PCs from viruses and malware. Note that unlike most commercial anti-virus packages, ClamWin does not offer an on-access real-time scanner; in order to scan incoming files, you'll need to save them and then run a scan manually before opening or running the files. Operating System: Windows.
18. P3Scan
With P3Scan, you can set up a transparent proxy server that provides anti-virus and anti-spam protection. Operating System: Linux.
19. Rootkit Hunter
This no-frills tool scans for rootkits and other malware on Linux system. While it does not provide live or scheduled scanning, the Web site explains how to set up your system to scan daily. Operating System: Linux, Unix.
20. Viralator
Still getting the occasional network virus even after you install anti-virus software? Viralator supplements the existing anti-virus software on your proxy server to block malware that might otherwise slip in when users access free webmail accounts. Operating System: Linux, Unix.

Astronomy

21. Celestia
Like Stellarium, Celestia helps amateur astronomers explore the night sky, but this project goes one step further. It also lets you virtually "fly" throughout the galaxy and see how the stars would look from Mars, Jupiter or any other point in space. Operating System: Windows, Linux, OS X.
22. KStars
KStars also lets you view the night skies, including "up to 100 million stars, 13,000 deep-sky objects, all 8 planets, the sun and moon, and thousands of comets and asteroids." If you're an amateur astronomer, you'll also like KStars' tools that help you plan your nightly viewing. (Note that in order to use KStars on Windows, you'll have to download KDE for Windows.) Operating System: Windows, Linux.
23. PP3
Ideal for educators, PP3 creates detailed star charts for use in PowerPoint presentations or books. Note that in order to use it, you will also need LaTeX. Operating System: Windows, Linux.
24. StarChart
This app's website begins with a simple introduction: "There is a sky. There are things in the sky. This program draws maps of things in the sky." While the on-screen graphics on this app aren't as good as some of the other star-charting software, it does a good job of creating printed star charts for study. Operating System: Linux.
25. Stellarium
Have you always wanted to learn more about astronomy? Stellarium can show you the stars in the night sky as seen from any point on earth at any time—it's the same software used by many planetariums. You can use it to help plan your nightly viewing or just to learn more about the universe. Operating System: Windows, Linux, OS X.

Audio Tools

26. Amarok
Like iTunes, Amarok helps you manage and play your music. It integrates with a large number of Web services, including Last.fm, Ampache, Magnatune, Echo Nest and others, so that you can discover new music, and it offers a unique dynamic playlist feature that allows you to search for and play songs by typing phrases like "tracks from around the year 1982." Operating System: Windows, Linux, OS X.
27. Aqualung
Don't spoil the romantic mood with an awkward pause in between songs. This audio player offers gap-free playback between adjacent tracks, and it plays a wide variety of file formats. Operating System: Windows, Linux, OS X.
28. Ardour
Suitable for use by professionals, Ardour offers highly advanced audio recording, mixing and non-linear editing capabilities. Key features include unlimited tracks, unlimited undo, 32-bit floating point audio path, sample accurate automation, more than 200 plug-ins and much more. Operating System: Linux, OS X.
29. aTunes
Java-based aTunes offers a customizable, intuitive user interface for organizing large music collections and playing most types of audio files. Notable features include a karaoke function, an easy-to-use navigator for finding songs and artists quickly, multiple playlists, filters, Last.fm integration, podcast support and advanced statistics about songs played or never played. Operating System: OS Independent.
30. Audacious
Audacious offers excellent audio playback without consuming too many system resources. Features include a drag-and-drop interface, search capabilities, a graphical equalizer and more. Operating System: Windows, Linux.
31. Audacity
An excellent option for garage bands and other amateur musicians, Audacity offers live recording, file import and export, multi-track and multi-channel recording, intuitive editing, unlimited undo, pitch adjustment, many special effects, analysis tools and much more. The 2.0 version, released earlier this year, offers improved special effects, a new Sync-Lock Tracks feature, a device toolbar, automatic crash recovery, fast "on-demand" import of WAV/AIFF files and more. Operating System: Windows, Linux, OS X.
32. AC3Filter
This audio decoder and processor filter allows media players to play AC3 and DTS audio tracks from movies. It also allows you to mix audio tracks and adjust sound quality. Operating System: Windows.
33. CDex
This very popular CD ripper boasts more than 40 million downloads. It supports numerous encoders, including Lame MP3, Internal MP2, APE lossless audio format, Ogg Vorbis, Windows MP3 (Fraunhofer MP3), NTT VQF, FAAC and Windows WMA8. Operating System: Windows.
34. Cdrtools
First released in 1996, Cdrtools offer Linux users a set of nine different tools for recording CDs, DVDs and BluRay discs. Note that it runs from the command line. Operating System: Linux.
35. CoolPlayer
This "blazing fast" audio player offers a lightweight size, although it does lack some of the more advanced features of some similar apps. Multiple skins and plug-ins are available. Operating System: Windows.
36. DeaDBeeF
The self-proclaimed "Ultimate Music Player For GNU/Linux," DeaDBeeF can play mp3, ogg vorbis, flac, ape, wv, wav, m4a, mpc, tta, CD audio and many other formats. Features include a drag-and-drop interface, support for multiple playlists, 18-band graphical equalizer, album art integration, optional command line controls, gapless playback and more. Operating System: Linux, Unix.
37. DrumTrack
Turn your keyboard into a drum machine. This app lets you build your own rhythm tracks using samples that you can arrange however you like. Operating System: Windows.
38. EasyTAG
EasyTAG allows users to view and edit the tag fields on MP3, MP2, MP4/AAC, FLAC, Ogg Vorbis, MusePack, Monkey's Audio, and WavPack files. It includes a tree-based browser and CDDB support for manual and automatic searches. Operating System: Windows, Linux.
39. Free:ac
Short for "free audio converter," free:ac converts among MP3, MP4/M4A, WMA, Ogg Vorbis, FLAC, AAC, WAV and Bonk formats. It's available in a portable version, and it comes in 37 different languages. Operating System: Windows.
40. Frinika
Frinika's audio editing capabilities aren't quite as advanced as Audacity's, but it adds other features like a soft synthesizer and a notation editor. It aims to be "a complete platform for making music with your computer." Operating System: OS Independent.
41. Hydrogen
Suitable for use by professional musicians and producers, Hydrogen is a powerful drum track creation system with an easy-to-use GUI. The latest version adds features like a sample editor, time stretch and pitch functions, playlists, advanced tab-tempo, director window, timeline with variable tempo, single and stacked pattern mode and more. Operating System: Windows, Linux, OS X.
42. Jajuk
Critically acclaimed Jajuk has been called "a powerful iTunes replacement" and "the most powerful jukebox out there." Designed for those with large or scattered music collections, it's extremely fast and intuitive and offers helpful functions like the digital DJ rules-based playlist, advanced rating system, smart shuffle, quick copy and more. Operating System: OS Independent.
43. Jukes
First released in 1998 as "Put Up Your Jukes," this older audio player was "created for the serious music lover." It offers an easy-to-use interface that works well with large music libraries. Operating System: Windows, Linux, OS X.
44. Juice
Juice makes it easy to capture and listen to podcasts, any time, anywhere. It includes a directory of thousands of online podcasts, so it’s also easy to find the one you want. Operating System: Windows, Linux, OS X.
45. KMid
This KDE app plays both Midi and karaoke files, making it easy for you to serenade your sweetheart. It includes a piano player interface and also accepts input from external keyboards. Operating System: Windows.
46. LAME
Although LAME stands for "Lame Ain’t No MP3 Encoder," the first line on its Web site states, "LAME is an MPEG Audio Layer III (MP3) encoder." It was intended as an educational tool for those interested in improving the speed and quality of MP3 files. Operating System: Windows, Linux, OS X.
47. MMConvert
MMConvert aims to convert both audio and video files among various popular formats. However, it has a spotty reputation and is better at some conversions than others Operating System: Windows.
48. Linux MultiMedia Studio
Specifically designed as an alternative to FL Studio, LMMS includes a song editor, beat and bassline editor, piano roll, FX mixer, and more. The site includes many sample songs created with LMMS. (Also, note that while it says "Linux" in the name, it also supports Windows.) Operating System: Windows, Linux.
49. Mp3dj
Another audio-only tool, mp3dj allows users to search, browse or play their MP3 collections remotely via a Web browser. The interface is basic, but easy to use. Operating System: Windows, Linux, OS X.
50. Mixere
Optimized for live performances, Mixere has a simple, spreadsheet-like interface. It offers unlimited file size, an unlimited number of tracks, unlimited undo, auto-triggering, fully automated sliders and more. Operating System: Windows.
51. Mixxx
Mixxx claims to offer "everything you need to start making DJ mixes in a tight, integrated package." Key features include iTunes integration, BPM detection and sync, support for more than 30 MIDI controllers and a cutting-edge mixing engine. Operating System: Windows, Linux, OS X.
52. MOC
Simply select a directory, and the MOC (Music On Console) audio player will play all files in that directory. Supported file formats include MP3, Ogg Vorbis, FLAC, Musepack, Speex, WAVE, AIFF, and AU. Operating System: Linux/Unix, OS X.
53. Moosic
For those who prefer the command line to a GUI, Moosic is a very simple client-server audio player. It supports MP3, Ogg, MIDI, MOD and WAV files by default, or you can configure it to play other file types. Operating System: Linux/Unix.
54. MP3Gain
Tired of constantly adjusting the volume when playing MP3s? MP3Gain uses statistical analysis to gauge how loud songs sound in the human ear, and then modifies the volume appropriately without degrading the quality of playback. Operating System: OS Independent.
55. Mp3splt
Mp3splt is an audio utility that does just one thing—it lets you cut mp3 and ogg files into smaller files and rename them. It’s especially useful if you need to split an entire album into individual tracks. Operating System: Windows, Linux, OS X.
56. MuseScore
MuseScore offers a WYSIWYG music notation editor, integrated sequencer and a software synthesizer. You can hook it up to your MIDI keyboard, and it also imports and exports MusicXML and Midi files. Operating System: Linux, OS X.
57. Radio Downloader
If your favorite online radio station only offers streaming content, you can turn it into a podcast you can listen to any time with Radio Downloader. It comes with built-in support for BBC content and a helpful "favourites" tab. Operating System: Windows.
58. Rhythmbox
This Linux audio player for the Gnome desktop offers excellent media management capabilities inspired by iTunes. It plays most audio formats, transfers music to and from other devices, plays Internet radio, displays album art and lyrics, and more. Operating System: Linux.
59. Songbird
Because it also comes in an Android version, this iTunes replacement lets you sync your music collection between your desktop and your smartphone or tablet. It boasts an attractive interface, integrated artist info and the ability to purchase tracks or concert tickets right from the app. Operating System: Windows, Linux, OS X, Android.
60. SoX
Described as the "Swiss Army knife of sound processing programs," SoX can convert among various file formats, add special effects, play files and record sounds. It's a command line tool, but it works on Windows and OS X as well as Linux. Operating System: Windows, Linux, OS X.
61. StreamRipper
StreamRipper allows you to record and save Shoutcast streams and other Internet audio. Its key feature is the ability to find silences and mark them as possible points of track separation. Operating System: Windows, Linux/Unix.
62. TuxGuitar
If you plan to wow your sweetheart with an original guitar composition, this app can help you create tab notation and even playback your song (just in case you're too nervous to play it yourself). It also includes a score editor, multi-track display, and more. Operating System: Windows, Linux, OS X.
63. Zinf
Like CoolPlayer, Zinf offers a basic feature set for playing audio files on Windows systems. It plays audio CDs, MP3, Ogg/Vorbis, WAV and streaming formats. Operating System: Windows, Linux.

Backup

64. Amanda
Amanda calls itself the "most popular open source backup and recovery software in the world" and boasts more than 500,000 users. In addition to the free open source version, it's also available in a supported enterprise version or as a hosted cloud-based service through Zmanda. Operating System: Windows, Linux, OS X.
65. Areca Backup
Best for home users, Areca Backup offers a simple but flexible interface for backing up a single PC or a network. It offers encryption, compression, Delta backup capabilities, as of date recovery and more. Operating System: Windows, Linux.
66. Backit Down
This app synchronizes files and folders so that you can backup or copy your drives. It works across networks or with external hard drives or USB drives. Operating System: Windows, Linux.
67. Bacula
Boasting that it is "by far the most popular open source backup program," Bacula offers backup, recovery and data verification tools for use with networks. Commercial support, training and services are available through Bacula Systems. Operating System: Windows, Linux, OS X.
68. Clonezilla
Clonezilla's developers specifically designed it as a replacement for Norton Ghost. This bare metal backup and recovery program comes in two free versions: Clonezilla Live for backing up or cloning a single PC and Clonezilla Server for backing up networks or cloning multiple PCs at once. Operating System: Linux.
69. Create Synchronicity
This solution's claim to fame is its extremely lightweight size. A good option for standalone systems, it's customizable and easy to use. Operating System: Windows.
70. FOG
Popular with schools and small businesses, FOG resides on a Linux-based server and provides cloning functionality for Windows-based networked PCs. It offers an easy-to-use Web interface, and it includes features like virus scanning, testing, disk wiping and file recovery,. Operating System: Linux, Windows.
71. Partimage
In addition to supporting network backup and recovery, partimage is also useful for installing many identical computer images at once. It offers very fast saves and restores. Operating System: Linux.
72. Redo
Calling itself the "easiest, most complete disaster recovery solution available," Redo offers backup, restore and bare-metal recovery capabilities. Even in the most severe emergencies where you must completely replace a drive, Redo claims it can get you back up and running with all of your programs and files in just 10 minutes. Operating System: Linux.

Big Data Tools

73. Avro
Apache Avro is a data serialization system based on JSON-defined schemas. APIs are available for Java, C, C++ and C#. Operating System: OS Independent.
74. Chukwa
Built on top of HDFS and MapReduce, Chukwa collects data from large distributed systems. It also includes tools for displaying and analyzing the data it collects. Operating System: Linux, OS X.
75. Flume
Another Apache project, Flume collects, aggregates and transfers log data from applications to HDFS. It's Java-based, robust and fault-tolerant. Operating System: Windows, Linux, OS X.
76. GridGain
This alternative Hadoop MapReduce is a Java-based, open source platform for processing big data in real time. It comes in community, enterprise and OEM versions, but the "CloudBoot" feature is only available in the paid versions. Operating System: Windows, Linux, OS X.
77. Hadoop
Apache's Hadoop project offers distributed processing of extremely large data sets and is popular with organizations that operate cloud environments. Well-known users include Yahoo, Amazon, eBay, AOL, Facebook, Google, Hulu, Spotify and many others. Operating System: Windows, Linux, OS X.
78. HPCC
Developed by LexisNexis Risk Solutions, HPCC is short for "high performance computing cluster." It claims to offer superior performance to Hadoop. Both free community versions and paid enterprise versions are available. Operating System: Linux.
79. Lucene
The self-proclaimed "de facto standard for search libraries," Lucene offers very fast indexing and searching for very large datasets. In fact, it can index over 95GB/hour when using modern hardware. Operating System: OS Independent.
80. MapReduce
Originally developed by Google, the MapReduce website describe it as "a programming model and software framework for writing applications that rapidly process vast amounts of data in parallel on large clusters of compute nodes." It's used by Hadoop, as well as many other data processing applications. Operating System: OS Independent.
81. Oozie
This Apache project is designed to coordinate the scheduling of Hadoop jobs. It can trigger jobs at a scheduled time or based on data availability. Operating System: Linux, OS X.
82. Solr
Solr is an enterprise search platform based on the Lucene tools. It powers the search capabilities for many large sites, including Netflix, AOL, CNET and Zappos. Operating System: OS Independent.
83. Sqoop
Sqoop transfers data between Hadoop and RDBMSes and data warehouses. As of March of this year, it is now a top-level Apache project. Operating System: OS Independent.
84. Storm
Now owned by Twitter, Storm offers distributed real-time computation capabilities and is often described as the "Hadoop of realtime." It's highly scalable, robust, fault-tolerant and works with nearly all programming languages. Operating System: Linux.
85. Terracotta
Terracotta's "Big Memory" technology allows enterprise applications to store and manage big data in server memory, dramatically speeding performance. The company offers both open source and commercial versions of its Terracotta platform, BigMemory, Ehcache and Quartz software. Operating System: OS Independent.
86. Zookeeper
Formerly a Hadoop sub-project, Zookeeper is "a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services." APIs are available for Java and C, with Python, Perl, and REST interfaces planned. Operating System: Linux, Windows (development only), OS X (development only).

Billing

87. Argentum
Top features of this Web-based invoicing solution include client management, invoice generation and tracking, time tracking and management, and support for multiple languages and currencies. The company also offers paid support or a hosted solution in addition to the open source software. Operating System: OS Independent.
88. jBilling
The self-described "leader in open source billing and rating software," jBilling offers an invoicing platform for telecoms and companies that offer subscription-based services. It comes in either a community or an enterprise version, and the company also offers consulting, support and training services. Operating System: OS Independent.
89. SimpleInvoices
This Web-based app makes it easy to create PDF invoices for your small business and track them. You can install it on your own server and PC or use one of the third-party hosting providers listed on the site. Operating System: OS Independent.
90. Siwapp
Designed for simplicity, Siwapp also offers a Web interface for generating PDF invoices. The site offers a helpful demo so you can see it in action. Operating System: OS Independent.

Blogging

91. B2evolution
This blog platform/content management system can support multiple blogs, multiple domains and multiple authors. It's extensible with skins and plug-ins, and the site offers a demo and links to sample sites. Operating System: OS Independent.
92. LifeType
With built-in multi-user authentication and multi-blog support, LifeType offers a blogging platform suitable for large enterprises. Key features include anti-spam filter, mobility support, integrated media management, easy installation and more. Operating System: OS Independent.
93. MovableType
Used by companies like NBC, NPR, Wells Fargo, Oracle and others, MovableType is a blogging platform that can operate as a full-fledged content management system. In addition to the open source version, it also comes in a free pro version for educational institutions or businesses with up to five users, as well as paid pro and enterprise versions for larger organizations. Operating System: OS Independent.
94. Nucleus CMS
It bills itself as a Content Management System, but in reality Nucleus is primarily a tool for setting up a blog and hosting it on your own server. Features include a built-in commenting tool, URLs optimized for readers, and multi-lingual support. Operating System: OS Independent.
95. WordPress
Used by more than 60 million bloggers, WordPress is one of the best known blogging applications available. You can download the software for free and host it on your own Web server or you can use the hosted service available through WordPress.com. Operating System: OS Independent.

Browsers

96. Chromium
The open source version of Google Chrome, Chromium tends to be faster and more secure than competing browsers. Key security features include sandboxing, automatic updates, SafeBrowsing and more. Operating System: Windows, Linux, OS X.
97. Dooble
Dooble's developers have created this newer browser with an eye on safety and ease of use. Unlike most other browsers, it automatically encrypts all traffic for greater privacy and security. Operating System: Windows, Linux, OS X.
98. Firefox
Available in both mobile and desktop versions, Firefox offers better speed, personalization and security than Microsoft's browser. Key features include the "Awesome Bar" for easier Web searches, tabbed browsing, one-touch bookmarking and more. Operating System: Windows, Linux, OS X, Android.
99. K-Meleon
Because both use Mozilla's Gecko layout engine, K-Meleon and Firefox look and feel a lot alike. However, K-Meleon also lets you import your IE Favorites and Opera Hotlist, and it also supports mouse gestures like Opera. Operating System: Windows.
100. Qt Web Browser
Based on Nokia's Qt framework and Apple's WebKit rendering engine, this browser was designed to be lightweight, secure and portable. It's just 6MB, and it offers a highly customizable interface and a long list of privacy-protection features. Operating System: Linux, OS X.
101. Tor
Tor protects your identity by providing anonymity while you browse the Web. It's used by journalists, activists, whistle-blowers and others concerned that someone might be snooping on their online activities. Operating System: Windows, Linux, OS X.


Bugtrackers

102. BugTracker.NET
Boasting thousands of users, BugTracker.NET is easy to use and highly configurable. It supports Subversion, Git, and Mercurial, and the website includes a helpful demo and a link to comparisons of various bug tracking systems. Operating System: Windows.
103. Bugzilla
Used by thousands of organizations, including Mozilla, Facebook, the Linux kernel, the Apache Project, The New York Times, Yahoo and NASA, Bugzilla makes it easy for software development teams to track issues and code changes. It's Web-based and offers advanced search capabilities, e-mail notifications, reporting, excellent security, custom fields and workflow, and more. Operating System: Windows, Linux, OS X.
104. FlySpray
FlySpray describes itself as "an uncomplicated, Web-based bug tracking system written in PHP for assisting with software development." It supports multiple databases, including MySQL and PGSQL, and it's easy to use. Operating System: OS Independent.
105. GNATS
The GNU project's bug tracking system stores issue and resolution information in a central searchable database and communicates with users via a variety of mechanisms.
106. MantisBT
This Web-based bug tracker integrates with most SQL databases and can be accessed with any browser. It's easy to install and has an enormous list of features. Operating System: Windows, Linux, OS X.

Business Intelligence (BI)

107. BIRT/Actuate
Short for "Business Intelligence and Reporting Tools," BIRT is an Eclipse-based tool that adds reporting features to Java applications. Actuate is a company that co-founded BIRT and offers a variety of software based on the open source technology. Operating System: OS Independent.
108. ERP BI
Designed for enterprises that use open source ERP systems including PostBooks and XTuple ERP, this project offers business intelligence tools that extend the capabilities of those ERP solutions. It's based on the community edition of Pentaho. Operating System: Windows, Linux, OS X.
109. Jaspersoft
"The world's most widely used business intelligence software," Jaspersoft has an award-wining cloud solution with more than 100 customers. The company also offers BI solutions tailored for SaaS and PaaS providers. Operating System: OS Independent.
110. JedoxPalo BI
Palo offers offers an open source suite that combines OLAP Server, Palo Web, Palo ETL Server and Palo for Excel, or you can download the apps separately. Jedox offers a paid version that adds more capabilities to the core Palo product. See the comparison chart for details. Operating System: OS Independent.
111. JMagallanes
Java-based JMagallanes can create static reports, Swing pivot tables for OLAP analysis, and charts. It accepts data from SQL, Excel, XML and many other formats. Operating System: OS Independent.
112. KNIME
The Konstanz Information Miner, or KNIME, offers user-friendly data integration, processing, analysis, and exploration. In 2010, Gartner named KNIME a "Cool Vendor" in analytics, business intelligence, and performance management. In addition to the open source desktop version, several commercial versions are also available. Operating System: Windows, Linux, OS X.
113. OpenI
This business intelligence platform boasts that it can take you from "data to insights in 72 hours with open source." OpenI solutions can be deployed on premises or on Amazon Web Services' cloud. Operating System: OS Independent.
114. OpenReports
Web-based OpenReports supports a wide variety of reporting engines, SQL-based reports, multiple parameters and flexible scheduling. The paid professional version adds a reporting dashboard, alerts, conditional report scheduling and report statistics. Operating System: OS Independent.
115. Pentaho
Pentaho combines data integration and business analytics tools in a single platform. In addition to the open source version, the company offers basic, professional and enterprise versions that offer additional functionality for an annual subscription. Operating System: Windows, Linux, OS X.
116. SpagoBI
SpagoBI claims to be "the only entirely open source business intelligence suite." Commercial support, training and services are available. Operating System: OS Independent.

Business Process Management/Business Performance Management (BPM)

117. Activiti
This newer project offers a lightweight, Java-based business process management platform. It aims to meet the needs of both business people and software developers. Operating System: OS Independent.
118. Bonita Open Solution
Users of this BPM solution include Directv, Trane, the governments of France and the Canary Islands, and Konica Minolta. In addition to the open source version, it comes in teamwork, efficiency and performance subscription packs. Operating System: OS Independent.
119. Intalio BPMS
The "world's most widely deployed Business Process Management System," Intalio BPMS comes in community and enterprise editions. The same company also offers IntalioBPM, a cloud-based version based on the same underlying technology. Operating System: Windows, Linux.
120. ProcessMaker
Used by organization like Toyota, Lenovo, Lehman College, ADL and others, ProcessMaker is a Web-based BPM solution that makes it easy to map out workflows. In addition to the open source version, it comes in three cloud-based paid versions. Operating System: Windows, Linux.
121. uEngine
The uEngine BPM suite includes three separate components: BPM Foundation with a process engine and modeling tool; the process portal with personalization, single sign-on, and dashboard capabilities; and the BP Analyzer with OLAP analyzing and charting abilities. It supports multiple languages, including English, but because it is developed by a Korean company, parts of the Web site and interface sound strange to native English speakers. Operating System: OS Independent.

Business Suites

122. ADempiere
This community-run ERP project integrates well with Drupal and other open source projects to create a complete suite of business software. A wealth of documentation is available on the site, and the group also holds regular international conferences and training events. Operating System: Windows, Linux, OS X.
123. allocPSA
This Web-based tool for professional services organizations allows users to track projects, people, time sheets, invoicing and clients. In addition to the SaaS version available through the link above, it also comes in a community download with commercial support available. Operating System: OS Independent.
124. Compiere
Compiere claims to be "the leading Cloud-based, open-source ERP software and customer relationship management (CRM) system." In addition to the free community version, it also comes in an enterprise version, and you can run it in Amazon's cloud. Operating System: Windows, Linux.
125. Dolibarr ERP/CRM
Like NetSuite and Sage, Dolibarr ERP/CRM meets the needs of SMBs, foundations and freelancers. The website offers screenshots and an online demo so that you can see how it works. The basic software is free, but additional modules and add-ons are available through the Dolistore. Operating System: OS Independent.
126. Phreedom
The Phreedom ERP suite builds on the capabilities of the PhreeBooks financial management software. The software is completely free, but paid support is available. Operating System: OS Independent.
127. GNU Enterprise
GNU Enterprise contains a host of developer and ERP tools, including human resources, accounting, CRM, project management, supply chain management, and e-commerce features. Its modular design and open architecture make it easy to customize and easy to maintain. Operating System: Windows, Linux, OS X.
128. JAllInOne ERP/CRM
Despite its name, JAllInOne is primarily an ERP solution with some basic CRM functions. It provides all the standard ERP functionality and supports multiple users, multiple languages, and multiple companies. Operating System: OS Independent.
129. JFire
JFire describes is both a full-featured Java-based ERP suite and a platform for building customized business applications. The ERP suite includes BIRT integration for BI and reporting. Support and services are available through third parties or through project owner NightLabs. Operating System: OS Independent.
130. Ohioedge
Ohioedge combines CRM and BPM features in a Java-based app. The site is light on documentation, but does include a helpful test drive that lets you see how the software can be used. Operating System: OS Independent.
131. opentaps
Used by Toyota, Honeywell and other well-known companies, Opentaps considers itself "the most advanced open source ERP + CRM solution." In addition to the free open source software, the company offers a supported professional version and several cloud-based versions available for deployment on Amazon EC2. Operating System: Windows, Linux.
132. Plazma ERP + CRM
This multi-function suite for SMBs offers a lot of CRM capabilities, along with a few ERP functions. The interface is bare-bones but easy to use, and while it comes with quite a bit of documentation, no paid support is available. Operating System: Windows, Linux, OS X.
133. TNT Concept
Best for small to medium-sized enterprises or independent professionals, this software describes itself as a "tool for Management of Operational Effectiveness." It's not a substitute for accounting software, but a complementary piece of software that eliminates the need for the multiple spreadsheets that many small business owners and managers use to run their companies. It's also available on an SaaS basis. Operating System: OS Independent.

CAD

134. Archimedes
This Java-based CAD program for architects offers a simple interface and an extensible architecture. It's not as full-featured as some other CAD programs, but adequate for basic tasks. Operating System: Windows, Linux, OS X.
135. BRL-CAD
Now well over 20 years old, this solid modeling tool counts the U.S. military among its users. It includes more than 400 separate tools, utilities and applications for interactive 3D solid geometry editing, geometric analysis, image and signal processing, path-tracing and photon mapping, benchmarks and more. Operating System: Windows, Linux, OS X, others
136. FreeCAD
Aimed at mechanical engineers, product designers, architects and other types of engineers, Free-CAD offers 3D design capabilities and a 2D sketcher, and it can import and export most types of CAD files. In the future, the project hopes to add drawing sheets, robot simulations, rendering mode and an architecture module. Operating System: Windows, Linux, OS X, others

Charts

137. Chartdroid
Chartdroid offers developers a native chart engine for Android. It creates bar, donut, line, pie and scatter charts and graphs. Operating System: Android.
138. GraphViz
Another alternative for creating network diagrams, GraphViz lets you use simple text or GXL (a variant of XML) to describe charts, and then it does the drawing work for you. See the Gallery for examples of the types of graphics it can create. Operating System: Windows, Linux, OS X.
139. HighCharts
Although the project is only a few years old, this JavaScript-based charting library counts IBM, NASA, Siemens, HP, EMC, CBS, Hitachi, Ericsson, BMW, Nissan, Sony and MasterCard among its customers. It's available with an open source license for non-commercial use or a fee-based license for commercial use. Operating System: OS Independent.

Chemistry

140. Avogadro
Designed for advanced students, researchers and professional chemists, Avogadro describes itself as "advanced molecule editor and visualizer designed for cross-platform use in computational chemistry, molecular modeling, bioinformatics, materials science, and related areas." Operating System: Windows, Linux.
141. Jmol
This java-based app lets students create diagrams of atoms, molecules, macromolecules, crystals, and more. The site includes a handbook and tutorials for helping you learn how to use the software. Operating System: OS Independent.
142. Kalzium
Another KDE app, Kalzium makes it easy to explore the periodic table. It also includes a molecular weight calculator, an isotopetable, a 3D molecule editor and an equation solver for stoichiometric problems. (Note that in order to use Kalzium on Windows, you'll have to download KDE for Windows.) Operating System: Windows, Linux.
143. ProtoMol
ProtoMol is a framework for molecular dynamics simulation. It's designed to be highly flexible, easily extensible, and to meet high performance demands. Operating System: Linux, Unix, Windows.

Chocolate

144. Chocolate Invader
The folks at this website aren't offering an application—they're selling chocolate molded in the shape of a space invader, they plan to "open source" their design and recipe. They already offer quite a bit of information about their production process online, so you can try your own hand at creating a Chocolate Invader if you don't want to order their "best tasting chocolate in the universe." Operating System: N/A

Classroom Management

145. iTALC
Intelligent Teaching and Learning with Computers, aka iTALC, gives teachers the tools they need to manage a computer-based classroom without the high license fees of commercial software. Key features include remote control, demo viewing, overview mode, workstation locking and VPN access for off-site students. Operating System: Windows, Linux.
146. Mando
Mando lets you create an interactive whiteboard. If you have your computer connected to a camera and a projector, you can use your laser pointer to control the computer in front of the class, just as you would use a mouse at your desk. Operating System: Linux.

Cloud Infrastructure

147. AppScale
AppScale offers an open source version of the Google App Engine. It supports Python, Java, and Go, and you can run it on Amazon EC2. Operating System: Linux.
148. Cloud Foundry
Sponsored by VMware, Cloud Foundry is both an open source project and a PaaS based on that open source software. It offers support for multiple languages and multiple frameworks. Operating System: Linux.
149. CloudStack
Like OpenStack, CloudStack provides the underlying infrastructure and management tools for enterprises or service providers to build a cloud computing environment. Key features include support for multiple hypervisors, massive scalability, an easy-to-use Web interface and a RESTful API. Operating System: OS Independent.
150. Eucalyptus
"The world's most widely deployed IaaS cloud platform," Eucalyptus enables users to build their own IaaS environment without adding new hardware or retooling their current infrastructure. It's also compatible with the Amazon Web Services API, enabling the creation of hybrid clouds. Operating System: Linux.
151. eyeOS
Downloaded more than one million times, eyeOS calls itself "the world’s #1 Cloud Desktop." In addition to the open source version, it is also now available in a paid professional edition. Operating System: Linux.
152. FOSS-Cloud
This newer tool supports both public and private cloud creation and both desktop and server virtualization. It claims to be able to save users 20 percent compared to commercial virtualization solutions. Operating System: Windows, Linux.
153. OpenNebula
Downloaded more than 5,000 times per month, OpenNebula claims to be the "most powerful open solution to enable private and hybrid clouds." It offers flexible tools to manage virtualized data centers. Operating System: Linux.
154. OpenShift
Built on Red Hat's open source software, OpenShift allows developers to write and deploy their applications in just minutes. It supports Java, Ruby, Node.js, Python, PHP and Perl, and because it's built with open technology, there's no vendor lock-in. Operating System: Linux.
155. OpenStack
OpenStack provides the technologies necessary to build both private and public clouds, with a goal of standardizing cloud computing infrastructure. Founded by Nasa and Rackspace, it now counts numerous major technology companies among its backers.
156. ownCloud
This project aims to help individuals or businesses build their own clouds for storing their files, music, pictures and calendar information. You can host it on your own server or use one of the service providers mentioned on the site who offer free hosting. Operating System: Windows, Linux.
157. Quantum
This OpenStack project aims to enable network-connectivity-as-a-service for clouds built on the OpenStack platform. Operating System: Linux.
158. Scalr
This cloud management software boasts more than 6,000 users, and it supports Amazon Web Services, Rackspace, Nimbula, Eucalyptus and CloudStack. In addition to the open source version, it comes in an enterprise version and multiple hosted versions ranging from the "Seed" version for up to five servers to the "World Domination" version for more than 80 servers. Operating System: Linux.

Collaboration/Groupware

159. Collabtive
This Basecamp replacement tracks projects, milestones and tasks for small groups, and it even imports data from Basecamp. You can host it yourself or purchase hosting from Collabtive. Operating System: OS Independent.
160.cyn.in
Cyn.in combines wikis, social networks, blogs, file sharing repositories, micro blogs, discussion boards and other communication applications into a unified enterprise collaboration solution. You can choose the free open source version, the SaaS version or the paid on-premise appliance. Operating System: Windows, Linux, OS X.
161. EGroupware
This self-proclaimed "the leading Online Collaboration Tool" combines e-mail, shared calendar, project management, content management and other collaboration capabilities into a single package. In addition to the community version, it also comes in supported on-premise and cloud-based versions. Operating System: OS Independent.
162. Feng Office
Created with professional services organizations in mind, Feng Office now boasts more than 350,000 users. It comes in a "Feng Sky" version that runs in the cloud, as well as free community and commercially supported on-premise versions. Operating System: Windows, Linux, OS X.
163. Group-Office
Like Outlook, Group-Office features shared calendar and e-mail capabilities. In addition, it includes some basic project management, file sharing and CRM features. You can deploy server version on your own hardware (with or without paid support), or you can buy the SaaS version. Operating System: OS Independent.
164. IGSuite
The Integrated Groupware Suite, or IGSuite, is another Web-based open source groupware system. In addition to calendaring, e-mail, etc., it also incorporates some basic CRM, ERP and CMS functionality. Operating System: Windows, Linux, Unix.
165. K-9
Based on the original Android email client, K-9 is designed to "make it easy to chew through large volumes of email." Key features include push IMAP support, attachment saving, BCC to self, signatures, message flagging, multiple identities and more. Operating System: Android.
166. Ofuz
Best for teams, freelancers, and service providers, Ofuz tracks contacts, organizes leads, manages projects, tracks your time, creates invoices, sends e-mail and more. While it's technically still a beta, both the open source download and the SaaS online version are both useable. Operating System: OS Independent.
167. Open Atrium
Open Atrium describes itself as "a team collaboration tool with a kick of open source hotness." It includes blog, calendar, sharebox, notebook, case tracker and dashboard capabilities. Operating System: OS Independent.
168. phpGroupWare
This project includes more than 50 separate groupware apps that you can mix and match to suit your needs. Key features include e-mail, contact management, shared calendar, content management, project management, a bug tracker and more. Operating System: Windows, Linux.
169. Simple Groupware
This enterprise groupware app can sync with Outlook, and it offers dozens of Web-based modules. Organizations can extend its capabilities buy building their own add-ons with the sgsML language. Operating System: Windows, Linux.
170. TeamLab
This app for small businesses combines social networking features with project and document management. In addition to the open source version that you can host yourself, the company also offers it as an SaaS or through Amazon EC2. Operating System: OS Independent.
171. TUTOS
Short for "The Ultimate Team Organization Software," includes group calendar, email, time tracking, document management and project management. In addition, it also offers special features for developers, like a bug tracker, test support and some Scrum tools . Operating System: Linux.
172. Zarafa
The self-proclaimed "best open source email and collaboration software," Zarafa is an alternative to Microsoft Exchange that can sync with mobile devices. In addition, it has a mobile device management plug-in that includes remote wipe capabilities. Paid support and hosted versions are also available. Operating System: Linux.

Compression

173. 7-zip
Compressing files before you store them can help minimize the amount of storage capacity you need. 7-zip supports ZIP files and several popular compression formats, including 7Z files, which offer 30-70 percent greater compression than ZIP files. Operating System: Windows, Linux, OS X.
174. Caesium
This helpful app compresses images up to 90 percent, making it easier to e-mail them or upload them to your favorite Web site. It supports most common image formats, including JPG, PNG, GIF, BMP, and WMF. Operating System: Windows.
175. KGB Archiver
KGC Archiver claims to offer an "unbelievable high compression rate" that's even better than 7Z. It also offers AES-256 encryption. Operating System: Windows.
176. PeaZip
While WinZip creates just one type of files, PeaZip can write to 12 different archive formats and read more than 130 different kinds of compressed files. It also supports self-extracting archives, strong encryption, two-factor authentication, secure deletion and other capabilities. Operating System: Windows, Linux, OS X.

Content Management and Wikis

177. AIOCP
The All In One Control Panel (a.k.a. AIOCP) combines content management with e-commerce management and a development platform for creating Web apps. Support and services can be purchased from project owner Tecnick.com.Operating System: Windows, Linux, OS X.
178. Alfresco
Used by companies like Toyota, Fox, Land's End, Marriott, Merck and many others, this multi-function solution combines document management, records management, Web content management with a number of other enterprise collaboration features. The core software is available for free, but paid support, training, consulting and a cloud-based version are available. Operating System: Windows, Linux, OS X.
179. Archon
Winner of several awards, Archon simplifies the process of creating a searchable Web site to house archival materials. Administrators can input or edit information via Web forms, and the software automatically uploads and publishes the data. It's currently being used by more than 40 universities, zoos, historical societies, and other institutions. Operating System: OS Independent.
180. Armstrong
First released in 2011, Armstrong is a content management system specifically designed to meet the needs of news organizations. It was developed by The Bay Citizen and the Texas Tribune. Operating System: OS Independent.
181. BIGACE
While BIGACE is used by many smaller organizations, it's multi-site, multi-language, and multi-user capabilities make it a possibility for larger enterprises looking for a Web CMS. Key features include a WYSIWIG editor, templates and stylesheets, and permission management. Operating System: Windows, Linux, Unix.
182. Bitweaver
Bitweaver's claim to fame is a modular design that lets you pick and choose which features you need. Those features include articles, wikis, image galleries, calendar, user management, and more. Operating System: OS Independent.
183. Daisy CMS
Java-based Daisy can be used for Web sites, intranets, product documentation, knowledge bases, and more. It includes both a document repository and a wiki. Operating System: OS Independent.
184. Devproof Portal
Devproof includes modules for blogging, articles, downloads, and more that make it easy to set up your own portal. It's easy to use, but not as popular as some of the other content management systems. Operating System: OS Independent.
185. DotNetNuke
The "#1 open source Web content platform for business," DotNetNuke currently runs more than 700,000 sites and boasts more than 7 million downloads. You can download the free community version or purchases the professional or enterprise version, and the site also has a large store with add-ons, themes and other tools to help speed the development of your website. Operating System: Windows.
186. Drupal
With more than 630,000 users and developers in its communityDrupal is a tremendously popular Web content management. It's users include publishers like the New York Observer and Popular Science, universities like Harvard and MIT, and well-known brand names like MTV and AOL. Operating System: OS Independent.
187. Family Connections
If you love scrapbooking, you might also love setting up a family Web site. This app makes it easy to create a private site for sharing photos, calendars, recipes and keeping in touch with family members. Operating System: OS Independent.
188. Fedora Commons
Fedora Commons allows you to manage, preserve, and link different types of digital content. For example, you can use it to create an archive of video, audio, and text files on a particular topic which users can then search or comment on. Operating System: OS Independent.
189. Get Simple
With an intuitive user interface, five-minute setup and no need for a separate database, Get Simple is one of the easiest content management systems for non-technical small business owners to use. It's been downloaded more than a million times and has a very active support forum and excellent documentation. Operating System: Linux.
190. Joomla
Approximately 2.7 percent of all websites use this very popular open source Web content management system. Version 1.7 offers easier installation, one-click version updating, automatic form data validation, batch processing and more. Operating System: OS Independent.
191. Liferay
Named a "leader" in Gartner's Magic Quadrant for Horizontal Portals, LifeRay provides the platform for nearly half a million websites and enterprise portals, including some for Cisco, T-Mobile, Barclays, AutoZone and even Sesame Street. It has both community and enterprise editions, and Liferay also sells support, training and consultation services. Operating System: OS Independent.
192. Magnolia
This open source content management system has recently released version 4.5, which offers instant mobile websites and multi-channel publishing. It's used by thousands of organizations, including the U.S. Navy and Texas State University. Magnolia sells both standard and pro enterprise versions of its software, with multiple levels of support available. Operating System: Windows, Linux.
193. MindTouch
MindTouch enables the creation of social help websites, and it's used by customers like PayPal, Mozilla and Intuit. The Core software is open source, or you can purchase MindTouch on an SaaS basis. Operating System: Windows, Linux.
194. Owl Intranet Knowledgebase
Owl lets you create a knowledgebase or FAQ site. It's available in both a regular version and an "ultralite" version that does not use a database. Operating System: Windows, Linux.
195. Plone
One of the most popular open source projects of any kind, Plone is another widely used content management system. It has a reputation for excellent security features and can be used to create mobile Websites. Operating System: Windows, Linux, OS X.
196. Pimcore
Winner of a 2010 Most Promising Open Source Award, Pimcore offers Web content management, product information management, asset management and rapid application development. It's based on the Zend framework and ExtJS. Operating System: Linux, Unix.
197. TomatoCMS
Tomato takes a widgets-based approach to website design, which makes page layout very easy. Like Pimcore, it's also built on top of Zend. Operating System: Linux.
198. TYPO3
Downloaded more than 4 million times, the TYPO3 content management system combines a rich feature set with usability. Key features include multimedia support, detailed user permissions, and scalability. Operating System: Windows, Linux, Unix.
199. WebGUI
This CMS offers a framework for creating your own Web apps, as well as a full suite of modules, including wikis, photo galleries, message boards, event management, ecommerce, surveys, donations and more. Operating System: Windows, Linux/Unix, OS X.
200. Wolf CMS
This newer CMS prides itself on being lightweight, fast and easy to use. However, note that it is easiest to use if you have some PHP coding skills. Operating System: Windows, Linux.
201. XOOPS
XOOPS (an acronym for "eXtensible Object Oriented Portal System) is a modular, database-driven Web content management system with a large user base and a large number of awards to its credit. It also offers excellent personalization capabilities, a skinnable interface, versatile group permissions and supports multiple languages. Operating System: OS Independent.

Customer Relationship Management (CRM)

202. CitrusDB
Citrus is a customer care and billing solution aimed at subscription-based products such as Internet service, telecommunications, and consulting. It tracks customer information, service records, custom billing cycles, and support tickets. Operating System: OS Independent.
203. CiviCRM
Similar to Orange Leap, CiviCRM was particularly designed for advocacy groups, NGOs and non-profit organizations with similar needs. It includes modules for case management, fundraising, event management, membership management, e-mail communications and marketing, and it integrates with both Drupal and Joomla. Operating System: OS Independent.


204. ConcourseSuite
Java-based ConcourseSuite offers a 360° view of your customers, incorporating sales, marketing and customer service perspectives. Unlike most CRM apps, the cloud version is priced on storage and bandwidth, not per user. Operating System: Windows, Linux, OS X.
205. Covide
This CRM solution promises to improve business productivity up to 30 percent while lowering costs. In addition to the open source server version, it's also available on an SaaS basis with prices in euros. Operating System: Windows, OS X, Unix
206. Daffodil CRM
Daffodil CRM provides a complete picture of the entire customer lifecycle and includes tools for sales force automation, sales forecasting, efficient opportunity tracking, customer satisfaction, and performance management. The Daffodil site primarily promotes the commercially supported version, but you can download the free, open-source version from SourceForge. Operating System: OS Independent.
207. openCRX
OpenCRX combines Web-based customer relationship management capabilities with groupware that will sync with smartphones and tablets. Track your sales and accounts from any browser. Operating System: OS Independent.
208. Orange Leap/MPX
Designed for non-profit organizations, Orange Leap offers "constituent relationship management" with specific features that aim to improve fundraising. It comes in an SaaS version, and commercial support is also available for the on-premise, open source version. Operating System: Windows.
209. SellWinCRM
This CRM tool is designed primarily for your sales force rather than your customer service staff, and includes a phone client that is very helpful for mobile employees. Despite the "Win" in the name this is a multi-platform tool; in this case, "Win" refers to actual sales wins, not Windows. Operating System: OS Independent.
210. SourceTap
SourceTap describes itself as "a highly flexible Sales Force Automation (SFA) tool that meets both the needs of sales managers and the sales rep." It's available under either a commercial or an open source license, and the company also offers an on-demand subscription service that also provides users with full access to the source code. Operating System: Windows, Linux.
211. SplendidCRM
The community version of this software offers basic CRM features, but you'll need to purchase the professional or enterprise version if you want reporting, order management and other advanced features. Community, professional and enterprise versions can be deployed on-premise or used in the cloud. Operating System: Windows.
212. SugarCRM
Used by more than 250,000 customers, SugarCRM offers the full range of features you would expect in a top-notch CRM, plus better flexibility and no vendor lock-in as with commercial vendors. In addition to the free community version, it comes in several different paid versions that can be deployed on premises or in the cloud. Operating System: Windows, Linux, OS X.
213. vtiger CRM
VTiger boasts that it is "one of the most dynamic and customizable CRM solutions with the lowest cost of ownership available today." It's also available in open source, on demand and mobile versions. Operating System: Windows, Linux, iOS, Android.
214. X2Contacts
X2Contacts offers sales management with a social-networking focus. It's aimed at SMBs and offers a blog-style interface that makes it easy to see and record sales contacts. Operating System: Windows, Linux, OS X.

Dancing

215. DanceCues
If you're really serious about your dancing, DanceCues can help you plot out your best moves ahead of time. It's suitable for professional choreographers and makes it much easier to create cue sheets than using a word processor. Operating System: Windows, Linux, OS X.

Databases

216. BigData
This distributed database can run on a single system or scale to hundreds or thousands of machines. Features include dynamic sharding, high performance, high concurrency, high availability and more. Commercial support is available. Operating System: OS Independent.
217. Cassandra
Originally developed by Facebook, this NoSQL database is now managed by the Apache Foundation. It's used by many organizations with large, active datasets, including Netflix, Twitter, Urban Airship, Constant Contact, Reddit, Cisco and Digg. Commercial support and services are available through third-party vendors. Operating System: OS Independent.
218. CouchDB
Designed for the Web, CouchDB stores data in JSON documents that you can access via the Web or or query using JavaScript. It offers distributed scaling with fault-tolerant storage. Operating system: Windows, Linux, OS X, Android.
219. Firebird
This mature RDBMS offers many SQL standard features and released an updated version just last month. No commercial support is available directly from the project owners, but many third-party Firebird specialists do offer support. Operating System: Windows, Linux, Unix, OS X, Solaris
220. FlockDB
Best known as Twitter's database, FlockDB was designed to store social graphs (i.e., who is following whom and who is blocking whom). It offers horizontal scaling and very fast reads and writes. Operating System: OS Independent.
221. HBase
Another Apache project, HBase is the non-relational data store for Hadoop. Features include linear and modular scalability, strictly consistent reads and writes, automatic failover support and much more. Operating System: OS Independent.
222. Hibari
Used by many telecom companies, Hibari is a key-value, big data store with strong consistency, high availability and fast performance. Support is available through Gemini Mobile. Operating System: OS Independent.
223. Hive
Hadoop's data warehouse, Hive promises easy data summarization, ad-hoc queries and other analysis of big data. For queries, it uses a SQL-like language known as HiveQL. Operating System: OS Independent.
224. Hypertable
This NoSQL database offers efficiency and fast performance that result in cost savings versus similar databases. The code is 100 percent open source, but paid support is available. Operating System: Linux, OS X.
225. Infinispan
Infinispan from JBoss describes itself as an "extremely scalable, highly available data grid platform." Java-based, it was designed for multi-core architecture and provides distributed cache capabilities. Operating System: OS Independent.
226. Kexi
Intended as a replacement for Access and Filemaker, KDE's Kexi offers rapid database application development. Features include migration assistants for transition from other databases, support for parametrized queries, lookup columns, simple templates and visual designers for tables, queries and forms. Operating System: Windows, Linux, OS X.
227. LucidDB
LucidDB claims to be "the first and only open-source RDBMS purpose-built entirely for data warehousing and business intelligence." Accordingly, it offers advanced analytics capabilities and good scalability. Operating System: Windows, Linux.
228. MongoDB
MongoDB was designed to support humongous databases. It's a NoSQL database with document-oriented storage, full index support, replication and high availability, and more. Commercial support is available through 10gen. Operating system: Windows, Linux, OS X, Solaris.
229. MySQL
The "world's most popular open source database," Oracle-owned MySQL offers high reliability, high scalability, security and ease of use. It's downloaded more than 65,000 times every day, and it's won numerous awards. Operating System: Windows, Linux, Unix, OS X.
230. Neo4j
The "world’s leading graph database," Neo4j boasts performance improvements up to 1000x or more versus relational databases. Interested organizations can purchase advanced or enterprise versions from Neo Technology. Operating System: Windows, Linux.
231. OrientDB
This NoSQL database can store up to 150,000 documents per second and can load graphs in just milliseconds. It combines the flexibility of document databases with the power of graph databases, while supporting features such as ACID transactions, fast indexes, native and SQL queries, and JSON import and export. Operating system: OS Independent.
232. Riak
Built to run in the cloud or other distributed environments, this database attempts to combine the benefits of traditional RDBMSes with the benefits of NoSQL. It comes in community and enterprise versions or Riak CS which provides a platform for cloud storage. Operating System: Linux, OS X.
233. PostgreSQL
PostgreSQL might not be the most popular, but it does consider itself the "world's most advanced open source database." It's more than 15 years old and is standards-compliant. Support is available through third-party vendors. Operating System: Windows, Linux, Unix, OS X, Solaris
234. Redis
Sponsored by VMware, Redis offers an in-memory key-value store that can be saved to disk for persistence. It supports many of the most popular programming languages. Operating System: Linux.
235. Terrastore
Based on Terracotta, Terrastore boasts "advanced scalability and elasticity features without sacrificing consistency." It supports custom data partitioning, event processing, push-down predicates, range queries, map/reduce querying and processing and server-side update functions. Operating System: OS Independent.
236. VoltDB
VoltDB describes itself as "the NewSQL database for high velocity applications." It was recently named one of Gartner's Cool Vendors for 2011. In addition to the free community version, it also comes in several commercially supported versions. Operating System: Windows, Linux, OS X.

Data Destruction

237. BleachBit
This multi-function tool not only "shreds" deleted files, it also protects your privacy in a myriad of other ways like deleting cookies, erasing browsing history, deleting logs and cleaning up temp files. By getting rid of unwanted junk, it also helps speed your system and open up extra disk space. Operating System: Windows, Linux.
238. Darik's Boot and Nuke
While Eraser and Wipe delete single files, DBAN securely deletes entire disks. It's very helpful when donating or disposing of an old system. Operating System: OS Independent.
239. Disk Cleaner
This small utility cleans all the “junk” out of your temporary files, cache etc. It's also handy for protecting your privacy when using public machines. Operating System: Windows.
240. Eraser
When you simply "delete" a file from your drive, it can usually still be recovered with forensic tools. However, Eraser uses tools approved by the Department of Defense to eliminate all traces of a file from your drive, protecting your privacy and preventing the spread of sensitive or classified information. Operating System: Windows.
241. FileKiller
Like Eraser, FileKiller "shreds" old files by rewriting over the stored data. It boasts fast performance, and it allows the end user to specify how many times to overwrite the file. Operating System: Windows.
242. Wipe
Wipe offers the same functionality as Eraser, but it's for Linux instead of Windows. The site also offers a wealth of information for those interested in learning more about how file "shredding" works. Operating System: Linux.

Data Integration

243. Apatar
Apatar makes it easier for enterprises to integrate data contained in on-premise or cloud-based applications, including many popular CRM tools. Users include Salesforce.com, Hotels.com, University of Maryland, Autodesk, Credit Suisse and others. In addition to the free download, Apatar offers an On-Demand version, as well as support, training, consulting and other paid services. Operating System: Windows, Linux.
244. Clover ETL
This data integration platform aims to "keep data in your business systems valuable, organized, and meaningful." They offer a range of commercial products based on the open source CloverETL Engine, which is available for download from SourceForge. Operating System: Windows, Linux, OS X.
245. DataCleaner
The "premier open source data quality solution," DataCleaner is useful for data profiling and DQ analysis, data cleansing, detecting and merging duplicates, and lightweight ETL tasks. It's also available in a commercial edition. Operating System: OS Independent.
246. GeoKettle
Based on Kettle/Pentaho Data Integration, GeoKettle incorporates geospatial capabilities from a variety of other open source tools. It is owned by Spatialytics, which offers commercial versions of the tools. Operating System: Windows, Linux, OS X.
247. InfoBright Community Edition
This scalable data warehouse supports data stores up to 50TB and offers "market-leading" data compression up to 40:1 for improved performance. Commercial products based on the same technology can be found at InfoBright.com. Operating System: Windows, Linux.
248. KETL
Java-based KETL is a portable, scalable ETL tool with support for many popular security and data management tools. Commercial support is available through project owner Kinetic Networks. Operating System: OS Independent.
249. MailArchiva
MailArchiva stores enterprise e-mail messages, allowing companies to meet compliance requirements, to search old messages quickly, to monitor content and to save on storage costs. The link above will connect you with the enterprise and ISP versions of the software; for the open source version, see SourceForge. Operating System: Windows, Linux.
250. Scriptella
Java-based Scriptella offers a simple tool for performing ETL tasks and executing scripts. Note that this tool isn't quite as polished as some of the others on our list, and no enterprise version or commercial support is available. Operating System: Windows, Linux, OS X.
251. Talend
Named a "leader" in the Forrester Wave for ETL, Talend offers data integration, data quality, master data management and application integration tools used by companies around the world, including The Weather Channel, Xerox, Capgemini, Verizon, Infosys and others. The company offers quite a few different versions of its tools: it markets the open source versions under the name "Talend Open Studio," and it markets the commercial versions under the name "Talend Enterprise." Operating System: Windows, Linux, Unix.

Data Loss Prevention

252. OpenDLP
OpenDLP is a "agent- and agentless-based, centrally-managed, massively distributable data loss prevention tool." It allows security or compliance managers to scan thousands of systems simultaneously via agents or perform agentless data discovery against a MySQL or Microsoft SQL server. Operating System: Windows.
253. MyDLP
MyDLP can block credit card numbers, social security numbers, or sensitive files from being transmitted via e-mail, printers, the Web or removable devices. In addition to the free community version, it also comes in a paid enterprise version. Operating System: Windows, Linux, VMware.

Data Mining

254. RapidMiner/RapidAnalytics
RapidMiner claims to be "the world-leading open-source system for data and text mining." RapidAnalytics is a server version of that product. In addition to the open source versions of each, enterprise versions and paid support are also available from the same site. Operating System: OS Independent.
255. Mahout
This Apache project offers algorithms for clustering, classification and batch-based collaborative filtering that run on top of Hadoop. The project's goal is to build scalable machine learning libraries. Operating System: OS Independent.
256. Orange
This project hopes to make data mining "fruitful and fun" for both novices and experts. It offers a wide variety of visualizations, plus a toolbox of more than 100 widgets. Operating System: Windows, Linux, OS X.
257. Weka
Short for "Waikato Environment for Knowledge Analysis," Weka offers a set of algorithms for data mining that you can apply directly to data or use in another Java application. It's part of a larger machine learning project, and it's also sponsored by Pentaho. Operating System: Windows, Linux, OS X.
258. jHepWork
Also known as "jWork," this Java-based project provides scientists, engineers and students with an interactive environment for scientific computation, data analysis and data visualization. It's frequently used in data mining, as well as for mathematics and statistical analysis. Operating System: OS Independent.
259. KEEL
KEEL stands for "Knowledge Extraction based on Evolutionary Learning," and it aims to help uses assess evolutionary algorithms for data mining problems like regression, classification, clustering and pattern mining. It includes a large collection of existing algorithms that it uses to compare and with new algorithms. Operating System: OS Independent.
260. SPMF
Another Java-based data mining framework, SPMF originally focused on sequential pattern mining, but now also includes tools for association rule mining, sequential rule mining and frequent itemset mining. Currently, it includes 46 different algorithms. Operating System: OS Independent.
261.Rattle
Rattle, the "R Analytical Tool To Learn Easily," makes it easier for non-programmers to use the R language by providing a graphical interface for data mining. It can create data summaries (both visual and statistical), build models, draw graphs, score datasets and more. Operating System: Windows, Linux, OS X.

De-duplication

262. Bulk File Manager
This app performs de-duplication at the file level. In addition, it also offers bulk re-naming, bulk moving, file splitting and file joining capabilities. Operating System: Windows.
263. Opendedup
Opendedup performs inline de-duplication to reduce storage utilization by up to 95 percent. It's available as an appliance for simplified setup and deployment. Operating System: Windows, Linux.

Desktop Enhancements

264. Compiz
Compiz can be used as either a compositing manager to add fancy effects to your windows or as a full windows manager. Included effects include drop shadows, the desktop cube and expo view. Operating System: Linux.
265. Console
For developers and others who like to work from the command line, Console adds capabilities that aren't available through cmd.exe. For example, it allows users to open multiple tabs, change the font and window style, use a text selection tool, and more. Operating System: Windows.
266. DropIt
If your file system is a mess, DropIt gives you an easier way to clean it up than using the file copy-and-paste capabilities of Windows Explorer. With this app, you can create an icon on your desktop that sends files to the folder of your choice. Just drag your file to icon and it will move the file where you want it to go. Operating System: Windows.
267. Electric Sheep
Inspired by the Philip K. Dick novel Do Androids Dream of Electric Sheep, this screensaver connects thousands of computers around the world to create unusual abstract designs known as "sheep." Vote for your favorite animations and they'll reproduce more often. Operating System: Windows, Linux, OS X.
268. Emerge
This replacement for the Windows shell offers a minimalist interface based on applets. It lets users access programs via a right click instead of the Start Menu, and it offers an application launcher and virtual desktop capabilities. Operating System: Windows.
269. Enlightenment
Compatible with both Gnome and KDE, Enlightenment is a fast, modular windows manager. The project also includes a large interface development library, some parts of which are usable on Windows, OS X and other OSes. Operating System: Linux.
270. Florence
If you can't use your hands for some reason, or if you spilled Red Bull on your keyboard and are waiting for it to dry out, Florence can help you keep on typing. This app for the Gnome desktop puts a virtual keyboard on your screen that you can click with your mouse. Operating System: Linux, OS X.
271. Fluxbox
Although it's not too flashy, this window manager is lightweight and fast. Key features include tabbing, editable menus, an application dock and more. Operating System: Linux.
272. GeoShell
If you don't like the way your Windows interface looks, GeoShell can replace it with skinnable versions of the start menu, taskbar, system tray, etc. It also requires fewer resources than Windows Explorer, and it has a whole host of plug-ins that can add other features like RSS readers, weather forecasts and more. Operating System: Windows.
273. Google Wallpaper
If you get bored having the same image on your desktop for more than five seconds or so, this app might be for you. You type in a keyword, an interval of time and whether or not you want to use "Safe Search." The app then pulls up random pictures from Google and uses them as your wallpaper for the period of time you set. Operating System: Windows.
274. icewm
Icewm's stated goals include "speed, simplicity, and not getting in the user's way." It currently supports 25 different languages. Operating System: Linux, OS X.
275. izulu
No window near your cubicle? This app automatically changes the background on your desktop to match current weather and time. Operating System: Linux.
276. KWin
The default window manager for the KDE Plasma desktop, KWin puts an emphasis on reliability and good looks. The latest version supports compositing, that is, 3D window effects. Operating System: Linux.
277. Kysrun
Much like Launchy (below), Kysrun starts your applications or opens bookmarks or documents with a couple of keystrokes. It also starts searches on Google, Wikipedia or IMDB and solves math problems. Operating System: Linux.
278. Launchy
If you hate to use the mouse, Launchy is for you. It lets you open applications, documents, folders, bookmarks and more with just a few keystrokes. Operating System: Windows, Linux, OS X.
279. LCARS 24
This app is a must have for Star Trek fans with an old PC sitting around in the garage or basement. It sets up your system with Star-Trek style graphics, a talking alarm clock and a file manager. Operating System: Windows, DOS.
280. LotseEscher
Fans of the artist M. C. Escher will enjoy this animated version of his Print Gallery drawing. If you like it, you may also like this developer's other screensavers: LotsaGlass, LotsaSnow and LotsaWater. Operating System: Windows, Linux, OS X.
281. Matrixgl
For those who love the Matrix movies, this screensaver features falling green characters that create images of characters from the The Matrix Reloaded. Operating System: Windows, Linux, OS X.
282. Metacity
The default window manager for Gnome 2.x, Metacity is designed to be as usable and unobtrusive as possible, and might be described as a little plain. The project owners themselves say, “Many window managers are like Marshmallow Froot Loops; Metacity is like Cheerios.” Operating System: Linux.
283. Pixel City
This app generates new night-time cityscape artwork every time it runs. Check out the demonstration video link on the site to see how it works. Operating System: Windows.
284. PNotes
Much like real-world sticky notes, PNotes lets you leave virtual sticky notes for yourself on your computer. Interesting features of this app include audio notes, scheduling, password protection, encryption, transparency and more. Operating System: Windows.
285. Really Slick Screensavers
If you're looking for a screensaver that's a little bit out of the ordinary, check out Really Slick. It includes a dozen different colorful (and sometimes nausea-inducing) screensavers. Operating System: Windows.
286. Sticker
Sticker is a Windows 7-compatible electronic post-it note app. Unlike some similar apps, it lets you put notes directly on the desktop as if they were icons. Operating System: Windows.
287. topBlock
This screensaver's graphics aren't as impressive as some of the others on our list, but it's fun if you like Lego blocks. Operating System: Windows.
288. Wikiquote Screensaver
If you prefer a screensaver that's a little more philosophical, check out this app. You type in a topic and press save, and it will pull up random Wikiquotes on the topic. Operating System: Windows.
289. Wally
Like the Google Wallpaper app, Wally changes out the photo on your screen after a set period of time. But this app let's you pick photos from your own hard drive or from remote sources like Google, Flickr, Yahoo, Photobucket and many others. Operating System: Windows, Linux, OS X.
290. Whorld
Whorld generates interesting geometric patterns that can be used for a screensaver or for VJing. It gives you a huge number of options and controls, and you can even extend them by using one of the downloadable patches or creating a patch of your own. Operating System: Windows.
291. VirtuaWin
Most Linux/Unix windows managers make it easy to switch between desktops, but to accomplish the same thing on Windows, you usually have to log out and log back in as another user. This app lets you save up to nine different desktops and switch between them quickly. It's helpful if you're multi-tasking and need one set of apps for one project and other set for a different project. Operating System: Windows.
292. WindowsPager
WindowsPager offers very similar functionality as VirtuaWin, with a different interface for switching between workspaces. Operating System: Windows.

Desktop Publishing

293. MiKTeX
While definitely not as full-featured as commercial desktop publishing systems, MiKTeX is an excellent typesetting program based on the older app TeX. TeX was created by computer science legend Donald E. Knuth, who intended it to be used "for the creation of beautiful books -- and especially for books that contain a lot of mathematics." Operating System: Windows, Linux.
294. Scribus
Scribus offers the advanced features professional graphic designers need along with an intuitive interface that anyone can master. With it, you can create press-ready output or PDFs of documents you plan to publish online. However, you should note that Scribus cannot convert files made with proprietary formats. Operating System: Windows, Linux, OS X.
295. SiSU
After creating documents in the text editor of your choice, you can use SiSU (Structured information, serialized units) to publish them in the format of your choice and make them searchable. Supported formats include plain-text, HTML, XHTML, XML, ODF, LaTeX, and PDF. Operating System: Linux/Unix.


Developer Tools

296. AllJoyn
AllJoyn allows developers to create applications with OS-agnostic, proximity-based device-to-device communications. The company behind the project is currently running a contest where they plan to give away $170,000 in cash and prizes for great apps built with AllJoyn's framework. Operating System: Windows, OS X, iOS, Android.
297. AML
This XML-based language aim to makes it possible to build cross-platform, data-driven applications that run natively. However, currently it only supports Android. Operating System: Android.
298. Anjuta DevStudio
GNOME's IDE supports C and C++ development on Linux systems. It includes an application wizard, interactive debugger, source code editor, version control, GUI designer and more. Operating System: Linux.
299. Appcelerator Titanium
Appcelerator claims that Titanium is "the first mobile platform to combine the flexibility of open source development technologies with the power of cloud services." It supports the development of iOS, Android and mobile Web apps using JavaScript. Operating System: Windows, Linux, OS X, iOS, Android.
300. ATPad
This Notepad replacement includes a number of features for developers, like a tabbed interface, line numbering, word wrapping, text coloring and more. It's won a number of awards. Operating System: Windows.
301. Cloud9 IDE
This online IDE supports Javascript, Node.js, HTML, CSS, PHP, Java, Ruby and 23 other programming languages. The source code for the IDE is available through GitHub, and the PaaS is free for open source projects or $15 per month for private projects. Operating System: OS Independent.
302. Code::Blocks
This cross-platform C++ IDE is highly extensible, making it easy to add the features you want. It includes built-in compiling and debugging capabilities, plus an easy-to-use interface. Operating System: Windows, Linux, OS X.
303. Dev-C++
Dev-C++ is a C/C++ IDE with support for all GCC-based compilers. Key features include integrated debugging, project management, customizable syntax editor, code completion and others. Operating System: Windows.
304. Eclipse
In addition to the well-known Java IDE, the Eclipse site offers a number of other development tools and educational materials. You'll also find plug-ins that extend its capabilities to support C, C++, Perl, PHP, Python, Ruby, and other programming languages. Operating System: OS Independent.
305. Evolutility
With Evolutility, users can build custom Web apps in just minutes, without writing any C#, HTML, CSS, Javascript, or SQL. If you have a database, this app can put it on the Web quickly and easily. Operating System: Windows.
306. Game Editor
If you're not really a programmer, but you think you have an idea for a game that might be the next big hit on the iPhone, this tool might help. It's a cross-platform game creator, and the site offers advice for those just starting out. Operating System: Windows, Linux, OS X, iOS, others.
307. GCC
The "GNU Compiler Collection" offers front ends and libraries for C, C++, Objective-C, Fortran, Java, and Ada. It's probably the most widely used compiler for code that will run on multiple operating systems. Operating System: OS Independent.
308. Gestalt
Gestalt offers a developers a way to write Ruby and Python scripts in in (X)HTML pages. It's SEO-friendly and lets you use some advanced HTML5 technologies on your Web apps. Operating System: OS Independent.
309. Glade
Glade lets developers quickly create interfaces for the GTK+ toolkit and the GNOME desktop environment. It saves those interfaces in XML so they can be accessed by applications written in a wide variety of programming languages. Operating System: Windows, Linux, OS X.
310. Hibernate
Part of the JBoss Enterprise Middleware Suite, Hibernate provides object/relational persistence for Java and .NET. It also includes the ability to write queries in SQL or the Hibernate version of SQL (HQL). Operating System: OS Independent.
311. Intel Threaded Building Blocks
This library helps C++ developers take advantage of the benefits of multi-core processing systems, even if they don't know a lot about threading. It's available in both a commercial and an open source version. Operating System: Windows, Linux, OS X.
312. IPFaces
Designed to make it easier for experienced Web developers build mobile apps, IPFaces excels at the creation of form-heavy mobile applications. Enterprise support and other professional services are available. Operating System: OS Independent for the developer; creates apps for iOS, Android, BlackBerry, others.
313. Javadoc
Javadoc uses the comments you embed in your Java code to create an HTML documentation file. By default it describes the public and protected classes, nested classes (but not anonymous inner classes), interfaces, constructors, methods and fields. It's included in Oracle's Java developer kits. Operating System: Windows, Linux, OS X.
314. Jo
Jo describes itself as a "simple app framework for HTML5." It allows you to build native-like apps in JavaScript and CSS. Operating System: iOS, Android, webOS, BlackBerry, Chrome OS.
315. jQuery
jQuery calls itself "the write less do more JavaScript library," and that's a pretty apt description. It simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. Operating System: OS Independent.
316. JQuery Mobile
This HTML 5-based framework offers a simple drag-and-drop interface for creating cross-platform mobile Web applications and websites. Notable features include a theme roller and a download builder. Operating System: iOS, Android, BlackBerry, Windows Phone, others.
317. JQTouch
Want to do Web development from your iOS or Android device? JQTouch makes it possible. Notable features include easy setup, native WebKit animations, callback events, flexible themes, swipe detection and more. Operating System: iOS, Android.
318. KDevelop
This integrated development environment (IDE) from KDE that supports C and C++, as well as some other programming languages. It's based on the KDevPlatform, a set of open source libraries used by several IDEs. Operating System: Linux, OS X.
319. Kurogo
Created by Modo Labs, Kurogo is a mobile-optimized middleware platform that was based on the MIT Mobile Framework. It makes is easy to create portals, mobile websites and apps that aggregate data and content from multiple sources. Operating System: Windows, Linux, iOS.
320. Lazarus
Similar to Delphi, Lazarus is a rapid application development tool that includes an IDE and a compiler. It uses the FreePascal libraries to create write-once, compile-anywhere applications. Operating System: Windows, Linux, OS X.
321. MinGW
"Minimalist GNU for Windows" ports the GCC compilers and GNU Binutils for Windows. It allows you to use GNU tools to build Windows apps from Windows or Linux systems. Operating System: Windows, Linux.
322. Moai
Describing itself as "the mobile platform for pro game developers," Moai offers both an SDK for game development and cloud-based services like leaderboards, achievements, etc. In addition to the free open source version, it's also available in a number of fee-based versions, with prices depending on usage. Operating System: Windows, OS X, iOS, Android, Chrome.
323. Mobl
Based on HTML5 and JavaScript, mobl is a programming language designed specifically for creating mobile apps. It's statically typed and comes with an Eclipse-based IDE. Operating System: Windows, Linux, OS X.
324. Molly
This rapid development framework has a goal of making the creation of mobile portals as quick and painless as possible. Developed by Oxford University, it's a good option for other universities that also use the Sakai Virtual Learning Environment. Operating System: Linux.
325. Mono
Now sponsored by Xamarin, this IDE was specifically designed as an open source, cross-platform version of Microsoft's .NET development platform. The site also offers two related tools for mobile development: MonoTouch for iOS and Mono for Android. Operating System: Windows, Linux, OS X, iOS, Android
326. MoSync SDK
This cross-platform software development kit allows you write mobile apps in C/C++ or HTML5/JavaScript--or a combination of both. Developers can use it alongside MoSync Reload, an open source development tool that makes it easy to see how apps will look on various mobile platforms. Operating System: Windows, OS X, Android, iOS, Windows Mobile, Symbian.
327. NetBeans
Although known as a Java tool, NetBeans also supports PHP, JavaScript, Ruby, Groovy, Grails and C/C++. Its goal is to help users quickly develop web, enterprise, desktop, and mobile applications. Operating System: Windows, Linux, OS X.
328. Nette Framework
Nette Framework promises developers "you will write less, have cleaner code and your work will bring you joy." It's a PHP-based framework for writing Web applications, and it supports AJAX, SEO, DRY, KISS, MVC and code reusability. Operating System: Windows, Linux.
329. NuGet
This extension for Microsoft's Visual Studio makes it easy to install and update open source libraries for the .NET platform. And the NuGet Gallery makies it easy to find those open source libraries. Operating System: Windows.
330. Open64
Formerly known as Pro64, Open64 was created by Intel and the Chinese Academy of Sciences. It includes compilers for C, C++ and Fortran90/95 compilers for the IA-64 Linux ABI and API standards. Operating System: Linux.
331. OpenBD
Formerly known as Open BlueDragon, OpenBD offers Web app developers a free way to use the popular ColdFusion Markup Language (CFML). It makes it easy to deploy applications to the Google App Engine or anywhere else you choose. Operating System: Windows, Linux.
332. OpenMEAP
An enterprise-class HTML5 mobile application development platform, OpenMEAP boasts top-notch end-to-end security. It enables rapid application development and supports multiple mobile OSes. Operating System: Android, iOS, BlackBerry.
333. OWASP
The “Open Web Application Security Project” includes a number of documents, applications, and tools for developers concerned about app security. Key projects include WebGoat, ESAPI Security Library for Java, and numerous standards and guides. Operating System: OS Independent.
334. PhoneGap
Used by more than 400,000 developers, PhoneGap boasts that it's the "the only free open source framework that supports 7 mobile platforms": iOS, Android, Blackberry, Windows Phone, Palm WebOS, Bada and Symbian. With it, developers can build cross-platform mobile apps using HTML, CSS and Javascript. Operating System: Windows, iOS, Android, Blackberry, Windows Phone, others
335. phpDocumentor
Like Javadoc, phpDocumentor turns code comments into readable documentation for users, only in this case for the PHP language instead of for Java. It's very fast and includes a variety of templates. Operating System: OS Independent.
336. phpMyAdmin
Written in PHP, this utility handles the administration of MySQL over the Web. phpMyAdmin performs many database administration tasks like running SQL statements, adding and dropping databases, and adding, editing or deleting tables or fields. Operating System: OS Independent.
337. Prototype
This JavaScript framework tries to make it easier to create dynamic Web apps. It offers a class-style OO framework, easy DOM manipulation, and what it humbly calls "the nicest Ajax library around." Operating System: OS Independent.
338. QuickConnectFamily Hybrid
Boasting that it can speed mobile development by up to ten times, this app claims to be the "first full framework for JavaScript, CSS, and HTML development of installable, application store ready apps." It's highly modular and includes a built-in library for SQLite database calls. Operating System: Windows, Linux, OS X, iOS, Android.
339. Qt
Used for both mobile and desktop development, Qt is a cross-platform application and UI framework that supports both C++ and a JavaScript-like language called QML. Commercially licensed versions are available from Digia. Operating System: Windows, OS X, Linux.
340. Railo
Railo claims to be the fastest open source CFML server available. Commercial consulting, training and services are available from Railo Technologies. (And the name comes from an obscure Star Trek character, which boosts the project's geek cred.) Operating System: Windows, Linux.
341. Restkit
Restkit aims to simplify the process of building apps that interact with RESTful Web services. Features include a simple HTTP request/response system, integration with Apple’s Core Data framework, database seeding, object mapping system, pluggable parsing layer and more. Operating System: iOS.
342. Rhodes
Ruby-based Rhodes allows developers to write code once and turn it into native mobile applications for multiple platforms. An enterprise version with a commercial license and support is available for a fee. Operating System: Windows, Linux, OS X, iPhone, Android, BlackBerry, Symbian, Windows Phone.
343. Ruby on Rails
Designed for rapid application development using Agile methodologies, Ruby on Rails offers "Web development that doesn't hurt." It's used by the developers behind thousands of apps, including Twitter, Basecamp, Github and Groupon. Operating System: Windows, Linux, OS X.
344. Sencha Touch
Another JavaScript-based HTML5 framework, Sencha Touch is used by more than 500,000 mobile developers, including more than half of the Fortune 100 and 8 of the world's top 10 financial institutions. In addition to the free open source license, Sencha also offers a free commercial license and paid support. Operating System: OS Independent.
345. SharpDevelop
Another .NET alternative, SharpDevelop supports projects written in C#, VB.NET, Boo, IronPython, IronRuby and F#. It includes a debugger, code analysis, unit testing and a profiler, and it supports both Git and Subversion. Operating System: Windows.
346. soapUI
With more than 2 million downloads, soapUI claims to be the most popular Web services and SOA testing tool in the world. It performs functional testing of SOAP, REST, HTTP, and JMS services, as well as databases. Operating System: OS Independent.
347. Sonar
In its first year of release, this Web-based platform for managing code quality quickly racked up 30,000 downloads. Sonar is notable for its ease of use and excellent reporting tools. Operating System: OS Independent.
348. Ultimate++
This rapid application development framework includes both a C++ library and an IDE designed to handle large applications. Its emphasis is on speeding up the development process and includes "BLITZ-build" technology that makes C++ rebuilds up to four times faster. Operating System: Windows, Linux.
349. Wakanda
According to its website, Wakanda is "an open source platform for building business Web applications with nothing but JavaScript." It's still in preview status, but is already getting kudos from end users for its ability to speed up and simplify the business application development process. Operating System: Windows, Linux, OS X.
350. wxWidgets
This cross-platform development toolkit enables programmers to write applications in C++, Python, Perl, and C#/.NET that work on several different operating systems. In addition to an easy-to-use GUI, wxWidgets offers online help, streams, clipboard and drag and drop, multithreading, database support, HTML viewing and printing, and many other features. Operating System: Windows, Linux/Unix, OS X.
351. XML Copy Editor
XML Copy Editor doesn't have as many features as some comparable apps, but it is very fast and lightweight. It's simplicity also makes it easier to use than some of the more feature-heavy applications. Operating System: Windows, Linux.
352. Zend Framework
The Zend Framework helps PHP developers create more secure, reliable, and modern Web 2.0 applications and services. Support and related products can be purchased through Zend's corporate website. Operating System: Windows, Linux, OS X.
353. ZK
Downloaded more than 1.5 million times, ZK calls itself the "leading enterprise Java Web framework." It's known for allowing developers to build Web apps in Java alone--without knowing Ajax or JavaScript--and it can also be used to build mobile apps. Operating System: OS Independent.

Diet/Exercise/Fitness

354. Cronometer
If you're on a restricted calorie diet, this app can help you track the calories in the foods you eat as well as other health data. The link above will take you to the free Web app; you can find the source code at SourceForge. Operating System: Windows, Linux, OS X, Android, iOS
355. eFit Calorie Counter
With a database of nutrition information for 10,000 foods, this app helps you plan meals and count the calories you consume. It also includes a helpful recipe creator and a tool for tracking your body measurements. Operating System: Windows.
356. iDiet
This app supports multiple diets, including Atkins, Summer Fresh, The Zone and Body for Life. Simply input the diet you're following and your goal. The app calculates how many calories, fat, protein, carbs, etc. you should be eating and then tracks your actual food consumption to see if you are staying on your plan. Operating System: OS Independent.
357. My Tracks
This Android app uses your smartphone's GPS to trace your path when you go running, walking, biking or hiking. When you're finished, you can import your time, distance, speed and elevation change to a spreadsheet so that you can track your fitness or share your stats with others. Operating System: OS Independent.
358. SportsTracker
Whether you're training for a specific event or just want to track your progress toward a more healthful lifestyle, Sports Tracker makes it easy to set up a plan and track your statistics. It also integrates with several popular heart monitors. Operating System: Windows, Linux, OS X.
359. TurtleSport
If you have a Garmin fitness device like the Forerunner or the Edge, this app can retrieve your data and create reports. It also integrates with Google Earth and Google Maps so that you can see where you've been. Operating System: Windows, Linux, OS X.

Document Management Systems (DMS)

360. Epiware
This document manager offers features like search, access history, version history, calendaring, project management and a wiki. Paid support is available. Operating System: Windows, Linux.
361. LogicalDOC
This DMS aims to reduce your document retrieval time from hours to just seconds. The cloud-based version adds the benefit of allowing users to access documents from any device, anywhere. Operating System: OS Independent.
362. OpenDocMan
This Web-based document management system complies with ISO 17025 and OIE standards. It comes as a free download, a commercial appliance or a hosted service, and additional paid services are also available. Operating System: OS Independent.
363. OpenKM
Designed for use by both small and large companies, OpenKM includes features like a Web 2.0 interface, document control version, content and metadata search, mobility support and more. It comes in community, professional or cloud versions, and the company also offers training services. Operating System: OS Independent.
364. Xinco DMS
Short for "eXtensible INformation COre," Xinco offers Web-based management of files, documents, contacts, URLs and more. Features include ACLs, version control and full text search. Operating System: Windows, Linux, OS X.

eBook Reader

365. CoolReader
CoolReader lets you read e-books on your desktop, laptop or Android device. Operating System: Windows, Linux, OS X.
366. FBReader
Want to read an e-book, but don't have a Nook, Kindle or iPad? This ebook reader supports multiple file formats and works on netbooks and Linux-based PDAs, as well as desktops. Operating System: Linux, Windows, BSD.

E-Commerce

367. Broadleaf Commerce
Used by companies like PepBoys, the Container Store, Ganz and Waste Management, Broadleaf offers a Java-based e-commerce platform with a sophisticated promotions engine and customization capabilities. The full software is free and open source, but Broadleaf also offers paid support and consulting services. Operating System: Windows, Linux, OS X.
368. Eclime
Based on osCommerce, Eclime offers fast performance and a template-based design that's difficult to mess up. It also offers SEO capabilities, media playlist support, wishlists and more. Operating System: Windows, Linux, OS X.
369. eShop
This WordPress plug-in offers good, basic e-commerce features, but lacks some of the more advanced features in other e-commerce solutions. It does integrate with most payment processing systems. Operating System: OS Independent.
370. Fishop.NET
Fishop describes itself as a "no frills" e-commerce solution. You can try a demo right from the site, and you can purchase it on an SaaS basis (with prices in euros). Operating System: Windows.
371. Interchange
Interchange has been around since 1995, and it supports a wide range of uses, including sales, content management, customer service, reporting and analysis, personalization, B2B, parts re-ordering, auctions, supply chain management, project management, online collaboration and even an MP3 jukebox. Professional support is available from a variety of third-party partners. Operating system: Linux, OS X.
372. JadaSite
Java-based JadaSite offers enterprise-class e-commerce features like BIRT reporting, product import/export, AJAX-based components, a WYSISYG editor, multi-currency, multiple language support and more. Paid support packages are not available, but JadaSite does offer consulting services for installation, customization, upgrades, etc. Operating System: OS Independent.
373. Jigoshop
Another plug-in for WordPress, Jigoshop boasts lightweight code, advanced reporting and "out-of-the box awesomeness." Paid support is available. Operating System: OS Independent.
374. Magento
Used by more than 100,000 merchants, including Office Max, Harbor Freight Tools, K-Swiss and others, eBay-owned Magento has been called "an emerging player to watch" by Forrester. In addition to the free community editions, it also comes in supported professional and enterprise editions, as well as a hosted turnkey version known as Magento Go. Operating System: Windows, Linux, OS X.
375. MobileCartly
This open source mobile shopping cart boasts PayPal integration, advanced management features, real-time statistics and "no programming skills required." It's also available as a WordPress plugin. Operating System: OS Independent.
376. Modern Merchant
Describing itself as "smart and simple," Modern Merchant offers a no-frills, easy-to-use e-commerce shopping cart. It's easy to install and extensible with a variety of plug-ins. Operating System: Linux.
377. nopCommerce
Based on Microsoft architecture and development tools, nopCommerce offers a stable, PCI DSS-compliant e-commerce solution. Check out the site to see a demo of both its front-end and back-end tools. Operating System: Windows.
378. OpenCart
Nominated for a 2011 Packt Publishing award, OpenCart offers a long list of features and user-friendly operation. Commercial support is available from a variety of international third-party partners. Operating system: Windows, Linux, OS X.
379. Order Portal
Aimed at manufacturers, distributors and rental companies, Order Portal is best for established companies that are looking to add an online presence. It also integrates with a larger Web Business Suite available from the same company. Operating System: Linux.
380. osCMax
Another osCommerce fork (see below), osCMax aims to be easy enough for small startups and advanced enough for larger operations. It offers unlimited products and categories, vouchers and coupons, Web-based administration, support for multiple payment processors, spreadsheet-based data entry and more. Operating System: Windows, Linux.
381. osCommerce
Boasting a community 256,900 members strong, the award-winning osCommerce powers thousands of shops worldwide, including 12,700 that are linked on the site. More than 6,000 add-ons are also available on the site to help you customize the software for your specific needs. Operating System: Windows, Linux, OS X.
382. Oxid eShop
This flexible e-commerce solution offers marketing integration, search engine optimization, easy admin management, an integrated CMS, couponing, reviews, ratings and more. In addition to the community version, it also comes in paid professional and enterprise versions. Operating System: Windows, Linux, OS X.
383. Plici
This French project offers a "powerful and extensible" e-commerce solution. Check out the website for a helpful demo of Plici in action. Be warned that much of the documentation is in French, but English translations are available. Operating System: Windows, Linux.
384. PrestaShop
One of the most popular eCommerce apps in Europe, PrestaShop boasts that it is used to open 30 new online stores every day. Paid support and training are available. Operating System: Windows, Linux, OS X.
385. Satchmo
Django-based Satchmo calls itself "the webshop for perfectionists with deadlines." The site offers links to more than 100 stores created with the software, so you can see it in action for yourself. Operating System: Linux, OS X.
386. Self Commerce
A German project, Self Commerce is based on xt:Commerce (see above) and the Smarty template engine. Much of the website documentation is in German, but English versions of the software are available. Operating System: Windows, Linux, OS X.
387. SimpleCart (js)
This very lightweight (under 20kb) JavaScript-based shopping cart offers very fast setup and doesn't require a separate database. However, in order to use it, you will need to know HTML. Operating System: OS Independent.
388. Spree
This newer e-commerce platform calls itself "the world's most flexible." In addition to the free download, it's also available as a Rackspace-powered SaaS solution, and the site also offers discounts and easy sign-up for payment processing. Operating System: OS Independent.
389. Tomato Cart
This fork of osCommerce includes unlimited product categories, a review and ratings system, search box with auto-completion, product image zoom, 26 built-in payment methods, one-page checkout and more. Hosting with support is available from several third-party partners. Operating System: Windows, Linux.
390. Ubercart
Ubercart is an e-commerce add-on for the Drupal content management system. It offers a configurable product catalog, single page checkout, anonymous checkout, an integrated payment system and more. Operating System: Windows, Linux, OS X.
391. VirtueMart
This add-on for the Joomla CMS offers advanced features like encryption, flexible tax models, shipping address management, multiple currencies and languages and more. The site has a demo and a number of links to live shops that use its shopping cart engine. Operating System: Winodws, Linux, OS X.
392. WordPress eCommerce Plug-In
Downloaded more than 1.3 million times, WordPress's eCommerce plug-in is a tried and true way to add e-commerce capabilities to your blog. Support, additional themes and other features and services are available for a fee. Operating System: OS Independent.
393. X-Cart
This feature-rich e-commerce solution touts itself as SEO-friendly, easy to customize, fast, secure and 100% PCI-DSS compliant. It comes in supported Gold and Pro editions, and hosting is also available from X-Cart. Operating System: Windows, Linux, OS X.
394. xt:Commerce
Smarty-based xt:Commerce is a mature, German e-commerce solution with an English version available. In addition to the free community version, it also comes in premium supported versions with prices in euros. Operating System: Windows, Linux, OS X.
395. Zen Cart
Designed in part by actual small business owners, this e-commerce tool is aimed at users without a lot of technical skills. The site includes plenty of tutorials and links to other services that are helpful when you're starting your own online business. Operating System: Windows, Linux
396. ZenMagick
This fork of Zen Cart (see below) offers features like unlimited products and categories, multi-currency and multi-language support, extensibility and simple PHP-based templates. Commercial support is available through Mixed Matter. Operating System: OS Independent.
397. Zeuscart
This open source shopping cart boasts a rich interface, good usability, comparison-driven shopping, SEO-friendly URLs, gift cards, coupons and more. Paid support services, including installation and upgrade help, are available. Operating System: Windows, Linux.


Educational Testing

398. Safe Exam Browser
If you're worried about your students cheating during a test, this app locks down the browser. While it's activated, it runs in fullscreen mode and prevents students from access other apps, the Internet, shortcuts, etc. Operating System: Windows.
399. iTest
With iTest, teachers can easily give students different versions of the same test because all questions can be drawn at random from a database. The website includes a large library of screenshots that show exactly how the software works. Operating System: Windows, Linux, OS X.
400. TCExam
Claiming to be "the most commonly used free CBA software in the world," this Web-based testing program greatly simplifies the process of creating, administering and grading tests. It's free for non-commercial use, or you can purchase a commercial license that includes support. Operating System: OS Independent.

Elementary Education

401. ChildsPlay
Designed for children under age six, ChildsPlay includes 14 different simple games. Some teach number and letter recognition, memory skills and keyboarding skills, and some of the games are just for fun. Operating System: Windows, Linux, OS X.
402. GCompris
GCompris collects more than 100 games and activities suitable for ages two to ten. It includes apps for telling time, chess, algebra, geography, sudoku, science and much more. Operating System: Windows, Linux.
403. KLettres
Because you're never too young for open source, KLettres teaches preschoolers to identify letters and their sounds. It also includes a "grown-ups" mode that aims to teach adults the basic building blocks of 25 different languages. (Note that in order to use KLettres on Windows, you'll have to download KDE for Windows.) Operating System: Windows, Linux.
404. Little Wizard
If you’re the kind of parent who believes children are never too young to learn how to code, check out this development environment for the grade-school crowd. Using only the mouse, Little Wizard users learn about programming concepts like variables, expressions, loops, conditions, and logical blocks. Operating System: Windows.
405. TuxMath
To succeed at this game, kids must solve math problems in order to prevent Tux the Linux penguin from being hit by meteors. The user can choose the type of math problems and the level of difficulty. Operating System: Windows, Linux, OS X.
406. Tux Paint
Tux Paint is a drawing program designed for preschoolers and early elementary students. Drawing tools include brushes, line tools, stamps, shapes, an eraser, and a host of "magic" effects. Operating System: Windows, Linux, OS X.

E-mail

407. Evolution
Sometimes called "the Outlook of Linux," Evolution offers e-mail, calendar, to-do list and contact management for the Gnome desktop. The interface should feel very familiar for anyone who's ever used Outlook. Operating System: Linux.
408. Thunderbird
Made by Mozilla, the organization best known for the Firefox browser, Thunderbird offers e-mail with a tabbed interface and excellent customization capabilities. If you would like to add calendar functionality, you'll need to download Mozilla's Lightning as well. Operating System: Windows, Linux, OS X.
409. Zmail
Zmail describes itself as a "fake e-mail program" that allows you to send e-mail from anyone to anyone. It's useful for testing mail servers or for sending e-mail without using your regular account. Operating System: OS Independent.

E-mail Marketing

410. OpenEMM
Downloaded more than 300,000 times, OpenEMM calls itself the "#1 open source application for e-mail marketing," and because it's been under development since 1999, it's also one of the oldest and most mature tools of its kind. The link above will connect you with the open source download, but commercial support, services, hosting and an SaaS version are available through project owner Agnitas. Operating System: Windows, Linux.
411. phpList
With 10,000 downloads per month, phpList says it's "the world's most popular open source email campaign manager." The software also comes in a beta hosted version with fees based on the number of messages sent. Operating System: OS Independent.

Encryption

412. APG
APG (a.k.a. Android Privacy Guard) is an implementation of the OpenGPG encryption standard for Android. It's a work in progress, but already it allows users to encrypt, decrypt and sign messages, as well as to manage keys. Operating System: Windows.
413. AxCrypt
If you store personal information or data from your small business on your PC, you really should encrypt those files, especially if you are using a laptop. Downloaded more than 2.4 million times, AxCrypt integrates with Windows Explorer to make encrypting or decrypting individual files fast and easy. Operating System: Windows.
414. Crypt
At just 44KB, Crypt is one of the lightest weight encryption utilities available. And because it can encrypt 3MB worth of data in just 0.7 seconds, it's also one of the fastest. However, it doesn't have a GUI, so you'll need to be comfortable with the command line in order to use it. Operating System: Windows.
415. FreeOTFE
Like LUKS, this app encrypts an entire drive. With it you can create and encrypt virtual disks on your hard drive. It's also highly portable and can run from a thumb drive. Operating System: Windows.
416. Gnu Privacy Guard
This Gnu project is a command-line implementation of the popular OpenPGP encryption standard. It supports ElGamal, DSA, RSA, AES, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 and TIGER encryption algorithms. Operating System: Linux.
417. GPGTools
Mac users can download this version of GPG for a more user-friendly way to encrypt e-mail and files. The website includes quite a bit of help and tutorials for new users, which make it even easier to get started using the app. Operating System: OS X.
418. gpg4win
And this version offers GPG for Windows users, complete with a GUI. It installs quickly and easily, and it protects both files at rest and mail messages. Operating System: Windows.
419. LUKS/cryptsetup
Short for "Linux Unified Key Setup," LUKS calls itself "the standard for Linux hard disk encryption." While many of the other apps on our list encrypt files one by one, LUKS encrypts your entire drive. Operating System: Linux.
420. MailCrypt
This app applies PGP or GnuPGP encryption to your e-mail and Internet usage. If you use Windows NT, be sure to read the warning note on the Web site. Operating System: OS Independent.
421. MCrypt
This replacement for the Unix crypt allows developers to add a wide range of encryption functions to their code, even if they don't know a lot about cryptography. The Web site contains a list of supported algorithms that are included in the Libmcrypt library. Operating System: Windows, Linux, Unix.
422. NeoCrypt
NeoCrypt supports multiple encryption algorithms, including AES, DES, Triple-DES, IDEA, RC4, RC5, CAST-128, BlowFish, SkipJack. It runs from an easy-to-use GUI, and it also integrates with the Windows Shell so that you can encrypt and decrypt files right from Windows Explorer. Operating System: Windows.
423. Open Signature
This digital signature project supports all Open SC cards and aims to be the first single app that can be used with cards from multiple countries. Open Signature originally focused on cards used in Italy but has branched out. Operating System: Windows, Linux, Unix.
424. Steghide
If you really want to feel like a spy, you can use Steghide to conceal hidden messages in audio or text files. It works with JPEG, BMP, WAV and AU files. Operating System: OS Independent.
425. TrueCrypt
If you don't want other people to be able to access any of the data on your drive, try TrueCrypt. It encrypts entire drives or partitions on the fly. Operating System: Windows, Linux, OS X.

Enterprise Resource Planning (ERP)

426. Apache OFBiz
Apache's software suite for small businesses includes ERP, CRM, e-commerce, supply chain management, manufacturing resources planning, enterprise asset management, and POS from a single solution. Apache does not provide support directly, but the site does list a number of third-party service providers who can assist with deployment and ongoing support needs. Operating System: OS Independent.
427. EdgeERP
A community-oriented fork of webERP, EdgeERP offers a similar feature set. It boasts reliability, accessibility and flexibility. Operating System: OS Independent.
428. ERP5
ERP5 combines ERP functionality with CRM, supply chain management, material requirements planning and product data management. It's also available in a paid enterprise version and both free and paid SaaS versions. Operating System: Linux.
429. Neogia
This French ERP solution (with English translation available) caters to SMBs. It offers a modular design and ease of use. Operating System: Windows, Linux.
430. Openbravo
Used by more than 15,000 customers, Openbravo offers Web-based ERP capabilities, with a focus on agility and ROI. Besides the free community edition, it offers basic and professional versions which can be purchased through third-party partners. Operating System: OS Independent.
431. Open ERP
For mid-size and larger enterprises, Open ERP offers more than 700 accounting, ERP and other business modules that can be tailored to a specific company's needs. Both a supported version and an online hosted version are also available with a monthly subscription. Operating System: Windows, Linux.
432. opentaps
Opentaps incorporates e-commerce, customer relationship management, warehouse and inventory management, supply chain management, financial management and business intelligence features. The company boasts that you can deploy the software in just minutes with its Amazon Machine Images (AMI) for the Amazon Elastic Computing Cloud (EC2). Operating System: Windows, Linux.
433. ]project-open[
Project-open boasts more than 150,000 downloads and more than 32,000 active users. It offers project management and project portfolio management along with some ERP capabilities. Additional modules, consulting, support and automatic updates are available for a fee, and it also comes in an SaaS version. Operating System: Windows, Linux.
434. xTuple PostBooks
Open source xTuple PostBooks offers an integrated accounting, ERP and CRM solution. The xTuple software also comes in numerous commercial editions, and it's also available in a cloud version deployed on Amazon's infrastructure. Operating System: Windows, Linux, OS X.
435. SQL-Ledger
Another Web-based application, SQL-Ledger features double-entry accounting and ERP features and, as you might guess, stores data in a SQL database server. Paid support is available at a variety of price points. Operating System: Windows, Linux, OS X.
436. webERP
This Web-based solution allows small business owners and managers to keep tabs on their companies' operations using only a Web browser and a PDF reader. The site includes links to partners who offer third-party support and hosting services. Operating System: OS Independent.

Family Tracing and Reunification

437. RapidFTR
In crisis situations like earthquakes and other disasters, children often get separated from their families. This mobile app makes it easier to collect, share and manage information about these children so that they can be reunited with their families more quickly. Operating System: OS Independent.

File Managers

438. Explorer++
Replaces Windows Explorer
Explorer++ extends the capabilities of the standard Windows Explorer with tabbed browsing, an improved interface, keyboard shortcuts, file merge, file split, and customization capabilities. Like the regular Windows Explorer, it also offers drag-and-drop functionality. Operating System: Windows.
439. Krusader
The KDE file manager, Krusader is a twin-panel commander-style file manager. It boasts extensive support for archived files, advanced search, batch re-naming, file content comparisons and more. Operating System: Linux.
440. muCommander
Java-based muCommander offers a dual-pane file management interface with a light footprint. It allows users to modify zipped files on the fly, and it supports multiple file transfer protocols. Operating System: Windows, Linux, OS X.
441. Nautilus
Nautilus, the file manager for the Gnome desktop, is available for most Linux distributions. The intuitive interface should feel familiar to anyone who's ever used a file manager. Operating System: Linux.
442. PCManFM
The standard file manager for the LXDE desktop, PCManFM also supports other Linux desktops. Its features include drag-and-drop support, thumbnails, icon view, tabbed windows and trash can support. Operating System: Linux.
443. QTTabBar
Similar to Explorer++, this very popular open source project extends the functionality of Windows Explorer with tabs and other interface improvements. Support for Windows 8 is planned. Operating System: Windows.
444. SurF
SurF brings a fresh approach to file management with a unique, tree-based list of files. Other features include brief highlighting of new and recently changed files, auto-complete for search terms and network support. Operating System: Windows.
445. Thunar
Used by the Xfce desktop environment, Thunar boasts a clean interface and very fast performance. It includes a bulk renamer and an extensions framework so that you can add any functionality you like. Operating System: Linux.
446. TuxCommander
Like other "Commander" style file managers, TuxCommander offers a two-paned interface. It also features support for large files, a tabbed interface, a customizable mounter bar, associations and more. Operating System: Linux.

File Sharing

447. ABC (Yet Another BitTorrent Client)
This BitTornado fork adds a queuing system. Other key features include multiple downloads in a single window, customization capabilities, super-seed mode and more. Operating System: Windows.
448. ANts P2P
ANts uses encryption and a host of other security features to enable anonymous file sharing. Note that the ANts network is smaller than many other file-sharing networks. Operating System: OS Independent.
449. Ares P2P
Ares has its own network with integrated chat, and it also supports BitTorrent protocol and Shoutcast radio stations. Key features include fast downloads, a built-in media player and a library organizer. Operating System: Windows.
450. BitTornado
As you might guess from the name, BitTornado is an alternative client for the BitTorrent network. It offers encryption and other enhanced security features. Operating System: Windows, Linux, OS X.
451. BT++
This app aims at improving the original BitTorrent client. Current features include multiple downloads in a single window, minimize to the system tray, and automatic re-starting of interrupted torrents. In the future, developers plan to add enhanced bandwidth throttling and better OS/browser integration. Operating System: Windows, Linux/Unix.
452. DC++
Downloaded more than 50 million times, DC++ offers a lot of help for first-time P2P users. It connects with the Direct Connect / Advanced Direct Connect network. Operating System: Windows.
453. eMule/eMule Plus
Considered by many to be the best P2P client available, eMule is now optimized for use with Windows 7. The eMule Plus version offers a slightly different interface, plus enhanced performance and IRC integration. Operating System: Windows.
454. Mute
Another P2P client with an emphasis on security, Mute uses indirect routing to help hide users' identities. Check out the site for an explanation of how its technology is based on the behavior of insects. Operating System: OS Independent.
455. RetroShare
Most file sharing networks open you up to all kinds of security and privacy concenrs, but RetroShare lets you set up a secure file sharing network only among those you trust. It encrypts all communication via OpenSSL and GPG, and it supports e-mail, chat, file sharing, streaming, VoIP, and more. Operating System: Windows, Linux, Unix, BSD.
456. Shareaza P2P
Shareza calls itself the "ultimate P2P client" and boasts that it "just keeps getting better and better." It supports eDonkey2000, Gnutella, BitTorrent and Gnutella2 networks. Operating System: Windows.
457. StealthNet
Like MUTE, the StealthNet network routes file sharing requests through multiple network nodes in order to provide anonymity. It offers fast download speeds and a user-friendly GUI. Operating System: OS Independent.
458. Vuze
One of the most popular BitTorrent clients, Vuze makes it easy for novices to get started downloading hi-def video while offering plenty of features for advanced users. Operating System: Windows, Linux/Unix, OS X.
459. Waste
Waste allows small groups of users to chat and download files securely and anonymously. Transmissions are encrypted using RSA and Blowfish algorithms. Operating System: Windows, Linux, BSD, OS X.

File Transfer

460. Connectbot
Need to transfer files to an Android device? This SSH client will allow to move your files securely. Operating System: Android.
461. FileZilla
This project includes both an FTP server for Windows and a cross-platform FTP client. Both support FTP, FTPS and SFTP file transfer with an easy-to-use tabbed interface. Operating System: Windows, Linux, OS X.
462. FireFTP
This Firefox add-on has been downloaded more than 22 million times. It allows you to download files via FTP or SFTP right from your browser window. Operating System: Windows, Linux, OS X.
463.WinSCP
This award-winning FTP, SFTP, and SCP client comes with two different interfaces, so that you can pick the one that suits you best. Other notable features include an integrated text editor, authentication support, batch file scripting and more. Operating System: Windows.

Flashcards

464. Anki
Anki supports images, audio, videos and scientific markup, so you can use it to memorize anything from names and faces, geography, vocabulary, information for medical or law exams or even guitar chords. It also works with most mobile OSes, so you can use it on your smartphone or tablet. Operating System: OS Independent.
465. FlashQard
This learning tool is founded on two basic principles: different cards for different purposes and the Leitner System. Developed in the 1970s, the Leitner System is a proven methodology for spending more time on more difficult material and less time on materials that's already been mastered. As with many of the flashcard-type apps, this app lets you create your own cards or download sets that have already been created. Operating System: Windows, Linux.
466. Genius
If you need to memorize something—anything—Genius can help. It's a spaced repetition flashcard program that can help you pass a test, master a subject, prepare for a speech and more. Operating System: OS X.
467. jVLT
The Java Vocabulary Learning Tool, aka jVLT, aims to help users learn vocabulary for new languages. You can make up your own cardset or use the pre-built sets to learn French, English, Spanish, Thai, Chinese, German, Czech, Finnish or Russian. Operating System: Windows, Linux, OS X.
468. The Mnemosyne Project
Another flashcard-type study aid, The Mnemosyne Project relies on a sophisticated algorithm to determine which card shows up when. Users also have the option of transmitting their data and progress to the project's owners, who are conducting a research project about the nature of memory. Operating System: Windows, Linux, OS X, Android
469. Parley
KDE's flashcard program can be used to learn any type of information, but it's particularly well adapted to learning new vocabulary. In addition to standard flashcards, it also offers anagram, multiple choice, fill in the blank, conjugation and other types of exercises. Operating System: Windows, Linux.
470. Pauker
This flashcard app claims to help strengthen your ultra-short-term, short-term, and long-term memory. You can make your own cards if you want to learn something in particular, or you can use one of the many pre-written lessons, which include foreign languages, states/provinces and capitals, chemical elements, multiplication tables, musical terms and even European license plates. Operating System: Windows, Linux, OS X.

Foreign Language Instruction

471. Pythonol
Pythonol is designed to help English speakers learn Spanish. It includes multiple tools and games for learning vocabulary, conjugation, pronunciation, idioms, reading comprehension and more. Note that it comes in separate versions for adults and children. Operating System: Windows 98, Linux.
472. Step Into Chinese
This app can serve as both a Chinese-English dictionary and a flashcard system for mastering vocabulary. It includes pronunciation, translation and contextual information for more than 26,000 modern Chinese words and concepts. Operating System: Windows, Linux, OS X.
473. Zkanji
Zkanji is an elaborate English-Japanese dictionary. Included features can help you learn to write Japanese characters, study vocabulary or find meanings for words you don't know. Operating System: Windows.
474. ZWDisplay
ZWDisplay helps those studying Chinese learn to pronounce Chinese words and read Chinese text. Clicking the Chinese characters displays a pinyin pronunciation guide and an English translation. Operating System: Linux

Forensics

475. Live View
This Java-based tool creates a VMWare virtual image of the machine you are analyzing so that you can interact with it without changing the underlying image or disk. Developed by CERT and the Software Engineering Institute at Carnegie Mellon, it's an excellent tool for forensic examiners. Operating System: Windows.
476. ODESSA
The Open Digital Evidence Search and Seizure Architecture, aka "ODESSA," offers several different tools that for examining and reporting on digital evidence. This is an older project, but still valuable. Operating System: Windows, Linux, OS X.
477. The Sleuth Kit/Autopsy Browser
These two apps work together: The Sleuth Kit offers command line tools for conducting digital investigations, and Autopsy Browser offers a browser-based GUI for accessing those tools. The project also now includes a Hadoop framework for large-scale data analysis. Operating System: Windows, Linux, OS X.

Games

478. 0 A.D.
Now in its eighth alpha release, 0 A.D. is a real-time civilization-building strategy game that plays a lot like Age of Empires. It offers excellent graphics, six different civilizations to play, and several multiplayer modes. Operating System: Linux, Windows, OS X.
479. Advanced Strategic Command
This turn-based strategy game, which was "designed in the tradition of the Battle Isle series," pits military units against each other on a hexagonal grid. Play against the AI opponent or against other humans using hotseat or PlayByMail. Operating System: Windows, Linux.
480. Alien Arena
This self-described "furious frag fest" is a first-person shooter in the style of Quake III and Unreal Tournament. Boasting "one of the most active, loyal, and committed communities of any free game in existence," Alien Arena has a large user base that makes it easy to find online competitors any time of day. Operating System: Linux, Windows, OS X.
481. AssaultCube
This realistic first-person shooter runs in single- or multi-player mode and utilizes the same engine as Cube (see below). Thanks to its low latency and lightweight size, it can run on older systems and slow networks, and it offers fast gameplay. Operating System: Linux, Windows, OS X.
482. AssaultCube Reloaded
This fork of the popular first-person shooter integrates some of the best features of Battlefield, Quake and Call of Duty into AssaultCube, while maintaining a lightweight footprint. Other improvements include ricochet shots, new weapons, improved radar and more. Operating System: Windows, Linux.
483. Battle for Wesnoth
With plenty of elves, necromancers, orcs and warriors, this popular turn-based strategy game immerses players in a high-fantasy world with a number of scenarios to play. It includes more than 200 unit types from six different factions, and it supports online multiplayer games. Operating System: Linux, Windows, OS X, iOS.
484. Billiards
Billiards is designed to simply but accurately simulate the game for which it's named, so that players can practice when a pool table isn't available. It currently offers tables both with and without pockets, and you can play eightball, nineball and carom billiards. Operating System: Linux.
485. BosWars
In this futuristic real-time strategy game, you build your stores of energy and your economy while battling opponents for control of the map. You can play alone or against human opponents via a LAN or the Internet. Operating System: Windows, Linux, BSD, OS X.
486. Brain Workshop
Research suggests that dual n-back activities can improve working memory and fluid intelligence, and they also seem to help some ADHD/ADD sufferers. Downloaded more than 384,000 times, Brain Workshop lets you give your brain a workout by trying dual n-back exercises for yourself. Operating System: Windows, Linux, OS X.
487. BZFlag
Also known as "Battle Zone Capture the Flag," BZFlag is based on one of the most popular games ever created for Silicon Graphics machines. With nearly 200 servers available, it's fairly easy to find a group to play this multi-player 3D tank game. Operating System: Windows, Linux, OS X.
488. CommanderStalin
This game transports the action of Bos Wars away from the future and back to the Soviet era in Russia. Build up your economy and military so that you can withstand the inevitable attack from Nazi Germany. Operating System: Windows, Linux.
489. Crossfire
Explore 3000 maps and battle 150 monsters in this retro arcade adventure game. It includes 15 character types, an elaborate magic system and many, many treasures to find. Operating System: Windows, Linux, OS X.
490. Cube
Cube boasts excellent graphics and lots of brutal action in the tradition of games like Doom and Quake. Play alone or against up to 12 other players in multi-player mode. Operating System: Windows, Linux, OS X.
491. Dakar 2011
In this newer racing game, you drive in the Dakar rally through 14 different stages based on real maps. It includes six different vehicles and 140 different opponents. Operating System: Windows, Linux.
492. Domination
Domination is a Java-based version of the board game Risk. The developers have recently completed a version for Android that can be downloaded through Google Play. Operating System: Windows, Linux, OS X, Android.
493. Egoboo
This 3D dungeon-crawler challenges players to save Lord Bishop from the clutches of the evil Dracolich, slaying hordes of monsters along the way. Play with up to four other people as you make your way through 40 different dungeons. Operating System: Windows, Linux, OS X.
494. Enigma
Similar to the classic Oxyd and Rock'n'Roll games for Atari and Amiga, Enigma challenges uses to find pairs of matching Oxyd stones while avoiding traps, overcoming obstacles and solving puzzles. It's been downloaded hundreds of thousands of times and features more than 1,000 levels of gameplay. Operating System: Windows, Linux, OS X.
495. Excalibur: Morganna's Revenge
In this epic adventure game, you begin as a futuristic soldier on a starship but soon time-travel back to the age of King Arthur, where you must save the world from Morganna. It offers 42 levels of solo play and 27 levels you can play with your friends in network mode. Operating System: Windows, Linux, OS X.
496. Extreme Tux Racer
The classic Tux Racer (below) hasn't been updated in a while, but this version updates the original with better graphics and gameplay. Operating System: Windows, Linux, OS X.
497. Fish Fillets NG
Free the fish by solving a variety of puzzles. Along the way, the fish make funny comments and the other game denizens fight amongst themselves. Operating System: Windows, Linux, OS X.
498. FlightGear
FlightGear describes itself as "sophisticated, professional, open source." It includes realistic graphics for more than 20,000 real world airports, 3 DVDs worth of accurate world scenery, several aircraft options and the ability to model your own aircraft. Operating System: Windows, Linux, OS X, others
499. Foobillard++
This is also a remake of an earlier open source game. Check out the screenshots on the site to see the excellent graphics for this billiards game. Operating System: Windows, Linux.
500. FreeCol
If you've played Civilization, FreeCol will feel very familiar. It's a turn-based strategy game where the objective is to build a successful civilization starting with just a few colonists. Operating System: Windows, Linux, OS X.
501. FreeCiv
Like many games in this genre, FreeCiv challenges players to manage a civilization from the Stone Age through the Space Age. The graphics and game play are fairly similar to Civilization I and II, but not as advanced as the more recent Civilization games. Operating System: Windows, Linux, OS X.
502. FreeOrion
Based on the Master of Orion games, this "turn-based space empire and galactic conquest game" involves both nation-building and combat elements. Both single- and multi-player games are available. Operating System: Windows, Linux, OS X.
503. Frets on Fire
Very similar to Guitar Hero, Frets on Fire lets you use your keyboard of a guitar controller to play along with tracks. This project has a huge community of users who have composed songs for the game, or you can import Guitar Hero tracks or your own songs. Operating System: Windows, Linux, OS X.


504. Frozen Bubble
Known as "the most addictive game ever created," Frozen Bubble is a traditional bubble shooter where you try to make chains containing balls of the same color. It includes 100 levels for single players, or you can challenge your friends in two-player mode or online multi-player mode. Operating System: Windows, Linux.
505. GBrainy
Gbrainy helps keep you in top mental shape with a variety of logic, mental calculation, memory training and verbal analogy activities. It offers a variety of difficulty levels, making it appropriate for players of all ages. Operating System: Windows, Linux.
506. The Genius
The Genius is a chess app with a simple interface. Choose among four levels of game play ranging from "I dunno chess" to "Expert." Operating System: Windows.
507. Get Sudoku Portable
Stumped by a Sudoku puzzle? Enter the values you know into this app and it will help you keep track of the possible answers for all of the other boxes. Operating System: Windows.
508. Glest
The forces of Tech battle the forces of Magic in this award-winning 3D real-time strategy game. Check out the gallery on the website for plenty of screenshots and information about the tech tree and buildings. Operating System: Windows, Linux.
509. GLtron
As in the movie Tron, competitors in this game ride speeding lightcycles that trail walls behind them. The goal is to trap other players, forcing them to hit the wall, while you remain free. Operating System: Windows, Linux, OS X.
510. GnomeGames
Gnome's collection of casual "five-minute" games includes Chess, Sudoku, Mines, Four-in-a-row and 11 other simple games. The graphics and gameplay are basic but sometimes addictive. Operating System: Linux.
511. GNU Backgammon
Based on a neural network, this backgammon engine gets better with time. Test yourself against a computer opponent with the skills of a championship flight tournament player or use it to analyze backgammon moves and matches. Operating System: Windows, Linux, OS X.
512. GNU Go
This GNU project allows users to play Go, a 3,000-year-old Asian board game similar to chess. It's a two-player game where players attempt to control the most territory on the board. Operating System: Windows, Linux, OS X.
513. Hedgewars
Unlike a lot of strategy games, Hedgewars doesn't take itself too seriously. It describes itself as "a turn based strategy, artillery, action and comedy game, featuring the antics of pink hedgehogs with attitude as they battle from the depths of hell to the depths of space." Games can support up to eight players at once, and it includes 47 different weapons, including the piano strike and explosive robotic cake. Operating System: Windows, Linux, OS X, iOS.
514. I Have No Tomatoes
How many tomatoes can you smash in ten minutes? Find out with this off-beat and highly unusual puzzle game. Operating System: Windows, Linux.
515. KDE Games
The KDE desktop offers a much wider selection of casual games. It includes KBattleship, KMahjong, KBreakout, KSpaceduel, KMines, KSudoku and many more. Operating System: Windows, Linux.
516. The Legend of Edgar
On a dark and stormy night, Edgar's father fails to return home, leading Edgar to believe he has been captured by an evil sorcerer. In this 2D game, players help Edgar overcome obstacles, solve puzzles, defeat enemies and find his father. Operating System: Windows, Linux, OS X.
517. LinCity NG
LinCity NG offers an open source version of the original Sim City game. Win by building a sustainable economy or by evacuating your entire population in spaceships. Operating System: Windows, Linux, OS X.
518. Liquid War
One of the most unusual games available, Liquid War is a multiplayer strategy game with a twist. Instead of an army, you control a glob of liquid, and you win by eating your opponents. The graphics aren't particularly great, but the game itself is interesting. Operating System: Windows, Linux, OS X.
519. Linley's Dungeon Crawl
If you miss some of the really old dungeon crawlers like Rogue, Hack and Moria, this game is for you. The goal is to retrieve the Orb of Zot from deep in a subterranean cavern and return it to the surface. Operating System: Windows, Linux, OS X.
520. MegaGlest
Based on Glest, MegaGlest adds five more factions--Egyptians, Indians, Norsemen, Persian and Romans--to the Tech and Magic teams from the original. Play in one of 17 different settings, either alone or against up to seven other players. Operating System: Windows, Linux.
521. Micropolis
Another Sim City Clone, Micropolis (a.k.a. OLPC SimCity) was developed for the One Laptop Per Child project. It's based on the source code for the original version of Sim City. Operating System: Linux, Unix.
522. Neverball
To complete the levels of Neverball, you'll need to be able to solve puzzles and to be able to tilt the floor skillfully to move the ball where you want it to go. The download also includes Neverputt, a golf game based on the same engine. Operating System: Windows, Linux, OS X.
523. Nexuiz
One of the most popular open source first-person shooters ever, Nexuiz has been downloaded more than 6 million times. A team is currently working on re-making the game for consoles. Operating System: Windows, Linux, OS X.
524. Oolite
This space simulator challenges players to fly around the universe, establishing space stations and fending off enemy ships. The graphics are old-school (based on the classic game Elite), but many players same the game is highly addictive. Operating System: Windows, Linux, OS X.
525. OpenArena
Designed as a clone of Quake III Arena, Open Arena offers multi-player first-person shooter action and twelve different game types. Due to the nature of some of the content, its developers warn that it is unsuitable for kids under 17. Operating System: Windows, Linux, OS X.
526. OpenCity
Yet another city development simulator, Open City features 3D graphics and detailed terrain. The site includes helpful tutorials to get you started playing the game. Operating System: Windows, Linux, OS X.
527. OpenTTD
Although it was based on Transport Tycoon Deluxe, this game improves on the original with larger maps, support for up to 255 players, improved tools and the opportunity to bribe town authorities. Check out the site for a list of servers that host multiplayer games. Operating System: Windows, Linux, OS X.
528. Performous
For those who want to perfect their song and dance moves, Performous mashes together dancing, guitar playing and singing into one fun game. It's karaoke meets Dance Dance Revolution meets Guitar Hero—and all you need is a PC to play. Operating System: Windows, Linux, OS X.
529. Pingus
If you've ever played Lemmings, Pingus will feel very familiar. In this version you guide a horde of penguins through various levels by assigning some penguins to dig, bash, climb, etc. Operating System: Windows, Linux, OS X.
530. PlaneShift
This 3D fantasy role-playing game offers free play with no restrictions. It features six races, six "Ways of Magic," large worlds to explore and plenty of monsters to fight. Operating System: Windows, Linux, OS X.
531. PokerTH
Downloaded millions of times, this superb Texas Hold 'Em game features above-average graphics and an active community of players. Check out Poker-heroes.com to see the rankings of current players. Operating System: Windows, Linux, OS X, Android.
532. Powermanga
Similar to the old arcade game Galaga, Powermanga is a 2D space shooter with 41 levels to play. It's good for hours of shoot 'em up fun. Operating System: Linux.
533. Pushover
Guide your ant so that it knocks over the dominoes on the screen in the correct order. A remake of an older game, this version of Pushover includes several different levels and 11 different kinds of dominoes. Operating System: Windows.
534. PySolFC
PySolFC collects more than 1,000 solitaire games into a single download. In addition to games featuring the traditional 52-card deck, you'll find games for the 78-card Tarot deck, eight- and ten-suit Ganjifa games, Hanafuda games, Matrix games, Mahjongg games and more. Operating System: Windows, Linux, OS X.
535. Red Eclipse
Just over a year old, this Cube-based shooter includes unique gameplay features like Parkour, impulse boosts and dashing. It also includes an editor so you can build your own levels. Operating System: Windows, Linux, OS X.
536. Rigs of Rods
This very popular vehicle simulator uses a unique soft-body physics engine to provide very realistic behavior of vehicles that travel over land, water and air. An extremely active user community has created more than 2000 modifications for the app, and you can find numerous user videos online. Operating System: Windows, Linux, OS X.
537.Rocks'N'Diamonds
A definite oldie, Rocks'N'Diamonds is a multiplayer arcade game "in the tradition of" Boulder Dash, Emerald Mine, Supaplex and Sokoban. Thanks to an active user community, tens of thousands of levels are available. Operating System: Windows, Linux, OS X.
538. Ryzom
Set 2000 years in the future on the plant Atys, Ryzom depicts a struggle for world domination between the nature forces of Kami and the technological forces of Karavan. Ryzom is a massively multiplayer online role-playing game (MMORPG) where players move up by gaining experience in fighting, magic, crafting and foraging. Note that while the download and basic play are free, unlimited play requires a subscription. Operating System: Windows, Linux, OS X.
539. Scrabble
In addition to the classic 15x15 crossword game, this version of Scrabble also lets you play SuperScrabble on a 21x21 word, Scrabble 3D or your own board. Compete against up to three online players at a time. Operating System: Windows, Linux, OS X.
540. Scorched3D
A modernized version of Scorched Earth, this turn-based artillery game offers excellent 3D graphics and easy-to-learn gameplay. Play online with up to 24 players at once and/or take on computer-generated opponents. Operating System: Windows, Linux, OS X.
541. Secret Maryo Chronicles
If you remember the old 2D Mario Bros. games fondly, you'll probably enjoy Secret Maryo Chronicles. It offers great old-school jump and run gameplay with plenty of levels. Operating System: Windows, Linux.
542. Seven Kingdoms: Ancient Adversaries
This is an updated version of the Seven Kingdoms real-time strategy game that was originally released in 1997. Choose your kindgom--Chinese, Egyptians, Greeks, Japanese, Maya, Mughuls, Normans, Persians, Vikings, Zulus--then begin training your army, building your economy and spying on your enemies in single-player or multi-player games. Operating System: Windows.
543. ScummVM
ScummVM allows you to port many classic point-and-click adventure games to nearly any platform you like, including many mobile platforms. Supported games include Simon the Sorcerer 1 and 2, Beneath A Steel Sky, Broken Sword 1 and Broken Sword 2, Flight of the Amazon Queen, Monkey Island, Day of the Tentacle, Sam and Max, and dozens of others. Operating System: Windows, Linux, OS X, and many others.
544. Simutrans
Another Transport Tycoon Deluxe clone, Simutrans challenges players to create a successful transport network without going bankrupt. The website includes numerous PakSets, which offer new graphics and new worlds where you can play. Operating System: Windows, Linux, OS X.
545. Slam Soccer 2006
Slam Soccer offers a comedic take on one of the world's most popular sports with slightly silly 3D graphics. It includes 80 teams, 20 stadiums, 10 referees, 9 commentators and the ability to play in a variety of weather conditions. Operating System: Windows, Linux.
546. SlipStream
Designed to support any type of vehicle that could be driven around a racetrack, SlipStream is more difficult to learn than some other vehicle simulators, but offers more realistic handling as a tradeoff. It's a young project that's early in development, but is already usable. Operating System: Linux.
547. Smash Battle
Based on the Mario Battle from Super Mario Bros. 3, Smash Battle is a newer game with old school 2D graphics. Fight against up to three other opponents in multi-player mode. Operating System: Windows, Linux.
548. Spring: 1944
As you might guess from the title, this app is a WWII-theme real-time strategy game with period-accurate units and strengths. Play as the US, Germany, USSR or Britain. Operating System: Linux.
549. SokoSolve
SokoSolve offers a version of the classic Sokoban game which requires players to push one box at a time to achieve a desired configuration. In addition to the game, the download provides other tools for Sokoban fans, including a solver and a library. Operating System: Windows.
550. Steel Storm Episode I Set in a futuristic world, Steel Storm is a top-down shooter with fast-paced action that doesn’t take too long to play. Note that while Episode I has an open source license, Episode II is a commercial product. Operating System: Windows, Linux.
551. Stendhal
This MORPG features simple, old-school graphics and friendly gameplay. Journey through a world full of villages, cities, dungeons, forests, mines, mountains and tropical islands, with plenty of adventures along the way. Operating System: Windows, Linux, OS X.
552. StepMania
This fun rhythm game works with your keyboards or dance pads (if you have them). You'll need to download songs separately from the game, but the site offers plenty of free songs. Operating System: Windows, Linux, OS X.
553. Stunt Rally
Stunt Rally is also a racing game, and it offers 57 tracks, 9 scenarios and 8 cars. There's also a track editor, so you can create your own courses, complete with loops and curves. Operating System: Windows, Linux.
554. Summoning Wars
This newer fantasy role-playing game offers four classes of characters, each with 24 unique magical abilities and other skills. Play on your own or with up to eight other people in multi-player mode. Operating System: Windows, Linux, OS X.
555. SuperTux
SuperTux is a classic 2D, side-scrolling jump-and-run game featuring Tux the Linux penguin. It offers 26 different levels where you can take on nine different enemies. Operating System: Windows, Linux, OS X.
556. SuperTuxKart
Tux the Linux penguin races around 3D tracks in this racing game. The latest version adds three new tracks, a battle arena, two new weapons and more. Operating System: Windows, Linux, OS X.
557. T^3 Portable
Play Tetris in 3D! It's simple, familiar and fun. Operating System: Windows.
558. Teeworlds
This side-scrolling 2D game features cartoonish graphics combined with multi-player shooting action. It supports up to 16 players at once in multiple game styles, including team deathmatch and capture the flag. Operating System: Windows, Linux, OS X.
559. TORCS
The Open Race Car Simulator (TORCS) offers realistic racing action that figures in tire and wheel properties, aerodynamics, collisions and more. It includes more than 50 cars, 20 tracks and 50 opponents. Operating System: Windows, Linux, OS X.
560. Tremulous
This award-winning game combines first-person shooter action with elements typically found in a real-time strategy game. Play as either the aliens or the humans, and rack up wins to become more powerful. Operating System: Windows, Linux, OS X, XBox.
561. Tux Racer
Downloaded millions of times, this popular classic Linux game features Tux the penguin sliding downhill. It features 3D landscapes and changing weather conditions with fog, high winds and more. Operating System: Windows, Linux, OS X.
562. UFO:Alien Invasion
In the year 2084, you control a secret organization defending earth against brutal alien invaders. View the action from Geoscape mode, where you manage the battle from a high level, or Tactical Mode, where you lead a team in combat against the enemy. Operating System: Windows, Linux, OS X.
563. Ultimate Stunts
A remake of the DOS game Stunts, Ultimate Stunts takes racing to the next level by adding loops, corkscrews, jumps and more. It also makes it easy to build your own tracks. Note that it's still in the earlier stages of development. Operating System: Windows, Linux, OS X.
564. Ultrastar Deluxe
This karaoke games awards points based on how well you sing, similar to the game SingStar. You can use it with your own music files or you can download more than 10,000 songs available for the app. Operating System: Windows, Linux, OS X.
565. Unknown Horizons
In this 2D city-building strategy game, you start with a ship and a handful of resources on a desolate island. Can you build a thriving metropolis? Note that this is a newer game, and you may still run into some bugs. Operating System: Windows, Linux, OS X.
566. VDrift
This racing game was made with drift racing in mind. It features real-world tracks and vehicles and superb graphics. Operating System: Windows, Linux, OS X.
567. Vega Strike
This space simulator revolves around trading, exploration and combat with enemy ships. It plays in both single-player and multi-player modes and boasts excellent graphics. Operating System: Windows, Linux, OS X.
568. WarMUX
Now available for Android through Google Play, WarMUX describes itself as a game of "convivial mass murder" where you attempt to defeat your opponent's team using dynamite, grenades, baseball bats and bazookas. The 2D graphics feature penguins, gnus, firefoxes, and other mascots from well-known open source software. Operating System: Windows, Linux, OS X, Android.
569. Warsow
No, that isn't a misspelling of "Warsaw." Warsow is a very fast-paced, cartoonish shooter featuring rocketlauncher-wielding pigs. Unlike most other shooters, Warsow goes easy on the gore, using stars and cubes to stand in for blood and guts. Operating System: Windows, Linux, OS X.
570. Warzone 2100
Warzone 2100 challenges players to rebuild civilization after it's been destroyed by nuclear war. It offers real-time action in campaign, multi-player and single-player modes. Operating System: Windows, Linux, OS X.
571. Widelands
Inspired by The Settlers and The Settlers II, Widelands is another civilization-building real-time strategy game. It features four worlds, three tribes, a map editor and both single- and multi-player games. Operating System: Windows, Linux, OS X.
572. WinBoard Portable
Play the standard chess game you know or one of the variants like xiangqi (Chinese chess), shogi (Japanese chess), Makruk, Losers Chess, Crazyhouse, Chess960 and Capabanca Chess. You can play on your own or connect to other players on the Internet. Operating System: Windows.
573. XMoto
To complete the various levels on this 2D motocross game, you'll need to collect all the strawberries while overcoming various obstacles and avoiding wreckers. Hundreds of additional user-created levels are available on the site. Operating System: Windows, Linux, OS X.
574. XM Solitaire
This collection features 200 different cards games, including popular solitaire options like Freecell, Klondike, Fan, Spider, Pyramid and Gaps. The same site features a number of puzzle games, like Sokoban, Sudoku and others. Operating System: Windows.

Casual and Puzzle Games

575. XPilot
First developed in 1991, XPilot is a classic space game similar to Asteroids. It's multi-player only, so you'll need to join a game on an existing server or set up a server of your own. Multiple forked versions are also available. Operating System: Windows, Linux, OS X, iOS.
576. Yahtzo!
As you might guess from the name, Yahtzo! is a computerized version of Yahtzee. The interface is fairly bare-bones, but play is just like the classic dice game. Operating System: Windows.

Card Games

577. Yo Frankie!
Built with the Blender open source 3D animation tool, Yo Frankie! features some of the best graphics you'll see on any open source game. It features characters from the open source movie Peach who run, jump, climb and glide their way across obstacles in a realistic landscape. Operating System: Windows, Linux, OS X.
578. Zero-K
This futuristic real-time strategy game offers plenty of action, streamlined economy controls and fast-moving games, with the average game lasting 20-30 minutes. It features battling robot armies with the ability to micro-manage individual units. Operating System: Windows, Linux.
579. Zombies
If you get tired of playing strategy games against the living, take a turn playing against the undead. The goal? Kill the zombies before they kill you. Operating System: Windows, OS X.

Gateway Security Appliance

580. Endian Firewall Community
With the Endian Community version, you can create your own network security appliance using an older PC. It offers firewall, antivirus, spam blocking, content filtering, a VPN and other security capabilities in a single package. Pre-configured hardware appliances and commercially supported software appliances are also available at the site. Operating System: Linux.
581. Untangle
Much like Endian, Untangle offers an integrated security appliance that you can deploy on your own hardware, or you can purchase a pre-configured hardware appliance from the company. Untangle also has a network of third-party partners who offer Untangle-based products and services. Operating System: Windows, Linux.

Genealogy

582. GenealogyJ
Like Gramps, GenealogyJ is a tool for viewing and editing your family history, but it was designed for amateurs, not professionals. Java-based, it creates family trees, timelines, maps, reports and more. Operating System: OS Independent.
583. Gramps
Short for "Genealogical Research and Analysis Management Programming System," Gramps is one of the best acronyms we've ever seen on an open source project. It's a professional-quality genealogical program with a very active user community and more than 1,100 pages of online documentation to help you trace your own family history. Operating System: Windows, Linux, OS X.
584. PhpGedView
Working on your family tree? PhpGedView makes it easy to collaborate online with the rest of your family to trace your genealogy. Note that you'll need your own Web server in order to set it up. Operating System: OS Independent.

Geography/GPS

585. Marble
Another KDE app, Marble is a combination atlas/virtual globe that integrates with Wikipedia so that students can learn more about places that interest them. It also includes topographic maps, a satellite view, street maps, earth at night and temperature and precipitation maps, and many teachers find it useful in the classroom. Operating System: Windows, Linux, OS X.
586. WorldWind
WorldWind was originally packaged to be very similar to Google Earth. The link here takes you to an SDK that allows you to incorporate WorldWind into your own apps. It also includes links to several interesting apps that use WorldWind. Operating System: OS Independent.

Graphics Editors/Animation Tools

587. Art of Illusion
While not quite as robust as Maya, this 3D modeling and rendering studio still packs plenty of professional-quality features like subdivision surface based modeling tools, skeleton based animation, and a graphical language for designing procedural textures and materials. Check out the site for examples of artwork created with this open source tool. Operating System: OS Independent.
588. Blender
Designed for professionals, Blender is a complete 3D content creation suite with tools for modeling, shading, animating, rendering, and compositing both still and moving images. A number of motion pictures have been created using this software, and Blender even has an annual film festival to show off users' creations. Operating System: Windows, Linux, OS X.
589. CinePaint
Although it is a raster graphics editor, not a video editor, CinePaint is specifically designed to be used for motion pictures. It offers a similar set of tools as Gimp, but it supports high bit-depth, which allows this app to be used for touching up individual frames of a film. Operating System: Windows, Linux, OS X.
590. Dia
"Roughly inspired by Visio," Dia is perfect for creating org charts, network diagrams, flowcharts, and other simple diagrams. It saves diagrams in XML, or it can export to EPS, SVG, XFIG, WMF and PNG formats. Operating System: Windows, Linux/Unix
591. Gimp
There's no need to spend hundreds of dollars on Photoshop when Gimp offers the same features for free. It includes a full range of features, from photo re-touching capabilities for amateur photographers to advanced layers and photo manipulation tools for professional graphic designers. For the Windows version, see Gimp-win. Operating System: Windows, Linux.
592. Gmsh
This app describes itself as a "3D finite element grid generator with a build-in CAD engine and post-processor." In layman's terms, it's a simple program for designing three-dimensional objects that offers some capabilities of a 3D graphics tool and some capabilities of a CAD tool. Operating System: Windows, Linux.
593. Gnu Paint
Also known as GPaint, Gnu Paint offers a basic set of graphic creation tools, including polygon shapes, ovals, freehand drawing tools, and fill and shadow features. It's essentially the same as Windows Paint, but it supports only the Linux Gnome desktop. Operating System: Linux.
594. GrafX2
Originally created for DOS systems, this app traces its inspiration to programs like Amiga's Deluxe Paint and Brilliance. This updated open source version has been ported for multiple operating systems, but it's still best at creating old-school 256-color graphics. Operating System: Windows, Linux, OS X.
595. gSculpt
A fork of Wings 3D, gSculpt provides all the tools found in Wings 3D, plus a few additional improvements designed to improve workflow and reduce the time required for creating new graphics. In addition to the documentation available on the site, one gSculpt users has set up a blog with extensive tutorials for those new to 3D graphics. Operating System: Windows, Linux.
596. ImageJ
Developed at the National Institutes of Health, this Java-based image manipulation program was intended to for use by doctors and scientists for use in analyzing images from clinical or laboratory settings. However, it can be used to modify many other types of images and artwork as well. Operating System: OS Independent.
597. Inkscape
Much like Illustrator and CorelDraw, Inkscape allows you to create, edit and save vector graphics. It provides a whole host of advanced features in a streamlined, intuitive interface. The website also offers lots of support and documentation, as well as a library of free clip art you can use in your creations. Operating System: Windows, Linux, OS X.
598. JPatch
This Java-based tool offers full modeling capabilities, but only basic animation capabilities. Sample work created with the app can be seen on the site. Operating System: OS Independent.
599. K-3D
Boasting that it is "easy, powerful, flexible and free," K-3D offers powerful 3D modeling and animation capabilities with an intuitive interface. The site offers plenty of help for new artists, including extensive tutorials. Operating System: Windows, Linux, OS X.
600. KolourPaint
This paint app for the KDE interface aims to be easier to use than Gimp with a better feature set than GPaint or Windows Paint. The site includes a helpful product comparison page that highlights some of the similarities and differences between the various painting programs available. Operating System: Linux.
601. Krita
KDE's painting app can help you edit existing photography or art or create new digital artwork of your own. The interface is designed to mimic real world art supplies and painting tools. Operating System: Windows, Linux.
602. LaTeXDraw
This simple drawing program creates images for use in documents created with LaTeX. It's best for mathematical or scientific images, charts, diagrams, etc. Operating System: OS Independent.
603. Leonardo Sketch
Leonardo describes itself as "named after the 15th century painter, but aimed for the 21st century user." It's a fairly new project, but offers a good list of basic features for vector graphics creation and editing. Operating System: Windows, Linux, OS X.
604. Luminance HDR
This project provides a workflow for high dynamic range (HDR) images. It supports multiple file formats, including raw formats, and it includes helpful wizards that walk users through common tasks. Operating System: Windows, Linux, OS X.
605. Misfit Model 3D
Although it's no longer in active development, you can still download and use this 3D modeling tool. Features include multi-level undo, skeletal animations, simple texturing and command-line batch processing. Operating System: Windows, Linux, OS X.
606. MyPaint
Designed for use with pressure sensitive graphic tablets, MyPaint is a fast powerful painting program. The interface disappears when not in use so that you can focus on your artwork. Operating System: Windows, Linux.


607. Paintbrush
Reminiscent of the old MacPaint software, Paintbrush offers Mac users a simple way to create basic images quickly. It supports multiple graphic file formats and includes tools like airbrush, rounded rectangle, eyedropper, zoom and a text tool. Operating System: OS X.
608. Pencil
If you'd like to try your hand at old-school hand-drawn animation, give Pencil a try. It offers an easy-to-use interface, and it supports both bitmap and vector graphics. Operating System: Windows, Linux, OS X.
609. Pixelitor
This Java-based photo editor offers more than 70 image filters and color adjustments, some of which aren't offered by any other tool. However, documentation for this project is a little light, so you'll need to have some experience with other photo editors in order to use it. Operating System: OS Independent
610. Pinta
Modeled after the freeware Paint.Net, Pinta offers advanced drawing tools and more than 35 adjustments and effects for manipulating your photos. Features include unlimited layers, full undo history and more. Operating System: Windows.
611. Seashore
Based on The Gimp, Seashore is a Mac-only graphics and photo editor designed to meet the needs of average users. It offers features like gradients, textures, anti-aliasing for both text and brush strokes, multiple layers and alpha channel editing. Operating System: OS X
612. sK1
Developed as a replacement for Illustrator and CorelDRAW, sK1 offers professional pre-press features, such as CMYK color separations, ICC color management and press-ready PDF output. It currently works on Linux only, but the project owner plan to port it to Windows and OS X. Operating System: Linux.
613. svg-edit
This Java-based graphics editor will run in any browser. It offers more than enough features for amateur designers and illustrators, and it's been incorporated into many other open source projects. Operating System: OS Independent.
614. Synfig Studio
This 2D animation tool aims to make it possible to create professional-quality animation with fewer people and resources. It supports both vector and bitmap artwork. Operating System: Windows, Linux, OS X.
615. Tux Paint
Created for the younger set (primarily preschoolers and kindergarteners), Tux Paint helps kids create their own digital artwork. It offers basic drawing tools, plus fun stamps and special effects like sparkle, drip, rainbow and more. Operating System: Windows, Linux, OS X.
616. Wings 3D
Wings 3D creates still graphics, but not animation. Designed to be both powerful and easy to use, it offers a wide range of modeling tools, a customizable interface, support for lights and materials, and a built-in AutoUV mapping facility. Operating System: Windows, Linux, OS X.
617. Xara Xtreme for Linux
Based on the commercial Windows software by the same name, Xara Xtreme for Linus offers exceptional speed for a graphics editor. It also boasts an uncluttered interface and a well-developed library of documentation and support materials. Operating System: Linux, OS X.

Human Resource Management (HRM)

618. Open Applicant
Rather than a complete HR management tool, this app is specifically designed to assist with the hiring process. Besides the open source version, the company also offers a hosted version and commercial support. Operating System: OS Independent.
619. Orange HRM
Claiming more than a million users, OrganeHRM considers itself "the world’s most popular Open Source Human Resource Management Software (HRMS)." It also comes in a "Live" SaaS version that takes just 15 minutes to set up. Operating System: Windows, Linux, OS X.
620. WaypointHR
Similar to Orange, WaypointHR tracks personnel information, attendance and leave, contract details, discipline, performance reviews and more. It also comes in a hosted, on-demand version. Operating System: OS Independent.

Instant Messaging

621. Adium
Very similar to Pidgin (see below), this Mac-only software allows users to connect to multiple networks at once, including AIM, MSN, Jabber, Yahoo, and others. It offers a tabbed interface, and it integrates with your Address Book. Operating System: OS X.
622. aMSN
Designed to replace MSN Messenger (now known as Windows Live Messenger), aMSN is a skinnable client that works with Microsoft's IM network only. Noteworthy features include offline messaging, voice clips, custom emoticons, group support, multi-language support, webcam support, tabbed windows, display pictures and more. Operating System: Windows, Linux, OS X.
623. Kopete
KDE's IM client supports AIM, ICQ, Windows Live Messenger, Yahoo, Jabber, Gadu-Gadu, Novell GroupWise Messenger and other networks. It also offers tools for archiving and encryption and a unique notification system that only lets "important" message through. Operating System: Linux.
624. Miranda IM
Small and fast, Miranda is very light on system resources. Like many of the other IM clients on our list, it supports multiple networks, including AIM, Facebook, ICQ, IRC, Yahoo and others. Operating System: Windows.
625. Pidgin
This very popular open source IM clients connects with up to 16 different chat networks simultaneously. It supports file transfers, away messages, buddy icons, custom emoticons and typing notifications, and it has a large library of plug-ins that extend its capabilities further. Operating System: Windows, Linux/Unix
626. Psi
Psi is an open-source IM client for the Jabber network, which includes GoogleTalk, LiveJournal, and a number of international networks. It’s completely customizable and supports about 20 different languages. Operating System: Windows, Linux, OS X.

Interior Design

627. Sweet Home 3D
Determined to spruce up your home this year? This app helps you create 2D and 3D layouts of your rooms, complete with a preview of how the finished product will look. Operating System: Windows, Linux, OS X.

IT Inventory Management

628. GLPI
Many users deploy OCS and GLPI together. OCS finds the resources connected to the network, and GLPI creates a database to help administrators track and manage those assets. Operating System: OS Independent.
629. OCS Inventory NG
Find out what hardware is connected to your network and how it is being used. OCS also includes a deployment system for distributing software and scripts across your network. Operating System: OS Independent.

Jewelry

630. iNecklace
This necklace for Mac fans slowly pulses with light. You can buy it premade or download the open source schematics from GitHub to make it yourself. Operating System: N/A

Library

631. LibLime Koha
Koha humbly describes itself as "the most functionally advanced open source ILS on the market today." A variety of paid services, including hosting, support, implementation and consulting are also available on the site. Operating System: OS Independent.
632. OpenBiblio
This automated library system includes online public access catalog (OPAC), circulation, cataloging, and staff administration functionality. It's not as full-featured as some of the other library apps, but it gets the job done, and the site has lots of documentation. Operating System: OS Independent.
633. VuFind
Designed and developed "by libraries for libraries," VuFind aims to make searching your library's catalog easy and intuitive. Key features include modular design, faceted results, "more like this" suggestions, author biographies and more. Operating System: OS Independent.

Linux Desktop Environments

634. Gnome
One of the two most popular Linux desktop environments, Gnome is the default desktop for Fedora, Ubuntu, and several other distributions. It's best known for being easy to use. Operating System: Linux.
635. KDE Plasma Desktop
The second of the two most popular Linux desktop environments, KDE has a reputation for being "prettier" than some of the other desktop environments and feels very similar to Windows and OSX. The KDE community is one of the largest open source communities, so plenty of help is available for new (or experienced) users. Operating System: Linux.
636. LXDE
The "Lightweight X Desktop Environment" claims it has a "beautiful interface," but if truth be told, it's much more concerned about speed than looks. Because it uses so few computing resources, it's a good choice for netbooks and cloud-computing environments. Operating System: Linux.
637. Xfce
Another lightweight option, Xfce also offers very fast performance and doesn't make any claims about its beauty. It offers a modular design, so users can install just the components they choose in order to create a completely customized desktop experience. Operating System: Linux.

Log File Monitoring and Analysis

638. Analog
The "most popular logfile analyser in the world," Analog is an ultra-fast scalable log analysis tool for use with Web servers. Use it alone or with Report Magic to generate prettier charts and graphs. Operating System: Windows, Linux, OS X.
639. AWStats
This free log file analysis tool creates graphs from Web, streaming, ftp or mail server statistics. Check out the helpful comparison chart to see how its feature stack up against other open source and commercial applications. Operating System: Windows, Linux, OS X.
640. BASE
The "Basic Analysis and Security Engine," or BASE, use a Web-based interface to analyze alerts from Snort IDS. Features include role-based user authentication and Web-based setup. Operating System: OS Independent.
641. IPtables Log Analyzer
This app makes it easier to understand the log files from your Shorewall, or SUSE Firewall, or Netfilter-based firewall logs. It organizes rejected, acepted, masqueraded packets, etc. into an attractive HTML page. Operating System: Linux.
642. Snare
At this site, you'll find numerous open source Snare agents designed to analyze log files from a security perspective. InterSect Alliance, the organization behind the Snare agents, also offers a commercial server that incorporates the open source tools. Operating System: Windows, Linux, OS X, others.
643. Webalizer
This speedy Web log file analyzer claims to be able to process a log file with 2 million hits in 30 seconds. It supports both IPv4 and IPv6, and it is available in dozens of languages. Operating System: Windows, Linux, OS X.

Logic/Debate

644. Argumentative
Similar to mind mapping software, Argumentative helps you create an "argument map" that outlines the premises of an argument in a visual way. It's particularly helpful for projects with a lot of writing – like creating a book, website, software documentation, etc. Operating System: Windows.

Mail Servers

645. Citadel
Citadel is a mail server that claims a reputation for being "easy to install, easy to use, easy to live with." The link above provides information about using Citadel in the cloud as a hosted service, but you can also download and deploy it on your own servers. Operating System: Linux.
646. Exim
This MTA was developed at the University of Cambridge and is still widely used in the UK. It's best for servers that are unlikely to have large volumes of mail because it doesn't have a central queue manager. Operating System: Linux, Unix.
647. Postfix
Originally developed by IBM Research, Postfix is a secure mail transfer agent that is very similar to Sendmail (see below). It's fairly fast and can handle a large volume of mail. Operating System: Linux, Unix, OS X, Solaris.
648. Scalix
Aimed at hosting providers and ISPs as well as enterprises and small businesses, Scalix offers an alternative to Microsoft Exchange servers for group e-mail and calendaring. It comes in numerous flavors, including the community, enterprise, small business and hosting editions. Operating System: Linux.
649. Sendmail
While it's not as widely used as it once was, Sendmail continues to be a very popular mail transfer agent. Newer features include support for filters, authentication and external database look-ups. Operating System: Linux.
650. SOGo
SOGo is a groupware server that allows users to access e-mail and shared calendar data via the Web, a BlackBerry device, or an e-mail client like Thunderbird. The latest version adds native Outlook support. Operating System: OS Independent.
651. Zimbra
Zimbra's open source edition provides an alternative to Microsoft Exchange, with e-mail, shared calendar, contact and document management capabilities that can be accessed from a variety of desktop clients. The company also offers a free desktop client of its own, plus paid network or appliance versions. Operating System: Linux, Unix, OS X.

Mapping

652. OpenLayers
This alternative to Google Maps and Bing Maps provides free APIs that can put dynamic, JavaScript-based maps on any website. It's sponsored by the Open Source Geospatial Foundation. Operating System: OS Independent.

Math

653. Apophysis
If you're a math geek, you probably know what fractal flames are. If not, it's probably enough to know that this app lets you create and edit very strange algorithmically generated images. Operating System: Windows.
654. Dr. Geo
The award-winning Dr. Geo helps both elementary (age 10 and up) and more advanced students learn basic geometric principles by interacting with geometric shapes. Check out the video on the website to see it in action. Operating System: Windows, Linux, OS X.
655. Genius
Like Sage and Mathematica, Genius solves a wide of math problems, including calculus, statistics, trigonometric functions, modular arithmetic and more. It can also generate 2D and 3D graphs and output to TeX documents. Operating System: Linux, OS X.
656. GeoGebra
GeoGebra combines tools for learning dynamic geometry, algebra and calculus. It offers an intuitive GUI and a video tutorial which make it a little more user friendly than some of the similar math apps. Operating System: OS Independent
657. gnuplot
If you're comfortable working from the command line, you can use gnuplot to create 2D and 3D graphs of mathematical functions. Extensive help is available on the website, and there's even a book on Gnuplot that you can buy. Operating System: Windows, Linux, Unix, OS X, and others.
658. GraphCalc
Why buy a handheld graphing calculator, when GraphCalc will do all the same things (and more) for free. According to the website, "GraphCalc can be your first, last, and only line of offense against the mathematics that threaten to push you over the brink of insanity. It slices, dices, shreds and purees functions that leave other calculators wondering what hit them." Operating System: Windows, Linux.
659. Kig
This KDE app for geometry students and teacher makes it easy to draw and explore geometric shapes. It can also import files from Dr. Geo and Cabri. (Note that in order to use Kig on Windows, you'll have to download KDE for Windows.) Operating System: Windows, Linux.
660. Mandelbulber
If you're geeky enough to know what a Mandelbulb is, you might enjoy this app which renders 3D fractals. More information about the app can also be found on the FractalForums site. Operating System: Windows, Linux.
661. Maxima
This "computer algebra system," handles differentiation, integration, Taylor series, Laplace transforms, ordinary differential equations, systems of linear equations, polynomials, and sets, lists, vectors, matrices, tensors, and more. It also creates 2D and 3D graphs of mathematical functions. Operating System: Windows, Linux, OS X.
662. Sage
Built from 100 different open source packages, Sage can perform a wide variety of mathematical operations from basic algebra and calculus to very advanced number theory, cryptography, exact linear algebra and more. To get the most out of its features, you'll need to be comfortable working from the command line and know the Python programming language. Operating System: Windows, Linux, OS X.
663. Scilab
Another good replacement for MATLAB, Scilab can perform hundreds of mathematical functions as well as generating 2D and 3D graphs. Commercial services and support are available through Scilab Enterprises. Operating System: Linux, OS X.
664. TTCalc
If you need to work with numbers that are too big for the standard Windows calculator to handle, TTCalc is the solution. It includes most arithmetic and trigonometric functions, and it's accurate to 306 valid decimal digits. Operating System: Windows.
665. Ultimate Calc
This scientific and graphing calculator solves complex equations and offers an easy-to-use interface. It supports plug-ins and scripts to extend its capabilities. Operating System: Windows.

Microfinance

666. Mifos
This Web-based management information system (MIS) aims to help microfinance institutions streamline their operation. It offers portfolio and transaction management, on-the-fly financial product creation, in-depth client management, integrated social performance measurement, and a reporting engine. Operating System: OS Independent.
667. Octopus
Rated as "one of the most user-friendly solution with highly ergonomic windows display" by the World Bank/CGAP, Octopus offers a robust, secure MIS for microfinance organizations. It's available both in a free community version or a supported professional edition. Operating System: Windows.,?p>

Middleware

668. JBoss
Used by companies like Priceline.com, GEICO and NYSE Euronext, RedHat's JBoss line of middleware includes an application platform, Web platform, messaging, SOA platform, business rules management system and much more. All of the tools are available in open source and enterprise versions. Operating System: Linux.

Mind Mapper

669. FreeMind
This open source mind mapper program makes it easy to display the links between ideas. It's great for making outlines, brainstorming, making notes and more. Operating System: OS Independent.
670. FreePlane
This fork of FreeMind (see above) has been racking up thousands of downloads. It offers traditional mind-mapping features, plus some advanced functionality. Operating System: Windows, Linux, OS X.
671. The Guide
This tool lets you organize your notes in a hierarchical, tree-based format. It's similar to a mind mapper, but not as complex. Operating System: Windows.
672. XMind
Ideal for brainstorming and planning sessions, XMind makes it easy to see the connections between ideas—it's sort of like a white board for your computer. In addition to the free version, it comes in a pro version for individuals and an enterprise version for businesses. Operating System: Windows, Linux, OS X.

Mobility Tools

673. Akamai Mobitest
Want to know how quickly your website will load on an iPhone 4 in Cambridge, Mass.? This testing tool lets you check website performance on various smartphones in different locations. You can use it for free directly from the website or download the source code and run it from your own server. Operating System: OS Independent.
674. F-Droid
This collection makes it easy to download and stay up to date with dozens of open source apps for Android. It provides details about all of the versions of the apps that are available and allows you to choose which apps you use. Operating System: Android.
675. ForgeRock
ForgeRock offers a platform of mobile identity management solutions for enterprises. The tools are also available on a subscription basis, which adds support and real-time access to software updates. Operating System: Linux.
676. Funambol
The open source Funambol software is a client-server solution for syncing contacts, calendars, tasks and notes. The company also offers commercial, cloud-based syncing solutions for mobile operators and personal use. Operating System: Android, iOS, Windows Mobile, Symbian.
677. Knappsack
This mobile application management platform offers tools for securely uploading, managing and sharing apps among a group of users. The open source version is free, and the company also offers both free and paid hosted versions. Operating System: Windows, Linux, OS X, iOS, Android.
678. OpenMobster
OpenMobster offers an open source mobile backed-as-a-service for enterprises and includes capabilities like syncing, HTML5 hybrid app development tools(based on PhoneGap) and push notifications. Fee-based consulting and integration services are also available. Operating System: Windows, Linux, OS X.
679. mAdserve
The self-proclaimed "world's most powerful open source ad server," mAdserve offers tools for managing ad campaigns across 30 different ad networks. Premium services are also available. Operating System: Windows, Linux, OS X, iOS, Android.
680. QuincyKit
This helpful kit collects and reports crash data and user feedback on your mobile apps. It's also available as a hosted service from HockeyApp. Operating System: OS X, iOS.

Modeling

681. ArgoUML
The self-proclaimed "leading open source UML modeling tool" supports all standard UML 1.4 diagrams and comes in 10 different languages. Because it's based on Java, it runs on any platform, and it can export diagrams in six different file formats. Operating System: OS Independent.
682. StarUML
Designed as an alternative to Rational Rose and other commercial modeling tools, StarUML supports both the latest UML standards and Model Driven Architecture (MDA). It's very user-friendly and features a plug-in architecture. Operating System: Windows.
683. Modelio
The code behind Modelio has actually been in development for more than 20 years, but parent company Modeliosoft just recently released it under an open source license. It offers a UML modeler, BPMN support, Java code generator, and support for XML, HTML and Jython. Operating System: Windows, Linux

Multimedia Tools

684. Ampache
Want to set up your own streaming server? Ampache makes it easy and affordable and allows you to access your music and videos from any Internet-connect device. Operating System: Windows, Linux, OS X.
685. AmpJuke
While most of the other options on our list stream both audio and video files, AmpJuke focuses on music. It also connects to various Web services in order to provide lyrics, album covers and other data related to the songs being played. Operating System: Windows, Linux, OS X.
686. AVStoDVD
This helpful tool can convert various multimedia file types to DVD-ready formats and then burn them to DVDs. It supports multiple tracks and offers some audio and video editing capabilities. Operating System: Windows.
687. Banshee
Banshee can sync your multimedia library with your mobile device, connect with the Amazon store, play podcasts and Internet radio, shuffle smartly and retrieve cover art from the Internet. It also offers optional Last.fm integration, eMusic integration, import from iTunes and other services, and minimode. Operating System: Windows, Linux, OS X, Android, iOS.
688. Burn
For Macs only, this burning tool can create data, audio or video CDs and DVDs. It can also copy discs, even if you only have a single optical drive. Operating System: OS X.
689. CamStudio
Many individuals and organizations need to make demonstration videos on occasion, but commercial screen video capture software can be very expensive. CamStudio can record your system's on-screen and audio activities, plus it offers some basic editing capabilities. Operating System: Windows.
690. Darwin Streaming Server
Based on the same code as the QuickTime Streaming Server, Darwin was also developed by Apple. It can stream live or pre-recorded content using RTP/RTSP protocols. Operating System: Windows, Linux, OS X.
691. Data Crow
If your resolution involved organizing a large collection of CDs, DVDs, books or other stuff, Data Crow can help. This self-proclaimed "ultimate media cataloger" connects to online services to provide detailed data about the items in your library, and it even includes a feature to help you keep track of who borrowed your things. Operating System: OS Independent.
692. DVDStyler
This app aims to make it easy for anyone to create professional-looking DVDs, complete with interactive menus. It includes tools for adding subtitles, mixing multiple audio tracks and creating photo slideshows. Operating System: Windows, Linux, OS X.
693. FFmpeg
More than just an audio and video player, FFmpeg also includes tools for recording, converting and streaming multimedia files. It humbly claims to be "the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created." Operating System: Windows, Linux, OS X.
694. InfraRecorder
This Windows-only CD and DVD burner integrates directly into Windows Explorer. It can create audio, data or mixed-mode discs, and it offers four different methods for erasing rewritable media. Operating System: Windows.
695. kPlaylist
KPlaylist was also designed with music streaming in mind, but it can support both audio and video files. Features include multi-user support with authentication, Flash player support, Shoutcast support, randomizer function, shared playlists and more. Operating System: Windows, Linux.
696. Krut Computer Recorder
Java-based Krut can record screen video from nearly any system. Key features include timer control, the ability to move recording areas, two choices for frame rates and highly accurate audio/video synchronization. Operating System: Windows, Linux OS X.
697. Media Converter
This Mac-only converter supports avi, wmv, mkv, rm, mov and several other file types. A lot of its code is based on the Burn CD burning software (see above). Operating System: OS X.
698. MediaInfo
MediaInfo finds tags and technical data for audio and video files, as well as some text files. It supplies the title, artist, director, number of tracks, and much, much more. Operating System: Windows, Linux, OS X, and others.
699. Media Player Classic Home Cinema
This lightweight, customizable player looks and feels like older version of Windows Media Player. It supports numerous file types, and it has been translated into 23 languages. Operating System: Windows.
700. MediaPortal
Similar to XBMC, Media Portal also supports HTPCs and even turns ordinary PCs into advanced media centers. In addition to playing CDs, DVDs, multimedia files and streaming content, it lets you watch, schedule and record live TV like a TiVo, and it also works with most remote controls. Operating System: Windows.
701. Miro
This very attractive media player works on iOS and Android devices, including the Kindle Fire, as well as desktops. It offers easy import from iTunes, connections to Amazon and Google stores, conversion capabilities, sharing and very fast Torrent downloads. Operating System: Windows, Linux, OS X, Android, iPad.
702. Mplayer
This award-winning player also supports a long list of audio and video file types and codes. The standard edition is a command-line tool for Linux, but variations are available for other operating system, and there are also GUI front-ends available. Operating system: Linux.
703. Subsonic
Subsonic can function as a streaming media server or a local jukebox. With apps available for Android, iPhone, Windows Phone, BlackBerry, Roku, PlayBook and others, it's easy to take your music and movies with your wherever you go. And if you don't have a server of your own, hosting services are also available. Operating System: Windows, Linux, OS X, Android, iOS, Windows Phone, BlackBerry, Roku, others.


704. Totem
The official movie player for the Gnome desktop, Totem boasts features like playlists, full-screen mode, seek, volume control, keyboard navigation and a nautilus properties tab. It also includes a Firefox plug-in for watching movies through your browser. Operating System: Linux.
705. UMPlayer
The "Universal Media Player," UMPlayer includes more than 270 built-in codecs, so it can play nearly every kind of file, including incomplete or damaged files. Advanced features include a skinnable interface, subtitles search and sync, and a YouTube player and recording tool. Operating System: Windows, Linux, OS X.
706. VideoLAN
From the creators of the VLC Media Player, this is another option for setting up an audio/video streaming server. Like the Media Player, it supports a wide array of file formats. Operating System: Windows, Linux, OS X.
707. VLC Media Player
This very popular open source app can play most streaming video and media files, audio CDs, DVDs and more. It comes with a skinnable interface or it can run from the command line, and it supports tags, subtitles and closed captioning. Operating System: Windows, Linux, OS X, others.
708. Webinaria
In addition to downloadable screen capture software, this website also offers the opportunity to share your own creations and view other people's webinars and tutorials. A built-in rating system and discussion capabilities makes the site even more interesting. Operating System: Windows, Linux OS X.
709. Wwidd
Wwidd describes itself as "Del.icio.us for your video collection." It makes it easy to organize, tag and search your video library, and it integrates with VLC for playback. (Note that the source code is available through GitHub. Operating System: Windows, OS X, Linux.
710. XBMC Media Center
This media player was designed to work with home theater PCs (HTPCs). It offers an attractive interface, support for most remote controls, support for most popular audio and video formats, and playlist and slideshow capabilities. Operating System: Windows, Linux, OS X.
711. xine
Xine also plays an impressive list of multimedia formats. It features a skinnable interface, extensible architecture, fast performance, navigation controls, playlists, image snapshots, aspect ratio conversion, full-screen mode and much more. Operating System: OS X, Linux.

Multiple Function Security Solutions

712. ASEF
Short for "Android Security Evaluation Framework," ASEF analyzes Android apps from a security standpoint. It can test multiple apps at once to determine if they include malware or aggressive adware or if they are using excessive amounts of bandwidth. Operating System: Android.
713. Csipsimple
Csipsimple offers secure calling and SIP features for Android devices. Video calling features are currently under development. Operating System: Android.
714. The Guardian Project
This project has developed multiple security-focused Android apps, including Orbot (a version of Tor for secure mobile Web browsing), Orweb (an enhanced browser that supports proxies), Gibberbot (private, secure IM), OscuraCam (private, secure camera app) and Ostel (encrypted phone calls). Operating System: Android.
715. Network Security Toolkit (NST)
Like INSERT, NST includes a whole lot of tools and a complete Linux distribution that fits on a CD-ROM. In this case, you get nearly 100 tools and the Linux copy is based on Fedora. Operating System: OS Independent.
716. Security and Privacy Complete
This app gives you control over a number of system settings and settings for Windows Media Player, Internet Explorer, and Firefox. A handy tooltip feature lets you know what each function does and why you might want to enable or disable it. Operating System: Windows.

Music Education

717. GNU Solfege
You might not have been born with perfect pitch, but you can get better with practice. This app will help you improve your ability to identify and sing intervals, chords, scales and more. Operating System: Windows, Linux, OS X.
718. Impro-Visor
Sometimes you get one really great line or phrase for a song, but just can't get the rest. The Impro-Visor can help you finish your composition by suggesting improvisations and solos built on your theme. (It's also a valuable educational tool for aspiring jazz musicians.) Operating System: Windows, Linux, OS X.
719. LenMus Phonascus
Phonascus is a music theory and aural (ear) training program for musicians of all levels. It includes a wide variety of audio and written exercises, as well as a score editor for composing your own works. Operating System: Windows, Linux, OS X.
720. ScoreDate
First, let's make it clear that this app is not at all about dating—the "score" refers to musical scores. ScoreDate aims to teach anyone the basics of reading music. Operating System: Windows, Linux, OS X.

Network/System Firewalls

721. Devil-Linux
Devil-Linux originated as a hardened version of Linux meant for use as a firewall/router. However, now it can also be used as an application server, as well as a network firewall. Operating System: Linux.
722. Droidwall
As you might guess from the name, Droidwall is a firewall for Android devices. It's based on IPtables and can also help you improve your battery life. Note that this app requires root access. Operating System: Android.
723. FireHOL
FireHOL describes itself as "a language to express firewalling rules." It lets you configure an iptables based firewall using four basic commands. Operating System: Linux.
724. Firestarter
Unlike most of the open-source firewalls, Firestarter can protect a single PC, as well as a network. Best of all, you can probably install it and be up and running in just a couple of minutes. Operating System: Linux.
725. IPCop
Aimed at home or SOHO users, IPCop also helps users configure a system as a Linux firewall for their network. Unlike some of the other Linux firewall options, it features a user-friendly Web-based interface. Operating System: Linux.
726. LEAF
The "Linux Embedded Appliance Framework" (aka LEAF) can be used as an Internet gateway, router, firewall, or wireless access point. This app requires a little more know-how than some of the other choices in the category, but is still a good option. Operating System: Linux.
727. m0n0wall
While most of the firewalls on our list run on Linux, this one runs on BSD. It was designed for appliances, but it can also be used on standard PCs. Operating System: FreeBSD.
728. pfSense
Downloaded more than 1 million times, this m0n0wall fork was designed for use on standard PCs. It functions as a firewall and a router for enterprise networks, small home networks and everything in between. Operating System: FreeBSD.
729. Sentry Firewall
This app can operate as a network firewall, server or IDS node. It boots directly from a CD, making it very easy to set up a firewall quickly. Operating System: Linux.
730. ShellTer
An iptables-based firewall, ShellTer offers quite a bit of customization capability. Features include port forwarding, blacklisting, whitelisting, and more. Operating System: Linux.
731. Shorewall
Another iptables-based firewall, Shorewall can be used on a PC used as a dedicated firewall, a multi-function gateway/router/server or on a standalone GNU/Linux system. It doesn't claim to be the easiest Linux firewall to use, but it does claim to be the most flexible and the most powerful. Operating System: Linux.
732. Smoothwall
You'll find the open source version of this firewall, Smoothwall Express, at Smoothwall.org. At the main corporate site, Smoothwall offers more complete security and Web filtering products that incorporate the open source firewall. Operating System: Linux, Unix.
733. Turtle Firewall
Turtle allows administrators to configure iptables to set up a Linux-based firewall. It includes a Web interface, or you can directly modify XML files. Operating System: Linux.
734. Vuurmuur
Yet another iptables firewall, Vuurmuur boasts a simple-to-learn configuration tool that allows for very complex setups. Features include secure remote administration, traffic shaping and powerful monitoring capabilities. Operating System: Linux.

Network Management

735. CloseTheDoor
This tool allows network and security managers to identify all listening ports for their listening ports for IPv4 and IPv6 networks. It provides information and allows you to shut down remote attacks. Operating System: Windows.
736. OpenNMS
The "world's first open source, enterprise grade network management application platform," OpenNMS has been helping administrators monitor their networks for more than a decade. It's highly customizable and highly scalable, and it offers automated and directed discovery and provisioning, event and notification management, service assurance, and performance measurement capabilities. Operating System: Windows, Linux, OS X, iOS.
737. RANCID
Short for "Really Awesome New Cisco confIg Differ," RANCID discovers and tracks configuration details for routers and other devices. It supports a variety of hardware, including Cisco routers, Juniper routers, Catalyst switches, Foundry switches, Redback NASs, and ADC EZT3 muxes. Operating System: Linux.
738. Zenoss
Zenoss helps IT departments monitor and manage their networks, applications and servers, and it includes support for virtualized and cloud environments. Commercial products based on the open source community version are available through Zenoss, Inc. Operating System: Linux, OS X.

Network Monitoring/Scanning/Intrusion Detection

739. AFICK
Short for "Another File Integrity Checker," AFICK also offers very similar functionality to Tripwire. It quickly scans files and lets you know when data has changed.. Operating System: Windows, Linux.
740. Cacti
Cacti takes information from RRDtool and uses it produce more advanced graphs. It also offers an intuitive interface and some management capabilities. Operating System: Windows, Linux.
741. Ganglia
While most of the tools on our list are designed for run-of-the-mill networks, this tool from the University of California, Berkeley Millennium Project monitors high-performance computing systems such as clusters and grids. It's been around since 2000, and it's currently used on thousands of clusters around the world. Operating System: Linux, others.
742. Kismet
Kismet is a combination wireless network detector, packet sniffer, and IDS. Often used to detect unprotected or hidden networks, it's a valuable tool for checking the security of your wireless network, as well as monitoring network activity. Operating System: Windows, Mac, Linux, Unix, BSD
743. Knocker
This simple TCP security port scanner works on multiple platforms and is easy to use. Operating System: Windows, Linux, Unix.
744. Munin
Named for a Norse god of memory, Munin aims to help network administrators analyze trends and figure out why performance problems occur. It offers a Web interface, easy installation and easy use. Operating System: Linux, OS X.
745. Nagios
The self-described "industry standard in IT infrastructure monitoring," Nagios helps users "achieve instant awareness of IT infrastructure problems," by monitoring servers, switches, applications, and services. The link above will take you to the open source version; enterprise versions can be found at Nagios.com. Operating system: Linux, Unix.
746. NDT
Short for "Network Diagnostic Tool," NDT is a client/server app that offers network performance testing. It can help identify problems such as duplex mismatch conditions on Ethernet/FastEthernet links, incorrectly set TCP buffers in the user’s computer, or problems with the local network infrastructure. Operating System: Linux.
747. Net-SNMP
This set of applications implements SNMP v1, SNMP v2c and SNMP v3 protocols for both IPv4 and IPv6. These are command line tools, so they're not quite as user friendly as some of the other network monitoring applications. Operating System: Windows, Linux.
748. NSAT
Short for "Network Security Analysis Tool," NSAT performs bulk scans for 50 different services and hundreds of vulnerabilities. It provides professional-grade penetration testing and comprehensive auditing. Operating System: Linux, Unix, FreeBSD, OS X.
749. Open Source Tripwire
Back in 2000, Tripwire released an open source version of its network monitoring software, and development on that project has continued since then. Like the commercial version of Tripwire, it alerts administrators when changes occur in specified files on your network. Operating System: Windows, Linux.
750. Opsview
With Opsview, enterprises can monitor their cloud, physical and hybrid infrastructure all from a single tool. It comes in both a free community download or a paid enterprise version, with an optional mobile module and other services available. Operating System: Linux.
751. OSSEC
In addition to file integrity checking, OSSEC also performs log analysis, policy monitoring, rootkit detection and real-time alerting to help prevent and detect intrusions into your network. It's downloaded more than 5,000 times per month and has won numerous awards. Operating System: Windows, Linux.
752. Pandora FMS
This "Flexible Monitoring Solution" can be set up to track anything from network status to website defacement to stock market trends. It generates real-time graphs, sends custom alerts, creates SLA reports and much more. Operating System: Windows, Linux, OS X.
753. RRDTool
RRDtool calls itself "the open source industry standard, high performance data logging and graphing system for time series data." It's been incorporated into numerous other networking tools, including Endian and Cacti Operating System: Windows, Linux.
754. SEC
Although we put this app in the Network Monitoring category, the Simple Event Coordinator (SEC) actually works with many different applications. To use it, you set up a set of rules that specify what actions you want to occur whenever a particular event occurs. Operating System: OS Independent.
755. SniffDet
This tool implements a number of different open-source tests to see if any of the machines in your network are running in promiscuous mode or with a sniffer. Note that some of the documentation for this app is in Portuguese. Operating System: Linux.
756. Snort
With millions of downloads and more than 400,000 registered users, Snort claims to be "the most widely deployed IDS/IPS technology worldwide." Operating System: Windows, Linux OS X.
757. tcpdump
Although it lacks a user-friendly GUI, this command-line tool offers powerful packet analysis capabilities. Not that the same site also features the libpcap library for network traffic capture. Operating System: Linux.
758. WinDump
This is the version you'll need if you want to run tcpdump on Windows. It also includes the WinPcap library and drivers for traffic capture. Operating System: Windows.
759. Wireshark
The "world's foremost network protocol analyzer," Wireshark allows administrators to capture network traffic and browse it interactively. Features include deep inspection of hundreds of protocols, live capture and offline analysis, powerful display filters, VoIP analysis and much more. Operating System: Windows, Linux, OS X.
760. WinDump
Managed by Riverbed Technology (which also owns Wireshark), WinDump ports tcpdump to the Windows platform. This site also includes the WinPcap library and drivers for traffic capture. Operating System: Windows.
761. Zabbix
Calling itself "the enterprise-class monitoring solution for everyone," Zabbix can monitor up to 100,000 networked devices for 1 million metrics, performing thousands of checks per second. It's completely open source, but Zabbix does offer paid support and other services. Operating System: Windows (agent only), Linux, OS X.

Network Simulation

762. GNS3
This tool allows network engineers and administrators to simulate complex systems in order to design networks or to study for certification exams. There's a tutorial and extensive documentation on the site to help new users learn how to use the application. Operating System: Windows, Linux, OS X.

Office Productivity

763. AbiWord
Similar to older versions of Word, AbiWord reads and writes most word processing document formats, including OpenOffice and Word formats, and it offers some advanced layout and mail merge capabilities. The latest version adds a lot of collaboration capabilities, and it integrates tightly with the free AbiCollab.net service which allows users to store and edit documents in the cloud. Operating System: Windows, Linux, OS X, others
764. Edhita
Edhita is a simple text editor for iPad only. It doesn't have advanced word processing capabilities or the highlighting features you would see in a good code editor, but it does a solid job of text editing. Operating System: iPad.
765. Gnumeric
Gnumeric describes itself as "free, fast and accurate," and an outside reviewer has praised it as more accurate than its commercial competitors. It opens files from most other popular spreadsheet programs (including Excel and Lotus), and it offers 583 different functions, including 194 you can only find in Gnumeric. Operating System: Windows, Linux.
766. KOffice
KDE's office productivity suite includes the KWord word processor, KCells spreadsheet, Showcase presentations, Kivio diagrams and flowcharts and the Artwork vector drawing program. The interfaces are intuitive but significantly different than Microsoft Office's interfaces, so they take a little getting used to. Operating System: Windows, Linux.
767. LibreOffice
When Oracle took over OpenOffice.org (see below), a group started this fork to continue community development. It offers all the same great features and capabilities of OpenOffice.org, plus a few improvements all its own. Operating System: Windows, Linux, OS X.
768. LyX
LyX lets you format your document based on its structure. You mark text as a title, subtitle, etc., and then worry about the formatting later. It makes it easier to ensure continuity throughout long documents and deal with some of the difficulty of creating a document on a netbook or other device with a very small screen. Operating System: Linux, Unix, Windows, OS X.
769. NeoOffice
Also very similar to OpenOffice.org (see below), NeoOffice offers an interface and features tailored for Mac users. The latest update supports Mac's versions, full-screen mode and resume features. Operating System: OS X.
770. OI Notepad
This note-taking app allows users to create, edit and share notes with other users. It also has an extension that allows users to add audio to the text. Operating System: Android.
771. OpenOffice.org
Now an Apache project, OpenOffice.org includes Microsoft-compatible word processing, spreadsheets, presentations, graphics and database software. At twenty years old, it's a mature project with all of the advanced capabilities and stability that home or business users need. Operating System: Windows, Linux, OS X, others
772. OpenOffice Document Reader
This helpful app lets you view and read OpenOffice and LibreOffice documents from Android devices. It doesn't have editing capabilities, but does support spreadsheets. Operating System: Android.
773. Sparklines for Excel
Sparklines doesn't replace Excel--it extends its functionality with new functions that create simple, intense graphics known as Sparklines. See the user manuals for examples of the type of charts and graphs it can create. Operating System: Windows.
774. Text Edit
This simple text editor lets you write, edit and save short documents on your Android phone. You can select the font size and type, change colors and e-mail the documents you create. Operating System: Android.
775. VuDroid
With VuDroid, users can view PDF and DJVU documents from their Android devices. Features include zoom by slider drag, fast orientation change and more. Operating System: Android.
776. WriteType
If your children use your home office PC to write school reports (and of course, they do), you may want to check out WriteType. It's a word processor with special features for young students, like word completion, read back, highlighting, grammar and spell check, and more. Operating System: Windows, Linux.
777. X-OOo4Kids
OpenOffice.org for Kids offers a simplified version of OpenOffice.org designed to be used by those aged 7-12. The advantage of this version, even if you're not a kid, is that it loads and runs very quickly and requires very little space on your portable drive. Operating System: Windows.

Online Data Storage

778. FTPbox
FTPbox makes it easy to sync your files across multiple devices or share your files with others. It can use SFTP or FTPS protocol for secure file transmission. Operating System: Windows.
779. iFolder
Built with syncing, backup and file sharing in mind, iFolder works much like DropBox. Simple save your files locally as usually, and iFolder will update them on your server and the other workstations you use. It was originally founded by Novell and is now managed by Kablink. Operating System: Linux, OS X.
780. SparkleShare
Because it was built for developers, this online storage solution includes version control software (Git, to be specific). It automatically syncs all files with the hosts, and it allows you to set up multiple projects with different hosts. Operating System: Windows, Linux, OS X.
781. Syncany
Syncany works with commercial online storage solutions like Amazon S3 or Google Storage, adding better synchronization functionality (akin to DropBox) and improved security. It encrypts files locally, making it more feasible to use an online service to store sensitive data. Operating System: Linux (Windows and OS X versions planned.)

Online education/eLearning

782. ATutor
This standards-based course management system has been used by many educational institutions to create award-winning websites. It was designed with an emphasis on accessibility and is very easy to use. Operating System: OS Independent.
783. Canvas
Instructure's Canvas learning management system helps teachers and parents track the academic progress of K-12 students. The link above connects with the commercial and cloud versions, but you can download the source code from GitHub. Operating System: Linux, Unix, OS X.
784. Chamilo
After just 18 months in existence, this open source learning management system racked up half a million users. The website includes a helpful demo so that you can try the software out before downloading. Operating System: Windows, Linux, Unix, OS X.
785. Claroline
Claroline has a very international community, with users in 93 different countries. It allows instructors to publish documents in nearly any format, and it's designed to foster collaborative learning. Operating System: Windows, Linux, OS X.
786. CoFFEE
Short for "Collaborative Face-to-Face Educational Environment," CoFFEE aims to help groups of students work together on problem-solving activities. It includes a set of tools for collaboration, shared work, individual work, and communication that can be managed and monitored by the instructor. Operating System: OS Independent.
787. eFront
Designed to be easy-to-use and visually appealing, eFront offers a very polished interface and all of the capabilities you would expect in an online course management system. In addition to the free version, it's also available in commercially supported versions with special features for educational institutions or enterprises. Operating System: Windows, Linux.
788. ILIAS
Another international favorite, the ILIAS website includes links to organizations using ILIAS in 20 different countries. It's standards-based and includes features like webcasting, tests and assessments, support for multiple authentication methods, a SOAP interface, online surveys, integration with Google maps and more. Operating System: Windows, Linux.
789. Moodle
One of the most popular online course management systems, Moodle currently has more than 43 million users accessing course content on more than 53,000 sites. It includes modules for wikis, forums, databases, assessments, document delivery and more. Operating System: Windows, Linux, OS X.
790. Sakai
Originally sponsored by Stanford, the University of Michigan, Indiana University and MIT, the Sakai CLE (collaboration and learning environment) is now used by more than 350 institutions. It is a combination learning management system, research collaboration system and ePortfolio solution. The source code is available for free, or you can purchase access to a hosted version through Sakai's commercial affiliates. Operating System: OS Independent.

OpenCourseWare

791. eduCommons
A number of universities around the world aren't just utilizing open-source software, they're "open-sourcing" the content of their courses by making it freely available online. EduCommons is a content management system designed for these OpenCourseWare projects. Operating System: OS Independent.
792. OpenCourseWare
The Open Courseware Consortium offers links to hundreds of "open source" university classes. Study nearly any subject you want with materials from institutions like MIT, Johns Hopkins, University of Michigan, University of California and dozens of others. Operating System: OS Independent.

Operating Systems and Kernel Modifications

793. aLinux
Formerly known as Peanut Linux, aLinux is designed to be both fast and multimedia-friendly. Its graphic interface provides an easy transition for former Windows users.
794. andLinux
A good option for Windows users who would like to try out some Linux applications, andLinux runs Linux applications on Windows 2000, 2003, XP, Vista, or 7 machines.
795. Android
Currently the most popular mobile operating system available, Google's Android is an open source project. Numerous manufacturers, including Samsung, LG, HTC and Motorola, offer Android-based smartphones and tablets.
796. ArchBang
This Arch variant uses the Openbox Window Manager. It's fast and lightweight, and offers many of the same customization capabilities as Arch.
797. Arch Linux
Arch is definitely not for Linux newbies, but its simple design makes it a favorite among long-time Linux users who are comfortable with the command line. By default, it installs a minimal base system but provides plenty of options for customization.
798. Bodhi Linux
Bodhi puts the focus on user choice and minimalism. It uses the Enlightenment desktop environment and a "software store" that makes it easy to find and install the open source applications you want to use.
799. CentOS
Short for "Community ENTerprise Operating System," CentOS is based primarily on Red Hat code. It's the most popular version of Linux for Web servers, accounting for about 30 percent of Linux-based Web servers.
800. Chakra
Based on ArchLinux, Chakra uses the KDE desktop. It uses a unique "bundles" system to let users access Gtk apps without actually installing them on the system.
801. Chrome OS/Chromium OS
Google's operating system goes by two names, which can make things confusing. Officially, "Chromium OS" is the open source version used primarily by developers, and "Chrome OS" is the name for the version of the operating system Google plans to include on netbooks for end users. And just to make things even more confusing, both projects share a name with Google's Web browser. For now, Chromium OS (the only version available for download) is really only suitable for advanced users and developers.
802. CrunchBang
Sometimes written #!, CrunchBang is a lightweight distribution based on Debian. It's a popular option for netbooks like the Asus Eee.
803. Debian
The basis for Ubuntu and several other Linux distributions, Debian is popular with hard-core open source enthusiasts. It includes more than 29,000 pre-compiled software packages. Operating System: Linux, FreeBSD


804. DSL
At just 50MB, this distro lives up to its name – Damn Small Linux (DSL). As you might expect, it's very fast and runs on older PCs, as well as fitting onto small USB drives and business card CDs.
805. EasyPeasy
Designed as a cloud OS, EasyPeasy is a very lean version of Linux that's ideal for netbooks or other devices used primarily to access the Internet. It offers low power consumption, social networking integration and more.
806. Edubuntu
This version of Ubuntu Linux was specifically designed for use in schools. It includes many of the education-related applications on this list, including the KDE education apps, GCompris and School Tool.
807. eyeOS
Built for cloud computing, eyeOS makes an entire desktop, including office productivity applications, accessible from a Web browser. It also serves as a platform for creating new Web apps.
808. Fedora
If you'd like to try Red Hat Linux without paying the subscription fees, Fedora is a free community project based on the same code. It comes in several "spins" that are customized for the needs of gamers, engineers, designers or security professionals.
809. Firefox OS
Made by Mozilla, the group behind the Firefox browser, the Firefox OS promises to incorporate new Web standards and "free mobile platforms from the encumbrances of the rules and restrictions of existing proprietary platforms." The operating system isn't available on any handsets yet, but Mozilla has released an emulator that lets you try out the OS from a Web browser.
810. Frugalware
Like Slackware, Frugalware is best for users who aren't afraid of the command line, although it does have some graphical tools. It's designed with simplicity in mind.
811. Fusion
Fusion describes itself as a "pimp my ride" version of Fedora. It offers good multimedia support and an interesting look and feel. It's best for more advanced Linux users who are looking for cutting edge, experimental applications.
812. Gentoo
First released in 2002, Gentoo boasts "extreme configurability, performance and a top-notch user and developer community." It uses the Portage package management system, which currently includes more than 10,000 different applications.
813. GoboLinux
GoboLinux's claim to fame is that is doesn't use the Unix Filesystem Hierarchy Standard, but instead stores each program in its own sub-directory in the Program directory. That means that it's a little bit easier to use for Linux newbies or experienced Linux users who like to install applications from the original source code.
814. gNewSense
Supported by the Free Software Foundation, gNewSense is based on Ubuntu with a few changes, like the removal of non-free firmware. The name started as a pun on "Gnu" and "nuisance" and is pronounced guh-NEW-sense.
815. Illumos
When Oracle discontinued development of OpenSolaris, some of the developers who had been working on the project forked it to the Illumos project, where development and bug fixes continue. If you are looking for a free version of Solaris, this is the option for you. To download the software, visit the OpenIndiana page above.
816. Joli OS
Joli OS describes itself as "the ultimate desktop for the cloud." It aims to bring new life to old PCs with an extremely simple-to-use version of Linux that comes with 1,500 apps. It's used on more than 750,000 systems.
817. Knoppix
Suitable for beginners, Knoppix is an easy-to-use distribution based on Debian. It runs from a live CD, and if you don't want to go to the trouble to burn your own (or you don't know how), you can buy one for less than two bucks.
818. Kubuntu
As the name suggests, Kubuntu is a Ubuntu fork that uses the KDE desktop instead of the Unity desktop. It's an excellent choice for new Linux users.
819. Linux Mint
The fourth most popular home operating system, Linux Mint offers great ease of use for those new to Linux. It's based on Debian and Ubuntu and comes with a library of 30,000 free software applications
820. Lubuntu
Lubuntu is lighter, faster, and uses less energy than its namesake, making it a good choice for mobile devices, including netbooks. It uses the LXDE desktop instead of the Unity desktop.
821. Mageia
In 2010, a group of Mandriva developers began this community-driven fork following some ownership changes at the company that owns the Mandriva project. It's currently in beta, but the first official release is due in a few weeks.
822. Mandriva
Owned by a publicly traded French company, Mandriva claims more than 3 million users worldwide. It's available in several editions, desktop and server, paid and unpaid, including a unique Instant On version that boots up with minimal functionality in less than 10 seconds
823. MEPIS
Debian-based MEPIS (also known as simplyMEPIS) is particularly popular with those new to Linux. It's available in free downloadable versions, or you can purchase a CD which makes trying or installing the software easy.
824. Musix GNU+Linux
As its name implies, Musix is geared for multi-media enthusiasts, particularly those involved in audio editing. It can boot from a live disk or be installed on a system.
825. openSUSE
A free, community version of Novell's SUSE, openSUSE describes itself as "Linux for open minds." It comes in desktop and server versions, and it includes 1,000 applications.
826. PCLinuxOS
Designed to be easy to use, PCLinuxOS can be run on a Live CD or installed on a desktop or laptop. It supports seven different desktops, including KDE, Gnome, Enlightenment, XFCE, LXDE, and others.
827. Peppermint
Another Linux distribution designed to be cloud- and Web-centric, Peppermint boasts that it is "sleek, user friendly and insanely fast." With a very small footprint, it loads and shuts down very quickly, and you don't have to be an uber-geek to use it.
828. Pinguy OS
Built for new Linux users who need something that's even easier to use than Ubuntu, Pinguy OS makes it easy to find and use the programs average users need most often. It's also available in a DVD version for $5.99.
829. Puppy Linux
Small and fast, Puppy is designed to be installed on a USB thumb drive that users can take with them and boot from any PC. It takes up about 100 MB, boots in less than a minute, and runs from RAM for maximum speed.
830. Red Hat
Probably the best known flavor of Linux, Red Hat comes in desktop and server versions that are suitable for enterprise users. Red Hat's software requires a paid support contract, or you can download the community version for free from Fedora.
831. Sabayon
Named after an Italian dessert, Sabayon aims to be the "cutest" Linux distribution — "as easy as an abacus, as fast as a Segway." It's based on Gentoo, and it supports the KDE, Gnome, LXDE and Xfce desktop environments.
832. Salix OS
Salix compares itself to a bonsai tree in that it is "small, light and the product of infinite care." It comes in four different versions for the Xfce, LXDE, Fluxbox and KDE desktop environments.
833. Scientific Linux
Created by the folks at the Fermi National Accelerator Laboratory and the European Organization for Nuclear Research (CERN), as well as various scientists and universities, Scientific Linux (SL) aims to prevent scientists at each of these different institutions from having to recreate a Linux distribution that meets their needs. It's basically the same as Red Hat Enterprise Linux with a few slight modifications.
834. Slackware
First released in 1993, Slackware is one of the oldest Linux distributions. Popular with the geekiest of geeks, it relies heavily on command-line tools and is very similar to UNIX.
835. SUSE
Like Red Hat, SUSE is designed for enterprise users and requires a support contract. However, also like Red Hat, a free community version is available through openSUSE.
836. Tiny Core Linux
One of the smallest Linux distros available, Tiny Core weighs in at just 10MB in its GUI version. The command line version, Micro Core, is even smaller – just 6MB.
837. Tizen
Governed by the Linux Foundation, this project aims to develop a mobile operating system that relies primarily on HTML5 technology.
838. Ubuntu
Suitable both for enterprise and home users, this extremely popular Linux distributions comes in desktop, server and cloud versions and now a TV version. It boasts 20 million users and offers fast performance, a stylish interface, ease of use and good security.
839. Unity
Instead of being built for end users, Unity is built to give developers or advanced Linux users some modular pieces they can use to create a customized distribution. Despite its name, it has nothing to do with the Unity desktop used by Ubuntu; instead, the Unity OS uses the OpenBox graphical environment.
840. Vector Linux
VectorLinux's credo is "keep it simple, keep it small and let the end user decide what their operating system is going to be." In addition to the free download, it's also available in a supported "deluxe" edition.
841. Xubuntu
And this is the version of Ubuntu that uses the Xfce desktop environment. It's available in both desktop and server versions.
842. ZenWalk
Originally based on Slackware and called "Minislack," ZenWalk has evolved to become a modern, fast, lightweight distribution that's easy to use. It's available in five versions: standard, core, live, Gnome and Openbox.
843. Zorin OS
Unlike most Linux distributions, Zorin was designed to look and feel as much like Windows as possible – only faster and without as many bugs. It's available in both free and paid verions.

Organization Management

844. Artful.ly
Designed for cultural and arts organizations, Artful.ly offers business management software with modules for ticket sales, accounting, donor and sponsor information, fundraising and marketing and more. The same software is available online with a subscription. Operating System: Linux.

Password Crackers

845. Ophcrack
Every network administrator needs to recover a lost or unknown password from time to time. Ophcrack uses the rainbow tables method to recover passwords, and it has a brute force module for cracking simple passwords. Operating System: Windows, Linux, OS X.
846. John the Ripper
John the Ripper can crack weak Unix passwords very quickly. It also comes in a paid Pro version. Operating System: Windows, Linux, OS X.

Password Management

847. Figaro's Password Manager
This Linux-only password safe encrypts passwords with the blowfish algorithm. It also features a password generator and can act as a bookmark manager as well. Operating System: Linux.
848. KeePass
With KeePass, you no longer have to remember lots of different passwords. Instead, you'll only need to keep track of one master password, while KeePass stores your very strong passwords in an encrypted database, keeping you safe and secure. Operating System: Windows.
849. KeePassDroid, 7Pas (KeePass for Windows Phone 7), iKeePass, KeePass for BlackBerry
A perennial favorite among open source fans, KeePass is a password safe that allows users to utilize different passwords for every website or service they access, while only remembering a single master password. Versions are now available for every major mobile operating system--and some of the minor ones as well. You can find a complete list of mobile versions at keepass.info/download. Operating System: Android, iOS, Windows Phone, BlackBerry.
850. KeePassX
If you use OS X or Linux, try this fork of KeePass. Plus, it adds a few features not in the original and runs on Windows as well. Operating System: Windows, Linux, OS X.
851. PasswordMaker
Using the same password all the time puts you at risk, but many people do it anyways because it's so difficult to remember a lot of different passwords. This browser add-on offers a better solution for the problem by creating unique passwords for each site you visit and storing them in an encrypted file that you access with a single master password. Operating System: Windows, Linux, OS X.
852. Password Safe
Downloaded more than 1 million times, Password Safe is another popular open source option for protecting your passwords. Like KeePass, it's lightweight and stores your encrypted passwords in a database so that you only need to recall one master password. Operating System: Windows.
853. PWGen
Using easy-to-guess passwords is just as bad as using the same password all the time. PWGen creates strong passwords for you, so you won't be tempted to use "password" or "123456." Operating System: Windows.
854. Secrets for Android
Similar to KeePass, Secrets for Android also stores all your passwords in an encrypted password safe behind a master password. However, this app also lets you store other "secrets" in encrypted notes. Operating System: Android.
855. WebKeePass
Have your own Web server? This version of KeePass lets multiple users access a KeePass database from any Web-connected system. It's ideal for small businesses. Operating System: OS Independent.

PDF Tools

856. jPDF Tweak
This Java-based program lets you merge, split, reorder, sign, and encrypt previously existing PDF files. Operating System: OS Independent.
857. PDFCreator
Adobe's Acrobat software is expensive, but you don't actually need that software to create PDFs. PDFCreator can write PDF files from any application capable of printing, and it includes features like encryption, digital signatures and more. Operating System: Windows.
858. PDFedit
You don't have to purchase expensive Adobe software in order to make modifications to existing PDF files. PDFedit lets you edit text, delete and renumber pages, add markup and more. Operating System: Windows, Linux.
859. Sumatra PDF
The free Adobe software isn't your only option for reading PDF files. The Sumatra PDF reader offers similar functionality with a lighter footprint for faster performance. Operating System: Windows.

Personal Financial Management

860. Buddi
While it's not as full-featured as Quicken, Buddi is a simple, understandable personal finance program designed for people with little or no financial experience. It's Java-based, so it works on nearly all operating systems, and the website has tutorials available for new users. Operating System: OS Independent.
861. Financisto
This open source Android app lets you track your budget from your smarphone or tablet. Key features include Quicken and CSV import, support for multiple accounts and currencies, recurring transactions, budgets and advanced reports. Operating System: Android.
862. HomeBank Now nearly 17 years old, this personal finance solution boasts powerful filtering and graphing tools. It imports and exports data to other financial software, and it offers helpful features like auto-completion, transaction reminders and a "car cost" report that tallies up all your vehicle-related expenses. Operating System: Windows, Linux, OS X.
863. iFreeBudget
This extremely simple double-entry accounting budget is aimed at home or small business users. The interface is very basic, but the Android support is nice for tracking purchases as you make them. Operating System: Windows, Linux, OS X, Android.
864. jGnash
Java-based jGnash offers double-entry accounting for your home finances. It imports data from Quicken and Microsoft Money, and it tracks investments and supports multiple currencies. Operating System: Windows, Linux, OS X.
865. JStock
This portfolio manager offers near real-time data from 24 world stock markets. Two features that set this project apart are the cloud-based storage option and the integrated chat capabilities for exchanging tips with other investors. Operating System: Windows, Linux, OS X.
866. KMyMoney
This personal finance software from KDE features double-entry accounting and an intuitive GUI. The project's stated goal is "to be the best free software personal finance manager, period." Operating System: Windows, Linux, OS X.
867. Market Analysis System
Ready to get really serious about investing? This app tracks a huge number of metrics and analyzes market data, flagging you when certain criteria are met. You can run it on a single PC or in a client/server setup. Operating System: Windows, Linux.
868. Money Manager Ex
Another personal finance manager with an emphasis on simplicity, Money Manager Ex aims to offer "all the basic features that 90% of users would want to see in a personal finance application." Key capabilities include budgeting, one-click reporting, charts and graphs, depreciation tracking, AES encryption support, bill reminders and more. Operating System: Windows, Linux, OS X.
869. StockManiac
StockManiac describes itself as an "investment time machine" for private investors. It tracks transactions and stores documents related to your portfolio, and it makes it easy to track multiple accounts and multiple portfolios. It automatically updates stock prices with Internet data, and it includes a feed reader that lets you keep up on relevant news. Operating System: OS Independent.
870. UnkleBill
One of the newer double-entry accounting apps on our list, UnkleBill offers a particularly attractive interface, complete with a cute UnkleBill cartoon character who offers tips and advice for new users. It supports multiple users and multiple accounts, and it creates PDF reports. Operating System: Windows, Linux, OS X.
871. Yapbam
Java-based Yapbam (short for "yet another bank account manager") is cross-platform, portable and extensible. It can import data from other software and online banking, automatically generates reports and includes a currency converter. Operating System: Windows, Linux, OS X.

Photo Albums and Tools

872. Album Shaper
This app actually features three separate pieces: Presenter, a slideshow viewer; Reveal, an image viewer with limited editing capabilities; and Album Shaper, a tool for organizing, enhancing and sharing your photos. According to the site, it "strives to be the most friendly, easy to use, open source application" of its kind. Operating System: Windows, Linux, OS X.
873. Comix
Although it was built for viewing and organizing comic book collections, this app also functions well as a general image viewer. It offers basic image enhancement capabilities and tagging and bookmark capabilities that make it easy to see your library. Operating System: Linux.
874. Coppermine Photo Gallery
If you have your own Web server, you can use Coppermine to manage and share your photo collection with the world. It stores photo information in a MySQL database and allows you to organize your photos into online albums, upload photos, view slideshows and much more. Operating System: OS Independent.
875. digiKam
This powerful image manager for the KDE desktop aims to meet the photo organization needs of professional photographers. Key features include photo import, tagging, auto-transformations, a light table and more. Operating System: Windows, Linux, OS X.
876. Eye of GNOME
The official photo manager for the Gnome desktop, Eye of GNOME supports a wide variety of image file formats. It offers a basic set of capabilities that allow you to browse your images, view properties and metadata, and print your photos. Operating System: Linux.
877. F-Spot
This alternative photo viewer for the Gnome desktop offers a wider range of features than Eye of GNOME, including basic photo editing capabilities and tag icons. It also makes it easy to create a photo CD or export photos to Flickr, 23, Picasa Web or SmugMug. Operating System: Linux.
878. Gallery
Like Coppermine, Gallery requires that users have their own Web servers or Web hosting from a third-party provider. It provides a way to integrate large photo collections into existing websites. Click the link for examples of sites that use this software. Operating System: Windows, Linux.
879. Gallery Mage
Gallery Mage allows users to crop, resize and rotate images, while maintaining the original files. It integrates with several other viewers so that you can view slideshows and organize your photos. Operating System: Windows, Linux, OS X.
880. gThumb
Also for Gnome, gThumb includes an image browser, viewer, organizer and editor. Advanced features allow image import, slideshows, converting among file formats, removing duplicate images, creation of Web albums and more. Operating System: Linux.
881. Gwenview
Another photo viewer for KDE, Gwenview makes it easy to browse and view images, while also offering some basic editing capabilities. It displays image properties and meta information, and it can also play videos and animations. Operating System: Linux.
882. jBrout
The jBrout photo manager makes it easy to sort your photos into albums and later search to find one particular image. It includes integration with Picasa and Flickr. Operating System: Windows, Linux.
883. imgSeek
Although it’s a full-featured image viewer and manager, this app focuses on enabling content-based search. Quickly sketch an image or click on an existing photo to find other photos containing similar images. Operating System: Windows, Linux, OS X.
884. KPhotoAlbum
Also for KDE, KPhotoAlbum aims to make it possible to find any photo on your drive in five seconds or less. It offers automated tools for annotating, categorizing, searching and viewing your pictures. Operating System: Linux.
885. KSquirrel
KSquirrel is a fast, easy-to-use image viewer for KDE. Key features include disk navigator, file tree, multiple directory view, thumbnails and extended thumbnails, dynamic format support, DCOP interface and support for KEXIF and KIPI plugins. Operating System: Linux.
886. Rawstudio
Experts recommend saving your digital photos in their raw formats in order to preserve as much information as possible. Rawstudio handles batch processing of those images with features like image tagging and sorting, lens distortion correction, advanced noise reduction, intelligent sharpening, straightening and more. Operating System: Linux.
887. RawTherapee
Similar to Rawstudio, this two-year-old project also offers batch processing of raw photo files. It boasts "the most details and least artifacts from your raw photos thanks to modern and traditional demosaicing algorithms." Operating System: Windows, Linux, OS X.
888. Shotwell
This photo manager for the Gnome desktop makes it easy to import, organize, edit and publish your pictures. It offers basic editing features like cropping, rotation, red-eye removal, saturation, tint and temperature, and it integrates with Facebook, Flickr, Picasa and YouTube. Operating System: Linux.
889. UFRaw
This utility can be used on its own or as a Gimp plug-in. It allows users to manipulate and view raw images and convert them to other formats. Note that like the other tools for working with raw images, you'll need to have some expertise to use this app. Operating System: Windows, Linux, OS X.

Physics

890. Step
KDE's physics program provides demonstrations of classical mechanics, particles, springs with dumping, gravitational and coulomb forces, rigid bodies, molecular dynamics and more. It can also do unit conversion and error calculation and propagation. (Note that in order to use Step on Windows, you'll have to download KDE for Windows.) Operating System: Windows, Linux.

Poetry

891. Open Source Poetry
This website offers tools to help you write your own poem or to collaborate with other poets on an open source creation. You can save your lines for your own reference or for others to use in creating new works. Operating System: OS Independent.

Point-of-Sale (POS)

892. Floreant POS
For restaurants only, this POS system works with touch screens and handles operations like split checks, kitchen print, drawer pull, tax, discounts and more. Its list of users includes the Denny's chain in New York. Operating System: OS Independent.
893. Lemon POS
Best for small or very small businesses, this Linux-based point of sale system offers features like role-based permissions, support for multiple terminals, sales suspension, custom orders and more. It stores all inventory data in a MySQL database and boasts excellent security. Operating System: Linux.
894. Openbravo for Retail
Formerly known as Openbravo POS, the retail version of Openbravo offers support for both Web and brick-and-mortar operations, compatibility with mobile devices, back office and analytics capabilities, and more. The website above primarily promotes the paid professional version, but you can find the free open source version at Openbravo forge. Operating System: Windows, Linux, OS X.
895. POSper
This app was designed for small retail stores and restaurants. It supports multiple touchscreens, scanners, card readers and ticket printers, and it integrates with all databases supported by Hibernate. Operating System: OS Independent.
896. SymmetricDS
SymmetricDS is a data synchronization and replication tool designed to transmit data from POS databases to back office systems. Key features include guaranteed delivery, data filtering and rerouting, primary key updates, database versioning, and more. Operating System: OS Independent.

Portable Applications

897. Democrakey
For privacy on the go, Democrakey bundles together apps for anonymous browsing, anonymous e-mail and IM, encryption, file shredding and anti-virus into a suite that runs from a thumb drive. You can also purchase a USB drive with Democrakey installed from Democrakey.com. Operating System: Windows.
898. PortableApps.com
This project also collects a ton of open source apps—only this time the apps are formatted so that you can put them on a USB thumb drive and take them with you wherever you go. The standard download comes with some of the most popular open source apps, but the site also includes a library of hundreds of other apps that you can add to your portable drive. Operating System: Windows.
899. Tor Browser Bundle
The Tor project also makes a portable suite that you can take with you on a thumb drive. You can also download an IM version. Operating System: Windows, Linux, OS X.
900. winPenPack
While its not as well-known as PortableApps.com, winPenPack also offers dozens of open source apps in portable versions. You can download the apps individually or you can get the Full or the Essential suite. Operating System: Windows.

Privacy Protection

901. AdBlock Plus
Used by more than 12.5 million Firefox users, AdBlock Plus can be configured to block all advertisements or only those originating from domains known to install malware. To use it, you'll also need to subscribe to one of the filters that provide the type of blocking you desire. Operating System: Windows, Linux, OS X.
902. BetterPrivacy
Even when you have your cookies disabled, Flash-enabled sites like YouTube, E-Bay and others can use Flash cookies (also called "SuperCookies") to track your activities. BetterPrivacy automatically disables those cookies. Operating System: Windows, Linux, OS X.
903. HTTPS Everywhere
Many websites have the ability to encrypt traffic via HTTPS, but don't turn on that feature by default. This Firefox add-on, a collaboration between the Tor Project and the Electronic Frontier Foundation, rewrites requests so that you will automatically use HTTPS whenever it is available. Operating System: OS Independent.


904. JAP
Like Tor, JAP hides your IP address while you're browsing online. However, because it is a research project, the service occasionally experiences outages and downtime. Operating System: OS Independent.
905. Mixmaster
Available in both client and server versions, Mixmaster is a remailer that protects you from traffic analysis. With it, you can send e-mail anonymously or under a pseudonym. Operating System: Windows, Linux.
906. Mixminion
Another anonymous remailer, Mixminion passes e-mail through a network of servers that mixes them up and encrypts them in order to protect privacy. It hasn't been updated in a while, but a stable version is available. Operating System: Windows, Unix, OS X.
907. Privacy Dashboard
This Firefox add-on from W3C (the World Wide Web Consortium) alerts you to the data being collected by the various websites you visit. Users also have the option of contributing to a project that is tracking how websites are doing at protecting users' privacy. Operating System: OS Independent.
908. Privoxy
This non-caching Web proxy server offers advanced filtering capabilities for removing ads and protecting your privacy. You can use it to protect an individual PC or an entire network. Operating System: Windows, Linux, OS X.
909. SafeCache
This Firefox add-on helps prevent websites from accessing your browsing history. It works with your cookie settings to apply your desired level of privacy. Operating System: Windows, Linux, OS X.
910. Torbutton
This Firefox add-on makes it easy to turn Tor (see above) on or off for anonymous browsing. Note that when you are using it, you will not be able to access sites that use JavaScript, some CSS features, or Flash. Operating System: OS Independent.
911. Web of Trust (WOT)
Downloaded more than 33 million times, this popular add-on for Firefox, Internet Explorer, Chrome, Safari or Opera lets users know when they've strayed into websites that are questionable or insecure. It utilizes user ratings to identify sites that perpetuate scams, collect personal information or include unsuitable content, and it ranks them with a green-yellow-red classification system. Operating System: Windows, Linux, OS X.

Programming Languages

912. Dart
First unveiled in October of 2011, Dart is Google's new programming language designed as an alternative to JavaScript. Currently, the company is seeking feedback on the language, which is still in the very early stages of development. Operating System: OS Independent.
913. ECL
ECL ("Enterprise Control Language") is the language for working with HPCC. A complete set of tools, including an IDE and a debugger are included in HPCC, and documentation is available on the HPCC site. Operating System: Linux.
914. Go
Recently developed by Google, Go aims to make developers more productive by providing them with a clean, simple programming language. And unlike many older languages, it offers garbage collection and parallel computation. Operating System: Linux, OS X.
915. Java
Originally developed by Sun but now owned by Oracle, Java allows developers to write code that will run on multiple operating systems. According to Tiobe, it's the most popular programming language in the world. The link above offers extensive help for those new to the language and a large collection of tools for Java developers. Operating System: Windows, Linux, OS X.
916. Perl
Perl has been around for 22 years and runs on more than 100 different platforms. It's an ideal Web programming language and integrates easily with popular databases. Operating System: Windows, Linux, OS X.
917. PHP
This general purpose scripting language is particularly suited to Web development, enabling developers to write dynamically generated pages quickly. A lot of its syntax comes from C, Java and Perl, and it can be embedded into HTML. Operating System: Windows, Linux, OS X.
918. Pig/Pig Latin
Another Apache Big Data project, Pig is a data analysis platform that uses a textual language called Pig Latin and produces sequences of Map-Reduce programs. It helps makes it easier to write, understand and maintain programs which conduct data analysis tasks in parallel. Operating System: OS Independent.
919. Python
Python's strengths are its speed, flexibility and readable syntax. It's often used in Web development but can be used for other types of applications as well. Operating System: Windows, Linux, OS X.
920. R
R is both an environment and a programming language for statistical calculations. Operating System: Linux, OS X.
921. Ruby
Designed to feel "natural," Ruby's creator Yukihiro “matz” Matsumoto blended parts of Perl, Smalltalk, Eiffel, Ada, and Lisp to create a new language that's been called both "handy" and "beautiful." It's ranked as the tenth most popular programming language in the world, due in no small part to the popularity of the Ruby on Rails framework. Operating System: Windows, Linux, OS X.

Project Management

922. Achievo
Designed for medium-sized organizations, Acheivo combines calendar, contacts, project management, time tracking and basic CRM and human resources management capabilities. It's Web-based, and the site offers a demo so that you can try it out before you download. Operating System: OS Independent.
923. Dotproject
Conceived in 2000 as an alternative to Microsoft Project, this application offers a clean interface and a focus on project management without extraneous groupware functions. Key features include an e-mail based ticket/trouble system, hierarchical task list, discussion forum, file repository and more. Operating System: Windows, Linux
924. GanttProject
Similar to OpenProj (see below), GanttProject can also import and export data from Microsoft Project. Other key capabilities include Gantt charts, PERT charts and collaboration features. Operating System: Windows, Linux, OS X.
925. NavalPlan
As the name suggests, this Web-based project management system was originally created for the ship building industry, but its features make it useful for just about any industry. It helps organizations schedule resources, control costs, organize tasks and monitor progress, and it connects with many ERP systems. Operating System: Linux.
926. Onepoint Project
Onepoint Project offers enterprise-class project management with fast deployment and quick ROI. It comes in a variety of open source and commercial editions; the group and enterprise editions can be deployed on-premise or used on demand. Operating System: Windows, Linux, OS X.
927. OpenProj
Very similar to Microsoft Project, this popular app lets you assign resources, schedule tasks and handle the other aspects of managing an ongoing project. It also imports and exports Microsoft Project files. However, note that the export to PDF function in the software is shareware, not open source. Operating System: Windows, Linux, Unix, OS X.
928. openXprocess
A good choice for application development teams, openXprocess has some tools for using Agile and Scrum methodologies, and Xprocess also offers training for using the app to support Agile and Scrum development. The company also offers paid support. Operating System: Windows, Linux.
929. PHPProjekt
PHPProjekt combines project management with a time tracker and some groupware functions, like a calendar, to do list and contact manager. It's Web-based, and the site provides a helpful demo so that you can see the features in action. Operating System: OS Independent.
930. Plandora
Plandora meets the needs of a variety of kinds of teams with Gantt charts, a Balanced Scorecard view and an Agile development board. In addition, the latest release includes cost management, artifact management and new gadgets. Operating System: OS Independent.
931. Redmine
Web-based Redmine offers Gantt charts, calendar, per-project wikis, an issue tracker, newsfeeds and more. It also integrates with most version control systems, making it a good choice for development teams. Operating System: OS Independent.
932. TaskJuggler
TaskJuggler calls itself "project managers' delight" and includes tools for project scoping, resource assignment, cost and revenue planning, and risk and communication management. It's designed for "serious project managers" and takes some effort to learn. Operating System: Windows, Linux, OS X.
933. web2Project
Offering "real project management for real business," this Web-based tool can manage multiple projects, companies, departments and users. Key features include a modular infrastructure, built-in security, role-based permissions, project- and group-wide Gantt charts, and group calendar. Operating System: OS Independent.
934. XPlanner+
Designed for development teams, this Java-based app includes project management, bug tracking and time tracking capabilities. It supports Agile methodologies and it can export to multiple formats, including Microsoft Project. Operating System: OS Independent.

Project Portfolio Management

935. Onepoint Project
Onepoint combines project management with project portfolio management capabilities, including supporting formal, Agile and JIRA projects within a single solution. The Basic and Community editions are available with a GPL license, while the supported editions for enterprise users have a proprietary license. Operating System: Windows, Linux, OS X.
936. Project.Net
The first open source solution to be included in Gartner's "Magic Quadrant for IT Project and Portfolio Management Applications," Project.Net is a robust, but affordable alternative to commercial PPM software. It integrates with many BI systems, includes advanced social networking features and commercial support and services are available. Operating System: OS Independent.

RAID Controllers

937. Mdadm
Part of the Linux kernel, Mdadm is software that makes it possible to build your own RAID array with standard hardware. It can also monitor and report on RAID arrays. Operating System: Linux.
938. Raider
Raider allows users to convert any Linx disk system into a RAID array. It supports RAID levels 1, 4, 5, 6 or 10. Operating System: Linux.
939. RaidEye
Just as Raider and Mdadm allow you to turn Linux systems into RAID arrays, RaidEye does the same thing for Macs. It's a monitoring tool that works with the built-in RAID capabilities in OS X. Operating System: OS X.
940. Salamander
Another Linux project, Salamander simplifies the process of turning a multi-disk system into a RAID system. As for the name, the website explains, "Salamanders are the only vertebrates that can regenerate limbs. In the same way, a system installed with Salamander can regenerate after a hard-drive failure." Operating System: Linux.
941. SnapRAID
SnapRAID is a non-standard RAID level for storage arrays. It uses snapshot backup capabilities to provide redundancy that protects against the failure of up to two disks in an array. Operating System: OS X.

Religion

942. BibleTime
The BibleTime free Bible study software includes data from more than 100 Bibles, commentaries and other reference materials. It's a good alternative to similar commercial software which can cost hundreds of dollars. Operating System: Windows, Linux, OS X.
943. Gnaural
It already does everything else--now your computer can help you meditate. Using something called the “binaural beat principle,” Gnaural generates audio tones designed to get you in the right frame of mind for relaxation. Operating System: Windows, Linux, OS X.
944. Noor
Noor doesn’t offer a lot of bells and whistles, but it does let you access the text of the Quran from your PC. It includes both the original Arabic and translations. Operating System: OS Independent.
945. Xiphos
This app works much like BibleTime and even links to the same set of free reference materials. However, Xiphos' modular design allows for user-built add-ons, including some that add journaling and prayer list features. Operating System: Windows, Linux.
946. Zekr
Zekr brings the text of the Qu'ran to your PC with advanced search, read aloud and other functions. It's open source because the project owners believe you should "never profit off the prophet." Operating System: Windows, Linux, OS X.

Remote Access/VPN

947. Android-VNC-Viewer
This VNC client allows you to use an Android device to connect to a VNC server. It allows you to view another system screen remotely. Operating System: Windows, Linux.
948. BO2K
Based on Back Orifice, BO2K provides file-synchronization and remote operation capabilities for network administrators. Unlike most commercially available products, it's small, fast, free, and very extensible. Operating System: Linux.
949. OpenVPN
OpenVPN is available as a open source community download, a commercially supported enterprise solution or as a cloud-based service. All three versions offer a secure, private way to access the Internet or your organization's network. Operating System: Windows, Linux, OS X.
950. TightVNC
This remote control application allows users to interact with a system in one location while using a system in another location. In addition to its telecommuting uses, it's also useful in many help desk situations. Operating System: Windows, Linux.
951. UltraVNC
UltraVNC offers similar capabilities as TightVNC. Key features include file transfer, video driver, optional encryption plugins, MS logon, text chat, viewer toolbar, viewer auto scaling, multiple monitor support, auto reconnection and more. Operating System: Windows.
952. Zebedee
While it's not a true VPN tool, Zebedee does provide secure IP tunneling for TCP/IP or UDP data transfer between two systems. It not only provides security against snoopers, its compression capabilities save on network bandwidth. Operating System: Windows, Linux, Unix.

Recipe Management

953. Gourmet
Gourmet helps you organize your recipes. It imports recipes from multiple formats, including websites, plus it generates shopping lists and counts the calories in the meals you're making. Operating System: Windows, Linux.
954. Recipe Tools
This set of tools can help you find (and share) great recipes on the Web. With the RecipeFox Firefox add-on, you can easily grab recipes off the Internet and save them for use later. You can then store the recipe in a recipe manager like MasterCook or Gourmet (see below). Operating System: Windows, Linux, OS X.

Report Authoring

955. WIKINDX
Designed to help researchers take notes and track bibliographic information, WIKINDX can be used by a single user or stored on a Web server for access by a team working together. It exports bibliographies in a variety of style guide formats, allows multiple attachments per resource and supports non-English characters. Operating System: OS Independent.
956. Zotero
Zotero is a Firefox plug-in that makes it easy to track and cite your sources when doing research on the Web. It also includes a "Groups" feature that allows you to share your research with a team. Operating System: OS Independent.

Robotics

957. The Player Project
More middle and high school are offering classes in robotics, and The Player Project provides some of the software that supports instruction in robotics. It includes Player, a network server for robot control; Stage, a 2D multiple robot simulator; and Gazebo, a 3D multiple robot simulator with dynamics for simulating outdoor environments. Operating System: Linux, Unix.
958. ROS
Short for "Robot Operating System," ROS offers a set of open-source libraries for controlling robots. It includes device drivers, libraries, hardware abstraction and other capabilities. Operating System: Linux, OS X.

Router Software

959. Vyatta
Used by dozens of Fortune 500 companies, Vyatta allows users to create their own enterprise-grade networking appliance from any x86 system. You can find commercial products based on the same technology at Vyatta.com. Operating System: Linux.
960. FREESCO
This Linux-based software lets you set up your own router or a Web, FTP, DNS or SSH server. It incorporates firewalling and NAT capabilities. Operating system: Linux.
961. Tomato
While the other projects in this category allow you to create your own routers from standard PCs, this project is a replacement for the firmware on routers you may already own, specifically Linksys' WRT54G/GL/GS, Buffalo WHR-G54S/WHR-HP-G54 and other Broadcom-based routers. It includes some more advanced management capabilities, raises the maximum connections for P2P and enables additional wireless features.

RSS Readers

962. FeedReader
FeedReader offers robust news aggregation while keeping the interface basic enough for novices to use. Upgrades to the FeedReader Connect and FeedReader OEM products are available for a fee. Operating System: Windows.
963. RSS Owl
One of the most popular feed readers available, RSS Owl aggregates headlines from all of your favorite media sites and makes them easy to browse. It has a ton of advanced features, like saved searches, news filters, labels, and news bins that set it apart from other similar apps. Operating System: Windows, Linux, OS X.

School Administration

964. Focus/SIS
This newer SIS is completely Web-based and designed to make it as easy as possible to comply with state reporting requirements. It also streamlines attendance taking, scheduling, grading, and other administrative tasks. Operating System: OS Independent.
965. OpenAdmin
OpenAdmin's interface isn't particularly fancy, but it does provide a wide range of features for tracking grades, attendance, schedules, discipline, fees, IEPs and more. It was designed to meet the needs of both public and Catholic schools. Operating System: OS Independent.
966. openSIS
OpenSIS boasts that it can save school systems 75 percent compared to closed source student information systems. It comes in three versions: community, school, and district. The school and district options are also available as a hosted solution. Operating System: OS Independent.
967. SchoolTool
Canonical's Edubuntu and the One Laptop Per Child project both include SchoolTool as their school administration program. It offers an online gradebook, calendar, attendance, competency tracking, demographics and contacts. Operating System: Linux.

Screenplay and Novel Writing

968. Celtx
Planning to tackle writing a screenplay or producing your own film? This "all-in-one movie pre-production system" can help you write scripts, produce storyboards, and much more. It boasts more than 1.5 million users in 170 countries. Operating System: Windows, Linux, OS X.
969. Storybook
If writing a novel is on your to-do list for this year, Storybook can help you get started. It keeps an overview of characters and scenes in one place, helps you organize your book and includes features to help you maintain continuity. Operating System: Windows, Linux, OS X.

Small Business Server

970. ClearOS
This software allows small business owners to set up their own networks with a server that offers file and printer sharing, anti-virus, Web server, mail server, firewall, content filtering, VPN, multi-WAN and many other features. It also comes in a professional version with paid support and additional apps. Operating System: Linux
971. SME Server
Also aimed at small and medium-sized enterprises, SME Server is based on CentOS and RedHat Linux. It offers easy administration, file and print sharing, mail server, firewall, directory services, Web application server and more. Operating System: Linux
972. Zentyal
Small businesses can use this app as a gateway, infrastructure manager, unified threat manager, office server, unified communication server or all of the above. It's goal is to provide "a single, easy-to-use platform to manage all your network services." Operating System: Linux

Smoking Cessation

973. QuitCount
This Linux-only app helps keep you motivated to stop smoking. You tell it the day you quit, and it keeps a running total of how much money you've saved, how much tar you didn't put into your body and how much time you have added to your life expectancy. Operating System: Linux.
974. Smoke Reducer
Smoke Reducer keeps track of how long it's been since your last cigarette. It plays an alarm when it's time to smoke again, gradually lengthening out the time between smoking sessions until you stop completely. Operating System: Android.

SOA

975. Turmeric
Version 1.0 of this eBay-owned SOA platform was released in May of 2011. It's Java-based, standards-based and offers quality-of-service features, monitoring capabilities, a repository library, a type library, an error library, local binding and more. Operating System: OS Independent.

Social Networking

976. BuddyPress
Made by the WordPress team, BuddyPress offers "social networking in a box." Its used by thousands of organizations to create social networks for a variety of different groups. Operating System: OS Independent.
977. Diaspora
Launched as an alternative to Facebook, this open source social network has a long way to go to catch Facebook's user base. It offers greater control over your privacy and content. You can sign up to join a current Diaspora hub or create your own Diaspora server using the information from the site. Operating System: Windows, Linux.
978. LiveStreet CMS
Similar to BuddyPress, LiveStreet is a content management system for creating blogs or social networks. It boasts easy installation, extensibility and multilingual functionality. Operating System: Linux.
979. Pligg CMS
Pligg describes itself as "social publishing" software; that is, it creates websites that invite users to submit their own content and/or vote on current content. Hosting is available through several third-party partners. Operating System: Windows, Linux.
980. Storyltr
Storyltr brings together all of your Web 2.0 posts from up to 18 different services, including Twitter, Flickr, StumbleUpon, Tumblr and others. It lets you tell the story of your life in your own way. Operating System: OS Independent.

Speech

981. eSpeak
Although not as human-sounding as some other text readers, eSpeak provides clear audio of the text on your screen. It supports dozens of different languages, as well as several different English accents. Operating System: Windows, Linux, OS X.
982. Simon
If you'd like to be able to talk to your computer, check out Simon. It accepts voice commands and turns audio into text. Operating System: Windows, Linux.

Stamp Collecting

983. Numismatic
Yes, there's even an open source project for coin collectors. Numismatica stores data related to your collection in a MySQL database that you can access through a Web app. Operating System: OS Independent

Storage

984. Ceph
Ceph is a distributed file system that offers unified object, block and file-level storage. Professional support and services are available through InkTank. Operating System: Linux.
985. FreeNAS
This open source storage platform allows end users to store and share files across Windows, Mac, Linux and Unix-like systems. Key features include thin provisioning, backup and restore, snapshots, zettabyte file system and a Web interface. Operating System: FreeBSD.
986. Gluster FS
This distributed file system can scale up to 72 brontobytes while handling thousands of clients. A commercial version of the same software is available through Red Hat. Operating System: Linux.
987. Libvirt Storage Management
This open source API provides an array of virtualization management capabilities, including storage management capabilities. It supports multiple hypervisors, including, KVM, Xen, VMware, Hyper-V and others. Operating System: Linux.
988. Lustre
Oracle-owned Lustre boasts that it can handle very large and complex storage needs, "scaling to tens of thousands of nodes and petabytes of storage with groundbreaking I/O and metadata throughput." Note that although the name is similar to "Gluster," the two are completely independent projects. Operating System: Linux.
989. NAS4Free
A fork of FreeNAS, this project also creates a BSD-based NAS system. Key features include ZFS, Software RAID (0, 1, 5), disk encryption and reporting. Operating System: FreeBSD.
990. OHSM
Short for Online Hierarchical Storage Manager, OHSM automatically moves data between high- and low-cost storage media in accordance with the policies set up by the administrator. It allows policies for allocation (where to put a new file) and relocation (when to move an existing file). Operating System: Linux.
991. Openfiler
Openfiler offers unified storage incorporating both NAS and SAN features. Its customers include Motorola, Pratt & Whitney, BillMeLater and the London Metropolitan Police. Commercial support and plug-ins are available. Operating System: Linux.
992. OpenSMT
Like Openfiler, OpenSMT also allows users to turn standard system hardware into a dedicated storage device with some NAS features and some SAN features. It uses the ZFS filesystem and includes a convenient Web GUI. Operating System: OpenSolaris.
993. oVirt
Like Libvirt, oVirt can manage many different types of virtualized environments, including virtualized storage. It supports the KVM hypervisor only. Operating System: Linux.
994. Turnkey Linux File Server
Turnkey offers a wide variety of Linux-based software that you can use to create your own appliance. The File Server version creates a simple NAS device. Operating System: Linux.
995. ZFS
Originally developed by Sun, this file system supports very high storage capacities and offers features like error checking, RAID capabilities and data deduplication. It has been incorporated in many other open source projects, including FreeNAS and NAS4Free. Operating System: Solaris, OpenSolaris, Linux, OS X, FreeBSD.

Systems Administration Tools

996. Inside Security Rescue Toolkit
Also known as INSERT, the Inside Security Rescue Toolkit packs dozens of helpful security and system administration apps into a single download. In addition to a complete, bootable Linux system (based on Debian), you'll get apps for anti-virus protection, network analysis, forensics, and more. Operating System: Linux.
997. Networking Commands for Windows
If you’d rather perform network configuration and maintenance activities from the command line instead of a GUI, check out Networking Commands for Windows. This collection of command-line tools lets you use a small list of short, easy-to-remember commands to perform day-to-day systems administration activities. Operating System: Windows XP.
998. ProShield
Designed primarily for Debian and Ubuntu, ProShield scans your system to make sure your software is up-to-date and that you haven't picked up any malware. It also reminds you to backup your system, checks your available disk space, and performs other routine maintenance checks. Operating System: Linux.
999. Wake on Lan
This helpful little app makes it easy to turn on or shut down Windows systems connected to your network. It also includes a scheduling feature and can be run from the command line or a GUI. Operating System: Windows.
1000. Webmin
This interface allows you to set up Unix user accounts, change passwords, and perform other system admin tasks from any Web browser. You can perform more than 100 different functions. Operating System: Unix.

Text Editors

1001. Emacs
Emacs-style text editors have been around since the mid-70s and are popular among programmers. The GNU version offers content-sensitive editing modes for HTML and other types of files. Operating System: Windows, Linux, OS X.
1002. jEdit
Java-based jEdit boasts auto indent and syntax highlighting for 130 programming languages. It has a huge list of features and more than 150 plug-ins that extend its capabilities. Operating System: OS Independent.
1003. Notepad++
This mature text editor offers fast performance and a lightweight file size. It's been downloaded more than 20 million times, has won numerous awards, and offers a number of features that make it an excellent option for developers. Operating System: Windows.
1004. TEA
TEA combines a small file size with hundreds of functions, including syntax highlighting for more than 20 languages. Other key capabilities include a spellchecker, code snippets, built-in ZIP packager, bookmarks, tabbed layout engine and more. Operating System: Windows, Linux, OS X.
1005. Vim
Sometimes considered an IDE, Vim is a "programmer's editor" with extensive syntax assistance, code completion, split screens, undo/redo, and many other features. It's won a number of awards, but does have a reputation for being difficult to learn. Operating System: Windows, Linux, OS X.
1006. Zile
Short for "Zile is Lossy Emacs," Zile is a small text editor that looks very similar to the popular Emacs editor. It packs many features into just 100KB, including multi-level undo, multi-window display, killing, yanking, register, and word wrap. Operating System: Linux/Unix.


Time Tracking

1007. eHour
If you're a freelancer, consultant or other professional who bills by the hour, eHour can help you track and bill for the time you spend on projects. It also has some multi-user capabilities suitable for small offices. Operating System: Windows, Linux, OS X.
1008. Rachota
One way to make sure you're being as efficient as possible is to track the amount of time you spend on tasks. Rachota does just that—for both work and home situations. It's also portable, so you can take it with you. Operating System: OS Independent.
1009. timeEdition
The minimalist interface on this app makes it very easy to track the amount of time workers spend on various tasks. It also integrates with iCal, Outlook and Google Calendar, and exports into spreadsheet formats. Operating System: Windows, Linux, OS X.
1010. TimeTrex
This open source solution handles scheduling, employee time tracking, job estimates and payroll tasks. It's also available in a cloud-based "On Demand" version. Operating System: Windows, Linux, OS X.
1011. Todomoo
Todomoo combines a hierarchical task manager with a time tracker that allows you to bill for your time on multiple projects. It's also available in a portable edition that you can run from a USB drive. Operating System: Windows.

To-Do Lists/Schedulers/Calendars

1012. Astrid
Astrid describes itself as a "social productivity" tool. Basically, it's a to-do list and reminder system that you can use individually or with groups. Operating System: Android.
1013. BORG Calendar
No need to worry about being assimilated, this "BORG" stands for "Berger Organizer." It combines basic calendar functionality with a sophisticated to-do list that actually works more like most project management software. Operating System: OS Independent.
1014. Makagiga
Makagiga offers the same schedule/journal functionality as RedNotebook, plus it adds a sticky notes widget and a feedreader. Other optional add-ons are also available. Operating System: Windows, Linux.
1015. qOrganizer
Like several of the other options in this category, qOrganizer offers a calendar, to-do list and an integrated journal. However, this one also adds special student-focused features, such as a booklet for tracking grades and attendance, a timetable for tracking classes and an extra loud alarm in case you've dozed off while studying. Operating System: Windows, Linux.
1016. RedNotebook
This innovative app adds a text editor to a calendar/to-do list app. The result is perfect for keeping a diary or making notes about upcoming events. Operating System: Windows, Linux.
1017. Task Coach
Unlike many similar to-do list managers, Task Coach allows you to break tasks down into smaller sub-tasks. It also allows you to tag and organize tasks, and it integrates with some of most well-known e-mail clients, including Outlook and Thunderbird. Operating System: Windows, Linux, OS X.
1018. ThinkingRock
This app helps you put into practice the "Getting Things Done" methodology featured in books by David Allen. Different screens help you collect your thoughts, process thoughts, then organize, review, and do. Operating System: Windows, Linux.

Transit

1019. OpenTripPlanner
This one-year-old project aims to make it easy for government entities to communicate information about public transit schedules, walking and biking routes and other travel-related information. Portland's TriMet, one of the sponsors of the project, currently has a working demo of the software in action. Operating System: OS Independent.

Typing

1020. Klavaro
Klavaro offers a much more comprehensive program that includes a basic course, adaptability exercises, fluidity exercises, velocity exercises, progress charts and more. Unlike many other programs, you can also use it to learn alternative keyboard layouts in addition to the standard QWERTY keyboard. Operating System: Windows, Linux.
1021. TypeFaster Typing Tutor
TypeFaster also includes touch typing lessons and a 3D typing game for extra practice. It comes in standard, accessible, and Spanish versions, as well as a multiple user version that allows instructors to assign certain lessons each day and track student progress. Operating System: Windows, Linux.
1022. TuxType
This app for younger kids includes some basic typing instruction and two fun games for increasing your typing speed. It's not a comprehensive typing instruction program, but does offer fun supplemental activities and helps elementary students learn where all the letters are on the keyboard. Operating System: Windows, Linux, OS X.

Utilities

1023. Appetizer
Appetizer is a dock-style application launcher for Windows. It supports the PortableApps.com file format, so it will automatically detect any other portable apps you have on your thumb drive and include them on the dock. Operating System: Windows.
1024. Barnacle
Barnacle allows you to use your Android device as a WiFi hotspot, so that you can connect your PCs to the Internet via your wireless data connection. Note that this app requires root access. Operating System: Android.
1025. Coffee
This helpful app keeps your system "awake" during downloads, file transfers, etc. It's very helpful if you don't want your system going into standby mode while it completes a particular activity. Operating System: Windows.
1026. Copy Handler
If you're re-organizing or cleaning up your hard drive, Copy Handler can help. It's faster than the standard Windows copy and move features, and it gives you more options, like task queuing, filtering files according to specific criteria, pausing and resuming copying files and changing the copying parameters on the fly. Operating System: Windows.
1027. Folder Menu
This handy tool makes it easier to jump to your favorite files and folders. It works with Windows Explorer, open/save dialog boxes, or the command prompt. Operating System: Windows.
1028. GnuWin32
This site offers native Windows ports of lots of different open-source apps offered under the GNU license. There are dozens of apps, tools, and libraries available, but many of them fall under the "utilities" category, which is why we put it here on our list. Operating System: Windows.
1029. HDGraph
Wondering how in the world you managed to fill up 300 GB worth of hard drive space? HD Graph lets you see the reasons in a flash by drawing a multi-level pie chart that details how much space each directory and subdirectory is consuming. Operating System: Windows.
1030. KShutdown
Need to turn off, turn on, or restart your computer at a later time? This app lets you schedule all those functions so they happen automatically and adds several other features as well. Operating System: Windows, Linux.
1031. Kysrun
Originally designed for the Eee, Kysrun lets you open applications, link to bookmarks, or perform other operations by typing a few letters instead of hunting through menus. As you begin typing one letter at a time, Kysrun brings up a list of all applications on your system with those letters in the name, and you simply click on the one you want. Operating System: Linux.
1032. Open Manager
This project offers an alternative file manager for Android that makes it easy to cut, copy, paste, delete, rename, backup and zip files, as well as to install apps that don't come from Google Play. It comes in both smartphone and tablet versions. Operating System: Android.
1033. Standup Timer
Keep your standup meetings short and sweet with this helpful timer. It displays both the amount of time elapsed and the time left before you need to wrap up your meeting. Operating System: Android.
1034. Stuff Organizer
Stuff Organizer makes it easy to organize and find any kinds of files on your computer—whether they're music, video, or just documents. Features include a compression extracting utility, tagging support and integration with several Web services that provide data about multimedia files. Operating System: Windows.
1035. UltraDefrag
Need to defrag your hard drive? Unlike the defragmenter tool that comes with Windows, UltraDefrag lets you defrag on startup for maximum speed. You can also configure it to shut down your system when it's finished, so you can leave it working at night after you go to bed. Operating System: Windows.
1036. Unrar Extract and Recover
If you need to extract a lot of RAR archive files and you're not exactly sure what all the passwords are, this tool can help. It "handles password-protected, multi-part and encrypted archives with ease," and it requires no installation. Operating System: Windows, Linux.
1037. Windows Leaks Detector
This no-frills app can attach to any running Windows process and detect memory leaks. It groups leaks together by call stack for easier debugging. Operating System: Windows.

User Authentication

1038. Smart Sign
Smart Sign offers several different modules that help you use smart cards for user authentication and digital signatures. It supports a number of different card types and readers, as well as the Open CA certification authority. Operating System: Linux.
1039. WiKID
WiKID boasts "two-factor authentication without the hassle factor." In addition to the free community version, it also comes in a supported enterprise version which also adds additional functionality. Operating System: OS Independent.

Version Control

1040. Bazaar
This cross-platform, distributed version control system is used by numerous organizations, including open source heavyweights like the GNU project, Ubuntu, MySQL, Bugzilla, Debian and LaunchPad. It boasts great usability and calls itself "version control for everyone." Operating System: Windows, Linux, OS X.
1041. Git
Used for the Linux kernel, Perl, Eclipse, Ruby on Rails, Gnome, KDE and many other open source projects, this distributed version control system is fast and efficiently handles large projects. It offers strong support for non-linear development and cryptographic authentication of history. Operating System: Windows, Linux, OS X.
1042. Mercurial
This distributed version control system aims to help teams work together faster and more easily. It's easy to learn, and it's speed makes it particularly good at handling large projects. Operating System: Windows, Linux, OS X.
1043. Subversion
Subversion describes itself as "Enterprise-class centralized version control for the masses." Its features and feel are very similar to CVS. Operating System: Windows, Linux, OS X.
1044. TortoiseSVN
If you'd like to use Subversion on Windows, you might want to use the TortoiseSVN client. It lets you use commands and see the status of files from within Windows Explorer. Operating System: Windows.

Video Tools

1045. Amara
From the same group behind the Miro multimedia player, award-winning Amara aims to make it easier to subtitle and translate video. The project includes both downloadable software and a website for working on projects collaboratively. Operating System: Windows, Linux, OS X.
1046. Avidemux
Although it's not quite as powerful as some of the other open source video editors, Avidemux offers basic editing capabilities for amateurs, and it's one of the few open source apps in this category that runs on Windows and OS X. The site offers a wiki and a helpful forum for new users who need help getting started. Operating System: Windows, Linux, OS X.
1047. Cinelerra
Describing itself as a "movie studio in a box," this professional-quality compositing and editing tool invites users to "unleash the 50,000 watt flamethrower of content creation in your UNIX box." There's also a community fork of the project at Cinelerra.org. Operating System: Linux.
1048. CinelerraCV
The standard version of Cinelerra doesn't get updated very regularly, but this community-managed fork has added features and bug fixes more recently. It claims to be "the most advanced non-linear video editor and compositor for Linux." Operating System: Linux.
1049. DivXRepair
Experiencing problems playing AVI files? DivXRepair may be able to help. Operating System: Windows.
1050. DVD Flick
This app focuses on converting video or audio files saved on your system into playable DVDs. It offers the options of adding a menu and subtitles as well. Operating System: Windows.
1051. DVDx
Convert DVDs to any of the popular file formats with DVDx. It can also correct some file errors, split videos into smaller files or merge several files into one larger file. Operating System: Windows, Linux, OS X.
1052. FFDShow
This codec decodes numerous file formats. It provides excellent video quality while consuming few computing resources. Operating System: Windows.
1053. HandBrake
This newer conversion tool also helps convert DVDs or BluRay disks to other formats. Features include chapter selection and markers, subtitles, support for numerous filters and live video preview. Operating System: Windows.
1054. Kaltura Community Edition
Kaltura is home to a number of video-related projects, including a player, editor, widgets, processing, and much more. Their latest release is a Joomla extension that makes it easy to add video to your Joomla-based Web site. Operating System: OS Independent.
1055. Kdenlive
This video editor aims to "answer all needs, from basic video editing to semi-professional work." It's easy-to-use, highly versatile and supports a wide variety of file formats. Operating System: Linux, OS X.
1056. LiVES
LiVES, which stands for "LiVES is a Video Editing System," is both a tool for VJs and a non-linear video editing tool. It's frame and sample accurate, supports the latest standards and includes dozens of special effects. Operating System: Windows, Linux, OS X.
1057. Miro
While most video players also play audio (and thus ended up in the multimedia category), this one just plays video. It's claim to fame is its support for HD, as well as its library of 6,000 free movies and TV shows. Operating System: Windows, Linux, OS X.
1058. OpenShot Video Editor
This video editor for Linux includes capabilities like unlimited tracks, clip resizing and scaling, video transitions, compositing and overlays, 3D titles, rotoscoping and more. It boasts an easy-to-use interface that makes it suitable for beginning filmmakers and hobbyists. Operating System: Linux.
1059. PhotoFilmStrip
While it's not a full-featured video editor like Premiere, PhotoFilmStrip is a good option for amateurs who want to make a movie out of existing photos. It uses the "Ken Burns" effect on your photos to make a much more interesting show than you could with PowerPoint or similar presentation software. Operating System: Windows, Linux.
1060. VirtualDub
Another "lite" offering, VirtualDub offers basic video capture and processing. It works best with AVI files. Operating System: Windows.
1061. Windows Essentials Codec Pack
Having trouble playing a video file you've downloaded from the Internet? This download gives you the tools you need to play 99 percent of files available, including a simple media player. Operating System: Windows.

Virtualization

1062. KVM
Short for "Kernel-based Virtual Machine," KVM is owned by Red Hat and included in the main Linux kernel. Unlike Xen, it only runs on x86 systems. Operating System: Linux.
1063. OpenVZ
OpenVZ takes a different approach to virtualization: unlike VMware, VirtualBox and many other virtualization solutions which use VMs, OpenVZ offers container-based virtualization through VEs or VPSs. Commercial products based on OpenVZ are sold as Parallels Virtuozzo Containers. Operating System: Linux.
1064. VirtualBox
VirtualBox offers virtualization for x86 and AMD64/Intel64 servers and desktops. Pre-built VirtualBox appliances are available for download from Oracle. Operating System: Windows, Linux, OS X, Solaris, others.
1065. Xen
Xen has become the industry standard open source hypervisor, and it's used by many public cloud computing services, including Amazon and Rackspace. It's operating system-neutral, lightweight, secure and offers good performance. Operating System: OS Independent.

Vulnerability Assessment

1066. BackTrack
BackTrack's website describes it as "a Linux-based penetration testing arsenal that aids security professionals in the ability to perform assessments in a purely native environment dedicated to hacking." It's won numerous awards and has been downloaded more than 4 million times. Operating System: Linux.
1067. Metasploit
This well-known penetration testing tool simplifies network discovery and vulnerability verification. In addition to the free community version, it also comes in paid pro and express versions that add more capabilities. Operating System: Windows, Linux.
1068. Nexpost
Often used alongside Metasploit, Nexpose offers vulnerability scanning for very small organizations or individuals. It also comes in paid express, consultant and enterprise versions. Operating System: Windows, Linux.
1069. Nmap
This powerful network scanner helps with numerous administrative tasks, such as network inventory, managing upgrades and monitoring uptime, as well as with performing security audits. It's very flexible, portable and it's won numerous awards. Operating System: Windows, Linux, OS X.
1070. Nikto
Nikto scans Web servers for thousands of dangerous files and server-specific problems. Optional automatic updates are available. Operating System: Windows, Mac, Linux, Unix, BSD.
1071. OpenVAS
The "world's most advanced open source vulnerability scanner and manager," OpenVAS is a framework with several tools for security testing and management. As of May 2012, it now includes more than 25,000 network vunlerability tests. Operating System: Windows, Linux, OS X.
1072. Paros This Java-based scanner intercepts all http and https data transmitted between server and client to help evaluate the security of Web applications. It includes a spider, proxy-chaining, intelligent scanning for XSS and SQL injections, and more. Operating System: OS Independent.
1073. Samurai
Find out how well your Web site will stand up to attack with this penetration testing framework. It incorporates a number of well-known open source tools, including e Fierce domain scanner, Maltego, WebScarab, ratproxy, w3af, burp, BeEF, AJAXShell and many others. Operating System: Linux.
1074. Sara
Short for "Security Auditor's Research Assistant," Sara integrates with the National Vulnerability Database (NVD) and performs SQL injection and XSS tests. It's no longer under active development, but you can still download the code from this link. Operating System: Windows, Linux, OS X.

Web Filtering

1075. DansGuardian
This content filtering tool uses phrase matching, PICS filtering and URL filtering to block objectionable material from your network. Highly flexible, it allows the user to define what is an what is not objectionable, with the default settings designed to be appropriate for young children. Operating System: Linux, OS X.
1076. iSAK
The "Internet Secure Access Kit" (iSAK) lets you view reports on what type of sites your users are visiting and when. Of course, it also gives you the option to block specific sites or categories of sites for security or to prevent access to objectionable sites. It also incorporates anti-virus and anti-spam protection. Operating System: Linux.

Web Page Editors

1077. Amaya
Originally developed by the World Wide Web Consortium (W3C) in 1996, Amaya promotes two-way Web communication by incorporating both a Web page viewer and a Web page editor. It supports multiple Web languages, including HTML, CSS, XML, XHTML, MathML and SVG. Operating System: Windows, Linux, OS X.
1078. Aptana
A better option for professional Web application developers, Aptana supports HTML5, CSS3, JavaScript, Ruby, Rails, PHP and Python. It also offers Git integration and easy deployment to Heroku or EngineYard. Operating System: Windows, Linux, OS X.
1079. Bluefish
Created with more experienced Web developers and designers in mind, Bluefish is a lightweight, fast editor that can be used with multiple programming languages, including HTML, PHP, Python, Ruby, JavaScript and others. Key features include a powerful search and replace function, side bar snippets, multiple document interface, unlimited undo/redo, and a spellchecker that supports many programming languages. Operating System: Windows, Linux, OS X.
1080. BlueGriffon
Just over a year old, BlueGriffon is a next-generation Web page editing tool based on the Gecko rendering engine that Firefox also uses. The easy-to-use interface also makes it a good choice for non-technical users, and it supports HTML5. Operating System: Windows, Linux, OS X.
1081. Firebug
If you're comfortable editing code, Firebug is a fabulous tool for editing your Web pages live. It integrates with Firefox and makes it easy to search, edit, and find errors in your HTML, CSS, or JavaScript. Operating System: Windows, Linux, OS X.
1082. Kompozer
A good choice for novice Web developers, Kompozer offers an easy-to-use WYSIWYG page editor as well as an HTML editor. Key features include an FTP site manager, color picker, tabbed interface, CSS editor, forms, spellchecker and more. Operating System: Windows, Linux, OS X.
1083. SeaMonkey
This "all-in-one Internet application suite" includes a Web browser, e-mail client, feed reader, chat client and HTML editor. It's powered by Mozilla source code, and has a large library of add-ons for more features. Operating System: Windows, Linux.
1084. XML Copy Editor
For XML only, this editor is lightweight and fast. It validates your code as you type and offers a simple, basic interface. Operating System: Windows, Linux.

Web Servers

1085. Apache HTTP Server
Used by 63 percent of all websites, Apache has been the most popular Web server for more than a decade. It prides itself on being secure, efficient and extensible. Operating System: Windows, Linux, OS X.
1086. AppServ
The goal of the App Serv project is simple: allow users to set up a Web server with Apache, MySQL and PHP in one minute or less. Note that this project originated in Thailand so some of the English documentation reads a little strange. Operating System: Windows, Linux.
1087. EasyPHP
EasyPHP lets you set up a WAMP (Windows, Apache, MySQL and PHP) environment on a system or a thumb drive in just minutes. It also includes optional modules for WordPress, Spip, PrestaShop, Drupal, Joomla, and other apps. Operating System: Windows.
1088. Nginx
Nginx (pronounced "engine X") is both an HTTP and a mail proxy server. Currently powering about 8 percent of all websites, it's the third most popular Web server. Operating System: Windows, Linux, OS X.
1089. XAMPP
Most of them time when you want to install the Apache Web server, you'll also need other tools, like MySQL, PHP and Perl. This group of downloads bundles together all of those tools—along with a variety of other open source software that's helpful for running a Web server—in an easy-to-deploy package customized for each of the major operating systems. Operating System: Windows, Linux, OS X, Solaris.

Wikis

1090. DokuWiki
This simple-to-use wiki was designed for developer teams and other small groups. Key features include unlimited revisions, recent changes viewing, section editing, anti-spam capabilities, multiple language support and more. Operating System: OS Independent.
1091. FOSWiki
A split from the TWiki project, FOSWiki distinguishes itself with support of embedded macros to enhance content and allow end-users to create their own applications. The Web site includes considerable support for new users, as well as a number of extensions to the basic application. Operating System: OS Independent.
1092. MediaWiki
Because it's the software used by Wikipedia, MediaWiki should feel familiar to most users. It's scalability makes it a good choice for large wikis. Operating System: Windows, Linux/Unix, OS X.
1093. TikiWiki
TikiWiki calls itself "Groupware" because it offers features like blogs, forums, an image gallery, map server, bug tracker and feed reader to standard wiki capabilities. The software is completely open source, but support, consulting, hosting and other services are available through third-party partners listed on the site. Operating System: OS Independent.
1094. TWiki
As a structured wiki, TWiki combines the benefits of a wiki with the benefits of a database. It can be used for project management, document management, as a knowledge base, or to collaborate on virtually any type of content for intranets or the Internet. Operating System: OS Independent.
1095. XWiki
XWiki combines an enterprise-grade wiki, a wiki manager (for those who have multiple wikis), a generic wiki platform and an RSS Reader. It's a second-generation wiki, meaning that it gives users the ability to create and deliver apps from within the wiki. Operating System: OS Independent.

Wine and Beer

1096. CellarBoss
For those with a large wine collection, CellarBoss helps keep track of the bottles you own and what you'd like to try next. It's Java-based and doesn't require a separate database, so it's easy to get started. Operating System: Windows, Linux, OS X.
1097. Brewtarget
If you're more of a beer person than a wine person, Brewtarget can help you craft the perfect drink. This beer calculator helps home brewers track recipes and calculate the end results. Operating System: Windows, Linux, OS X.



Cracking Android Lock Screens

$
0
0
http://rossmarks.co.uk/blog/?p=609&goback=%2Egde_38412_member_196622069

jesture lock
SO as you can probably tell from the title, this will be a small tutorial on how to get the password for android devices, specifically if it has a gesture password (see image left of here) For this demonstration I was getting the password for my HTC sensation, using the latest version of Debian.
For this to work you need to be able to access the /data/system/gesture.key file on the target device, This is done either with ADB or through a JTAG hardware interface. For this demonstration I'll be using ADB.
This is for educational purposes only, you should only do this on your own devices or with the owners permission.
So lets get started. There are a few programs you will need if you don't have them already:
$ apt-get installandroid-tools-adb unrar wget
Firstly check that ADB is working, and that there is only 1 device. If you have more than one device then you will need to remember the device ID and modify the commands accordingly.
$ adb devices
List of devices attached
SH16GV808818    device
This command will pull down the gesture.key file onto your local system.
$ adb pull /data/system/gesture.key
0 KB/s(20 bytes in0.046s)
Now download the rainbow table of all the possible codes and correlating pins and unrar it
$ unrar e AndroidGestureSHA1.rar
Finally just search the rainbow table for the hash (gesture.key)
$ grep-i `xxd -p gesture.key` AndroidGestureSHA1.txt
1845;00 07 03 04;05AD28E1C5B9E2813612D3B4CE38697DE29F1C01
Viola there is the key: 1845;00 07 03 04;05AD28E1C5B9E2813612D3B4CE38697DE29F1C01
Now that it's all set up, from now on you will only need 2 commands. Get gesture.key then search for it in the rainbow table:
$ adb pull /data/system/gesture.key
$ grep-i `xxd -p gesture.key` AndroidGestureSHA1.txt
Sidenote
If you want a prettier output like me then you can pipe the output of the grep command to cut giving you just the password as the output:
$ grep-i `xxd -p gesture.key` AndroidGestureSHA1.txt | cut-d ';'-f 1
1845
You can improve this further by making it a one-liner and formatting the output, leaving us with this:
$ echo-n "Fetching: "; adb pull /data/system/gesture.key; echo-n "Password: "; grep-i `xxd -p gesture.key` AndroidGestureSHA1.txt | cut-d ';'-f 1
Fetching: 0 KB/s(20 bytes in0.040s)
Password: 1845
I hope you've liked this article and learnt something. If so I would appreciate any likes, comments or shares.

Dive into ELF files using readelf command

$
0
0
http://mylinuxbook.com/readelf-command


With the understanding of the ELF format, one gets to know about its sections, the headers, etc. However, apart from the theoretical concepts of ELF, how about if we can verify and understand the format in its actual machine language i.e. the way machine understands it. Yes, we have many tools out there which are provided by the open source community, like readelf, objdump, etc to strip off an ELF binary. However, in this article we shall be exploring the readelf command or tool in Linux.

Please note, a prior understanding of the ELF format would be great for the readers of this article.

Linux readelf command

Introduction

readelf is a Linux utility which can read and understand the format of the ELF files, be it object files, executable etc.
It has the capability of displaying all sorts of information related to ELF format, be it the section headers, the sections, or the symbols, etc. One may wonder, why a programmer would we ever need to know such kind of details? Well, such details are of great help when one is debugging some “unresolved symbol” linking errors, or debugging a crash or maybe hacking an executable. The most paramount is to know how and when to use readelf.

The Usage

Here is the syntax in its abstract form:
$readelf
Well, there are numerous options offered by ‘readelf’ for many scenarios and usage. What better source than man page to get familiar with these options.
As described in the man page
NAME
readelf - Displays information about ELF files.

SYNOPSIS
readelf [-a|--all]
[-h|--file-header]
[-l|--program-headers|--segments]
[-S|--section-headers|--sections]
[-g|--section-groups]
[-t|--section-details]
[-e|--headers]
[-s|--syms|--symbols]
[--dyn-syms]
[-n|--notes]
[-r|--relocs]
[-u|--unwind]
[-d|--dynamic]
[-V|--version-info]
[-A|--arch-specific]
[-D|--use-dynamic]
[-x |--hex-dump=]
[-p |--string-dump=]
[-R |--relocated-dump=]
[-c|--archive-index]
[-w[lLiaprmfFsoRt]|
--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]]
[--dwarf-depth=n]
[--dwarf-start=n]
[-I|--histogram]
[-v|--version]
[-W|--wide]
[-H|--help]
elffile...
In further sections, we shall be discussing a few of readelf command options, how to understand them and to use them understand ELF format. Following is our example C source code i.e. the test program, which would be used, along with its object file and executable, throughout this article.
test Program
#include < stdio.h >

int d = 1;
const int N = 48;

int main()
{
char c;
c = d + N;
printf("Char is %c\n", c);

return 0;
}
Create its object file and executable:
$ gcc -c tstProgram.c
$ gcc -Wall tstProgram.c -o tstProgram

The Top-level ELF Header

Any ELF file will have a top level ELF header, which like any other header lists down what is coming up.
In our test program, we can view the ELF header using option ‘-h’
$ readelf -h ./tstProgram
What we get is;
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x8048310
Start of program headers: 52 (bytes into file)
Start of section headers: 4400 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 8
Size of section headers: 40 (bytes)
Number of section headers: 29
Section header string table index: 26
Lets understand what all these pieces of information means.
First of all, we see some bytes of data in the beginning of the Elf header.
7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
The first four bytes represent the“Magic Number”, to identify the type of file. Here, these bytes
7f 45 4c 46
The remaining bytes represents the metadata of the file, like the version, size, data encoding etc.
We shall be discussing some of the listed information, not all as most of the header information are self explanatory like the
 Data:                              2's complement, little endian
which states that the data of file is being stored in the form of 2’s complement with little endian byte order. The elf has 8 segments and 29 sections.
One important thing to note is the
 Type:                              EXEC (Executable file)
It specifies if the ELF file is an Executable. An Elf file could be an relocatable file (i.e. an object file), a shared object, core file or processor specific. A Linux kernel object is of type relocatable.
Next is the entry point.
 Entry point address:               0x8048310
All the beginner programmers are told that, the execution of a program is entered from the method main(). However, actually, entry point to a C executable is the method _start().
The hex number in front of ‘Entry point address’ i.e. 0×8048310 is the the address of this method ‘_start’ which marks the entry point for the instruction pointer. Note, this is the virtual address.
Regarding the entry through method ‘_start()’, lets confirm that through a simple test. Lets write a program without main() and try to compile it.
#include < stdio.h >

int function()
{

printf("In function \n");
return 1;
}
How about trying to compiling and linking it to get an executable? Lets try
$ gcc empty.c -o empty
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
Check out the error, it says, “In the function ‘_start’”, which confirms that, first and foremost, it calls ‘_start’, which is the entry point and there, it tries calling ‘main()’ which was not available and hence the error.
One can also confirm it through its disassembly using Linux tool ‘objdump’ which is out of the scope of this article.
Next items in the ELF header are
 Start of program headers:          52 (bytes into file)
Start of section headers: 4400 (bytes into file)
Here it specifies the offsets from the beginning of the elf file for program header table and section header table in the ELF file. The program header table lists the information related to segments needs to be created in the run time process image. However, section table lists all the information related to sections in the binary elf file. Hence, it is through program table, it comes to know which section goes to which segment.
Further moving on to
Flags:                             0x0
Section header string table index: 26
The flags specify any processor specific flags and the Section header string table contains the null terminated strings which are the names of the sections. Hence, in our case, section header string table is at index ‘26’.

Sections

Moving on what are the sections lying underneath the elf file, we use the ‘-S’ option
readelf -S ./tstProgram
Using -S option, readelf lists down the section headers of the elf file, along with the offset at which they are starting at.
In our case we get
There are 29 section headers, starting at offset 0x1130:

Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .interp PROGBITS 08048134 000134 000013 00 A 0 0 1
[ 2] .note.ABI-tag NOTE 08048148 000148 000020 00 A 0 0 4
[ 3] .note.gnu.build-i NOTE 08048168 000168 000024 00 A 0 0 4
[ 4] .gnu.hash GNU_HASH 0804818c 00018c 000020 04 A 5 0 4
[ 5] .dynsym DYNSYM 080481ac 0001ac 000050 10 A 6 1 4
[ 6] .dynstr STRTAB 080481fc 0001fc 00004c 00 A 0 0 1
[ 7] .gnu.version VERSYM 08048248 000248 00000a 02 A 5 0 2
[ 8] .gnu.version_r VERNEED 08048254 000254 000020 00 A 6 1 4
[ 9] .rel.dyn REL 08048274 000274 000008 08 A 5 0 4
[10] .rel.plt REL 0804827c 00027c 000018 08 A 5 12 4
[11] .init PROGBITS 08048294 000294 000030 00 AX 0 0 4
[12] .plt PROGBITS 080482c4 0002c4 000040 04 AX 0 0 4
[13] .text PROGBITS 08048310 000310 00018c 00 AX 0 0 16
[14] .fini PROGBITS 0804849c 00049c 00001c 00 AX 0 0 4
[15] .rodata PROGBITS 080484b8 0004b8 000018 00 A 0 0 4
[16] .eh_frame PROGBITS 080484d0 0004d0 000004 00 A 0 0 4
[17] .ctors PROGBITS 08049f14 000f14 000008 00 WA 0 0 4
[18] .dtors PROGBITS 08049f1c 000f1c 000008 00 WA 0 0 4
[19] .jcr PROGBITS 08049f24 000f24 000004 00 WA 0 0 4
[20] .dynamic DYNAMIC 08049f28 000f28 0000c8 08 WA 6 0 4
[21] .got PROGBITS 08049ff0 000ff0 000004 04 WA 0 0 4
[22] .got.plt PROGBITS 08049ff4 000ff4 000018 04 WA 0 0 4
[23] .data PROGBITS 0804a00c 00100c 00000c 00 WA 0 0 4
[24] .bss NOBITS 0804a018 001018 000008 00 WA 0 0 4
[25] .comment PROGBITS 00000000 001018 00002a 01 MS 0 0 1
[26] .shstrtab STRTAB 00000000 001042 0000ee 00 0 0 1
[27] .symtab SYMTAB 00000000 0015b8 000420 10 28 44 4
[28] .strtab STRTAB 00000000 0019d8 000206 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)
So, looking through its output, one can actually structure through the ELF file, with addresses and offsets.
As one can observe from the output, all sections have a name and a type. Each type has a meaning, important ones are as follows
  • PROGBITS : This section holds data related to the program. Examples would be sections like .text, .data, etc.
  • NOTE : This section holds data which is not used by the program though. In the above output, you can observe the section “.note.gnu.build-i” as a NOTE section. It holds a build-id, which may be necessary for a particular project build maintenance this source is part of, but is not at all needed by the application.
  • SYMTAB : This section holds the symbol table. Just as an exercise, observe this section in two cases, building the executable with debug option ‘-g’ and without the debug option.
  • REL : It is in this section it holds the relocation entries.
  • NOBITS : This section is empty and holds no data.
  • STRTAB : This section would hold the string table.
  • DYNAMIC : This Section holds details regarding dynamic linking.
  • NULL : Its an inactive one and associated to no section.
After section type, it gives the address at which the section is on memory, the offset and its size.
The next ones are all flags related to linking and debugging. Although the Flags do signify certain things like
A allocatable
X executable
W writable
M mergeable
S holds null terminated strings
G member of section group
T used for thread local storage

Segments

The segments play their role in the execution image of the ELF, the same way sections are in the linking image of the ELF. Hence, while the process is running, triggered by an ELF executable, all the instructions, data, etc are held in segments. Hence, when execution is initiated, data and information from sections are moved to segments, as per a set mapping.
To view this mapping and what segments, we use
$readelf -l ./tstProgram
In our case, the output we see is
Elf file type is EXEC (Executable file)
Entry point 0x8048310
There are 8 program headers, starting at offset 52

Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000034 0x08048034 0x08048034 0x00100 0x00100 R E 0x4
INTERP 0x000134 0x08048134 0x08048134 0x00013 0x00013 R 0x1
[Requesting program interpreter: /lib/ld-linux.so.2]
LOAD 0x000000 0x08048000 0x08048000 0x004d4 0x004d4 R E 0x1000
LOAD 0x000f14 0x08049f14 0x08049f14 0x00104 0x0010c RW 0x1000
DYNAMIC 0x000f28 0x08049f28 0x08049f28 0x000c8 0x000c8 RW 0x4
NOTE 0x000148 0x08048148 0x08048148 0x00044 0x00044 R 0x4
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4
GNU_RELRO 0x000f14 0x08049f14 0x08049f14 0x000ec 0x000ec R 0x1

Section to Segment mapping:
Segment Sections...
00
01 .interp
02 .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame
03 .ctors .dtors .jcr .dynamic .got .got.plt .data .bss
04 .dynamic
05 .note.ABI-tag .note.gnu.build-id
06
07 .ctors .dtors .jcr .dynamic .got
Note that, it states all the segments, its offset, virtual and physical address, etc.
Moreover, looking into the bottom half output, it mentions how sections are mapped to each segment. For Example,segment 02 i.e. LOAD is created through sections
.interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame

Symbol Resolution

After the compilation of a source code, we get an object file. There may be certain symbols in this object file which have undefined references i.e. their definition is still unknown. The symbols get resolved during linking i.e. if a function is being called, then the caller is updated with the function’s address, so that it can jump to its definition during execution. This is called symbol resolution. If due to any reason, the definition is not there, then the linker would complain.
Lets get more insight of symbol resolutions using readelf.
We would have to take a two file test program to explore symbol resolution.
NOTE: This example source code is entirely and only for this section “Symbol resolution”.
main.c
#include < stdio.h >
char toChar(int num);
int main()
{

int num = 3;
char ch;
ch = toChar(num);
printf("Char is %c \n", ch);

return 0;
}
ch.c
#include < stdio.h >
#define CONST 48
char toChar(int num)
{
char c;
c = num + 48;
return c;
}
Obtaining the object files and the final executable
$ gcc -c main.c -o main.o
$ gcc -c ch.c -o ch.o
$ gcc main.c ch.c -Wall -o main
Do you think, there would be any unresolved symbols in the object files?
readelf will help us find it out by peeking into its symbol table,
$readelf -s main.o
what do we see?
Symbol table '.symtab' contains 12 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FILE LOCAL DEFAULT ABS main.c
2: 00000000 0 SECTION LOCAL DEFAULT 1
3: 00000000 0 SECTION LOCAL DEFAULT 3
4: 00000000 0 SECTION LOCAL DEFAULT 4
5: 00000000 0 SECTION LOCAL DEFAULT 5
6: 00000000 0 SECTION LOCAL DEFAULT 7
7: 00000000 0 SECTION LOCAL DEFAULT 8
8: 00000000 0 SECTION LOCAL DEFAULT 6
9: 00000000 62 FUNC GLOBAL DEFAULT 1 main
10: 00000000 0 NOTYPE GLOBAL DEFAULT UND toChar
11: 00000000 0 NOTYPE GLOBAL DEFAULT UND printf
The last column lets us know the name of the symbols. All the global variables and functions, even main() are being part of our program are included in the symbol table.
Notice,
    10: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND toChar
11: 00000000 0 NOTYPE GLOBAL DEFAULT UND printf
It mentions ‘UND’ before printf and toChar, and that is how it tells about the undefined symbol. Rightly stated as the standard function ‘printf()’ would be defined in the library ‘libc’, which is not yet linked and ‘toChar()’ is defined in a separate object file.
Let’s concentrate only on symbol ‘toChar’ as ‘printf’ symbol resolution would need the knowledge of dynamic linking and much more, which is beyond the scope of this article.
Now, to see the symbol table of the final executable,
$readelf -s main
and zooming in to the symbol ‘toChar’ in the symbol table.
52: 08048424    21 FUNC    GLOBAL DEFAULT   13 toChar
Yes, it is no more undefined as when the executable was created, the object file was linked to ch.o, and this object file holds the definition of ‘toChar’ and the symbol got resolved in the final executable.

Relocation

Before the linking phase, the object files are relocatable. By relocatable, we mean all the symbol references occupying relative address spaces. Hence, when the program is actually loaded on memory, those addresses would be different.
Relocation involves:
  1. Once the symbol resolution is done, the next big thing is to combining the sections of all the object files and use them to create one section for the executable. For example, all the object files would be having a .bss section, however there has to be just one .bss, combining information from all the object files.
  2. Updating all the addresses of the symbols with its load-time addresses.
Now we shall be pulling out the roots of relocation using readelf.  We’ll get back to our very own test program i.e. tstProgram.c included in section “The Usage”.
To have a look at the relocation section of the object file,
$ readelf -r tstProgram.o

Relocation section '.rel.text' at offset 0x398 contains 4 entries:
Offset Info Type Sym.Value Sym. Name
0000000a 00000801 R_386_32 00000000 d
00000011 00000901 R_386_32 00000000 N
00000022 00000501 R_386_32 00000000 .rodata
0000002e 00000b02 R_386_PC32 00000000 printf
These are the relocation entries, which majorly hold the
offset
r_info
addend
The offset is the offset at which this particular storage unit would be placed at, on which relocation needs to be applied.
The r_info, caters two purposes – one, it gives the index of the symbol, in the symbol table with respect to which, relocation is to be made.
It is computed through following macro for both 32 bit and 64 bit, which is defined in /usr/src/linux-2.6.39/include/linux/elf.h in my case.
/* The following are used with relocations */
#define ELF32_R_SYM(x) ((x) >> 8)
#define ELF64_R_SYM(i) ((i) >> 32)
Second, it gives the type of relocation.
#define ELF32_R_TYPE(x) ((x) & 0xff)
#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
Picking a symbol, lets take ‘N’ from the relocation entry.
00000011  00000901 R_386_32          00000000   N
For symbol ‘N’,
offset = 0x00000011
r_info = 0x901
Offset from the start of the section is 0×11, for it which needs to be relocated.
First let’s compute which symbol does relocation go to. The index of the relocation, from the symbol table is, as computed using the macro mentioned above.
For 32 bit,
#define ELF32_R_SYM(x) ((x) >> 8)
Here ‘x’ is ‘r_info’ which is 0×901 in hex, and in binary it comes out to be
r_info = 100100000001
r_info >> 8 i.e. 100100000001 >> 8
= 1001
= 9 in decimal
Hence, we need to go to index 9 of the symbol table. How do we see the symbol table?
$readelf -s tstProgram.o

Symbol table '.symtab' contains 12 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FILE LOCAL DEFAULT ABS tstProgram.c
2: 00000000 0 SECTION LOCAL DEFAULT 1
3: 00000000 0 SECTION LOCAL DEFAULT 3
4: 00000000 0 SECTION LOCAL DEFAULT 4
5: 00000000 0 SECTION LOCAL DEFAULT 5
6: 00000000 0 SECTION LOCAL DEFAULT 7
7: 00000000 0 SECTION LOCAL DEFAULT 6
8: 00000000 4 OBJECT GLOBAL DEFAULT 3 d
9: 00000000 4 OBJECT GLOBAL DEFAULT 5 N
10: 00000000 57 FUNC GLOBAL DEFAULT 1 main
11: 00000000 0 NOTYPE GLOBAL DEFAULT UND printf
Check out index 9 symbol entry, which is
9: 00000000     4 OBJECT  GLOBAL DEFAULT    5 N
From here, we need to go to the relevant section, which is identified through ‘Ndx’ value. The ‘Ndx’ value is ‘5’ for symbol index ‘9’.
Ndx = 5
Further, to see, to which it needs to relocate, we need to look at the section headers.
$ readelf -S tstProgram.o
There are 11 section headers, starting at offset 0x100:

Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .text PROGBITS 00000000 000034 000039 00 AX 0 0 4
[ 2] .rel.text REL 00000000 000398 000020 08 9 1 4
[ 3] .data PROGBITS 00000000 000070 000004 00 WA 0 0 4
[ 4] .bss NOBITS 00000000 000074 000000 00 WA 0 0 4
[ 5] .rodata PROGBITS 00000000 000074 000010 00 A 0 0 4
[ 6] .comment PROGBITS 00000000 000084 00002b 01 MS 0 0 1
[ 7] .note.GNU-stack PROGBITS 00000000 0000af 000000 00 0 0 1
[ 8] .shstrtab STRTAB 00000000 0000af 000051 00 0 0 1
[ 9] .symtab SYMTAB 00000000 0002b8 0000c0 10 10 8 4
[10] .strtab STRTAB 00000000 000378 00001e 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)
Our ‘Ndx’ value is actually ‘Nr’ in this section header table. Hence, our relocation is to the section corresponding to section with ‘Nr’ value as ‘5’ which is .rodata
So, now, we can say, that relocation for the storage unit at offset 0×11, ’ in our program is in ELF section ‘.rodata’ at an offset 0×0 (taken from symbol table). There is a concrete way to compute the exact address, which depends on type of the relocation and the underlying architecture.
Here is one of such table listing the way of computation for Intel Architecture,
 Name | Value | Field | Calculation
R_386_NONE | 0 | none | none
R_386_32 | 1 | word32 | S + A
R_386_PC32 | 2 | word32 | S + A - P
R_386_GOT32 | 3 | word32 | G + A - P
R_386_PLT32 | 4 | word32 | L + A - P
R_386_COPY | 5 | none | none
R_386_GLOB_DAT | 6 | word32 | S
R_386_JMP_SLOT | 7 | word32 | S
R_386_RELATIVE | 8 | word32 | B + A
R_386_GOTOFF | 9 | word32 | S + A - GOT
R_386_GOTPC | 10 | word32 | GOT + A - P
Where,
S = value of symbol whose index resides in relocation
A = the addend, it is one of the adjustment variable for padding.
P = place of the storage unit which is being relocated.
GOT = Global Offset Table address
B = base address at which shared object is being loaded in memory during execution
To compute type of relocation, we need to use macro for 32 bit,
#define ELF32_R_TYPE(x) ((x) & 0xff)
that is, last one byte, which is 0×1.
For relocation type 1 and intel architecture, it uses
S + A

Conclusion

This was all about playing with readelf, to understand and imbibe the elf format. However, besides learning, readelf is really useful debugging linking issues, and many complicated issues due to intricacies in the elf. However, it is also a great tool to debug Linux kernel objects. It is one of those tools, which may be difficult to learn, but in-stores plethora of features and interesting ways to use it.
In the end, I would say, happy to learn about your experiences with readelf, how it helped you and what options did you use and in what way.

References

http://sourceware.org/binutils/docs-2.18/as/Section.html
http://www.skyfree.org/linux/references/ELF_Format.pdf
http://www.linuxjournal.com/article/6463?page=0,0

20 Practical Examples of RPM Commands in Linux

$
0
0
http://www.tecmint.com/20-practical-examples-of-rpm-commands-in-linux


RPM (Red Hat Package Manager) is an default open source and most popular package management utility for Red Hat based systems like (RHEL, CentOS and Fedora). The tool allows system administrators and users to install, update, uninstall, query, verify and manage system software packages in Unix/Linux operating systems. The RPM formerly known as .rpm file, that includes compiled software programs and libraries needed by the packages. This utility only works with packages that built on .rpm format.
RPM Command Examples
20 Most Useful RPM Command Examples
This article provides some useful 20 RPM command examples that might be helpful to you. With the help of these rpm command you can managed to install, update, remove packages in your Linux systems.

Some Facts about RPM (RedHat Package Manager)

  1. RPM is free and released under GPL (General Public License).
  2. RPM keeps the information of all the installed packages under /var/lib/rpm database.
  3. RPM is the only way to install packages under Linux systems, if you’ve installed packages using source code, then rpm won’t manage it.
  4. RPM deals with .rpm files, which contains the actual information about the packages such as: what it is, from where it comes, dependencies info, version info etc.

There are five basic modes for RPM command

  1. Install : It is used to install any RPM package.
  2. Remove : It is used to erase, remove or un-install any RPM package.
  3. Upgrade : It is used to update the existing RPM package.
  4. Verify : It is used to query about different RPM packages.
  5. Query : It is used for the verification of any RPM package.

Where to find RPM packages

Below is the list of rpm sites, where you can find and download all RPM packages.
  1. http://rpmfind.net
  2. http://www.redhat.com
  3. http://freshrpms.net/
  4. http://rpm.pbone.net/
Read Also :
  1. 20 YUM Command Examples in Linux
  2. 10 Wget Command Examples in Linux
  3. 30 Most Useful Linux Commands for System Administrators
Please remember you must be root user when installing packages in Linux, with the root privileges you can manage rpm commands with their appropriate options.

1. How to Check an RPM Signature Package

Always check the PGP signature of packages before installing them on your Linux systems and make sure its integrity and origin is OK. Use the following command with –checksig (check signature) option to check the signature of a package called pidgin.
[root@tecmint]# rpm --checksig pidgin-2.7.9-5.el6.2.i686.rpm

pidgin-2.7.9-5.el6.2.i686.rpm: rsa sha1 (md5) pgp md5 OK

2. How to Install an RPM Package

For installing an rpm software package, use the following command with -i option. For example, to install an rpm package called pidgin-2.7.9-5.el6.2.i686.rpm.
[root@tecmint]# rpm -ivh pidgin-2.7.9-5.el6.2.i686.rpm

Preparing... ########################################### [100%]
1:pidgin ########################################### [100%]
RPM command and options
  1. -i : install a package
  2. -v : verbose for a nicer display
  3. -h: print hash marks as the package archive is unpacked.

3. How to check dependencies of RPM Package before Installing

Let’s say you would like to do a dependency check before installing or upgrading a package. For example, use the following command to check the dependencies of BitTorrent-5.2.2-1-Python2.4.noarch.rpm package. It will display the list of dependencies of package.
[root@tecmint]# rpm -qpR BitTorrent-5.2.2-1-Python2.4.noarch.rpm

/usr/bin/python2.4
python >= 2.3
python(abi) = 2.4
python-crypto >= 2.0
python-psyco
python-twisted >= 2.0
python-zopeinterface
rpmlib(CompressedFileNames) = 2.6
RPM command and options
  1. -q : Query a package
  2. -p : List capabilities this package provides.
  3. -R: List capabilities on which this package depends..

4. How to Install a RPM Package Without Dependencies

If you know that all needed packages are already installed and RPM is just being stupid, you can ignore those dependencies by using the option –nodeps (no dependencies check) before installing the package.
[root@tecmint]# rpm -ivh --nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm

Preparing... ########################################### [100%]
1:BitTorrent ########################################### [100%]
The above command forcefully install rpm package by ignoring dependencies errors, but if those dependency files are missing, then the program will not work at all, until you install them.

5. How to check an Installed RPM Package

Using -q option with package name, will show whether an rpm installed or not.
[root@tecmint]# rpm -q BitTorrent

BitTorrent-5.2.2-1.noarch

6. How to List all files of an installed RPM package

To view all the files of an installed rpm packages, use the -ql (query list) with rpm command.
[root@tecmint]# rpm -ql BitTorrent

/usr/bin/bittorrent
/usr/bin/bittorrent-console
/usr/bin/bittorrent-curses
/usr/bin/bittorrent-tracker
/usr/bin/changetracker-console
/usr/bin/launchmany-console
/usr/bin/launchmany-curses
/usr/bin/maketorrent
/usr/bin/maketorrent-console
/usr/bin/torrentinfo-console

7. How to List Recently Installed RPM Packages

Use the following rpm command with -qa (query all) option, will list all the recently installed rpm packages.
[root@tecmint]# rpm -qa --last

BitTorrent-5.2.2-1.noarch Tue 04 Dec 2012 05:14:06 PM BDT
pidgin-2.7.9-5.el6.2.i686 Tue 04 Dec 2012 05:13:51 PM BDT
cyrus-sasl-devel-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:06 PM BDT
cyrus-sasl-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:05 PM BDT
cyrus-sasl-md5-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:04 PM BDT
cyrus-sasl-plain-2.1.23-13.el6_3.1.i686 Tue 04 Dec 2012 04:43:03 PM BDT

8. How to List All Installed RPM Packages

Type the following command to print the all the names of installed packages on your Linux system.
[root@tecmint]# rpm -qa

initscripts-9.03.31-2.el6.centos.i686
polkit-desktop-policy-0.96-2.el6_0.1.noarch
thunderbird-17.0-1.el6.remi.i686

9. How to Upgrade a RPM Package

If we want to upgrade any RPM package “–U” (upgrade) option will be used. One of the major advantages of using this option is that it will not only upgrade the latest version of any package, but it will also maintain the backup of the older package so that in case if the newer upgraded package does not run the previously installed package can be used again.
[root@tecmint]# rpm -Uvh nx-3.5.0-2.el6.centos.i686.rpm
Preparing... ########################################### [100%]
1:nx ########################################### [100%]

10. How to Remove a RPM Package

To un-install an RPM package, for example we use the package name nx, not the original package name nx-3.5.0-2.el6.centos.i686.rpm. The -e (erase) option is used to remove package.
[root@tecmint]# rpm -evv nx

11. How to Remove an RPM Package Without Dependencies

The –nodeps (Do not check dependencies) option forcefully remove the rpm package from the system. But keep in mind removing particular package may break other working applications.
[root@tecmint]# rpm -ev --nodeps vsftpd

12. How to Query a file that belongs which RPM Package

Let’s say, you have list of files and you would like to find out which package belongs to these files. For example, the following command with -qf (query file) option will show you a file /usr/bin/htpasswd is own by package httpd-tools-2.2.15-15.el6.centos.1.i686.
[root@tecmint]# rpm -qf /usr/bin/htpasswd

httpd-tools-2.2.15-15.el6.centos.1.i686

13. How to Query a Information of Installed RPM Package

Let’s say you have installed an rpm package and want to know the information about the package. The following -qi (query info) option will print the available information of the installed package.
[root@tecmint]# rpm -qi vsftpd

Name : vsftpd Relocations: (not relocatable)
Version : 2.2.2 Vendor: CentOS
Release : 11.el6 Build Date: Fri 22 Jun 2012 01:54:24 PM BDT
Install Date: Mon 17 Sep 2012 07:55:28 PM BDT Build Host: c6b8.bsys.dev.centos.org
Group : System Environment/Daemons Source RPM: vsftpd-2.2.2-11.el6.src.rpm
Size : 351932 License: GPLv2 with exceptions
Signature : RSA/SHA1, Mon 25 Jun 2012 04:07:34 AM BDT, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem
URL : http://vsftpd.beasts.org/
Summary : Very Secure Ftp Daemon
Description :
vsftpd is a Very Secure FTP daemon. It was written completely from
scratch.

14. Get the Information of RPM Package Before Installing

You have download a package from the internet and want to know the information of a package before installing. For example, the following option -qip (query info package) will print the information of a package sqlbuddy.
[root@tecmint]# rpm -qip sqlbuddy-1.3.3-1.noarch.rpm

Name : sqlbuddy Relocations: (not relocatable)
Version : 1.3.3 Vendor: (none)
Release : 1 Build Date: Wed 02 Nov 2011 11:01:21 PM BDT
Install Date: (not installed) Build Host: rpm.bar.baz
Group : Applications/Internet Source RPM: sqlbuddy-1.3.3-1.src.rpm
Size : 1155804 License: MIT
Signature : (none)
Packager : Erik M Jacobs
URL : http://www.sqlbuddy.com/
Summary : SQL Buddy â Web based MySQL administration
Description :
SQLBuddy is a PHP script that allows for web-based MySQL administration.

15. How to Query documentation of Installed RPM Package

To get the list of available documentation of an installed package, use the following command with option -qdf (query document file) will display the manual pages related to vmstat package.
[root@tecmint]# rpm -qdf /usr/bin/vmstat

/usr/share/doc/procps-3.2.8/BUGS
/usr/share/doc/procps-3.2.8/COPYING
/usr/share/doc/procps-3.2.8/COPYING.LIB
/usr/share/doc/procps-3.2.8/FAQ
/usr/share/doc/procps-3.2.8/NEWS
/usr/share/doc/procps-3.2.8/TODO

16. How to Verify a RPM Package

Verifying a package compares information of installed files of the package against the rpm database. The -Vp (verify package) is used to verify a package.
[root@tecmint downloads]# rpm -Vp sqlbuddy-1.3.3-1.noarch.rpm

S.5....T. c /etc/httpd/conf.d/sqlbuddy.conf

17. How to Verify all RPM Packages

Type the following command to verify all the installed rpm packages.
[root@tecmint]# rpm -Va

S.5....T. c /etc/rc.d/rc.local
.......T. c /etc/dnsmasq.conf
.......T. /etc/ld.so.conf.d/kernel-2.6.32-279.5.2.el6.i686.conf
S.5....T. c /etc/yum.conf
S.5....T. c /etc/yum.repos.d/epel.repo

18. How to Import an RPM GPG key

To verify RHEL/CentOS/Fedora packages, you must import the GPG key. To do so, execute the following command. It will import CentOS 6 GPG key.
[root@tecmint]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

19. How to List all Imported RPM GPG keys

To print all the imported GPG keys in your system, use the following command.
[root@tecmint]# rpm -qa gpg-pubkey*

gpg-pubkey-0608b895-4bd22942
gpg-pubkey-7fac5991-4615767f
gpg-pubkey-0f2672c8-4cd950ee
gpg-pubkey-c105b9de-4e0fd3a3
gpg-pubkey-00f97f56-467e318a
gpg-pubkey-6b8d79e6-3f49313d
gpg-pubkey-849c449f-4cb9df30

20. How To rebuild Corrupted RPM Database

Sometimes rpm database gets corrupted and stops all the functionality of rpm and other applications on the system. So, at the time we need to rebuild the rpm database and restore it with the help of following command.
[root@tecmint]# cd /var/lib
[root@tecmint]# rm __db*
[root@tecmint]# rpm --rebuilddb
[root@tecmint]# rpmdb_verify Packages

Integreen Brings Open Source Traffic Monitoring To Italy

$
0
0
http://www.thepowerbase.com/2012/12/integreen-brings-open-source-traffic-monitoring-to-italy


Integreen Brings Open Source Traffic Monitoring To Italy

The best way to fight an enemy is to start by learning everything you can about it, which is exactly what the team at Integreen are looking to do in the Italian city of Bolzano. By using the latest technology and banking on open source software, Integreen hopes to provide the city management with enough traffic and environmental data to help them more effectively implement environmentally conscience programs such as mass transit.

Bluetooth Traffic Monitoring

Integreen’s goal is to use the relatively new technique of Bluetooth traffic monitoring to gather data on vehicular and pedestrian traffic throughout the city. By putting Bluetooth scanners at known locations and combining the resulting data, Integreen can extrapolate data like traffic density and average transit times without requiring costly and hard to maintain traditional vehicle counters.
There are of course, some limitations to this technology. Naturally, any vehicle (or at least, occupant riding in said vehicle) needs to have a Bluetooth device, and even then, it must be set to the so called “Discoverable” mode. While this does significantly lower the amount of data you will be able to gather (compared to say, a device which measures pressure on the road), it has the distinct advantage of being many orders of magnitude cheaper and easier to deploy.
Even with the limited sample size that Bluetooth traffic monitoring provides, there is still a wealth of data to be collected. As long as you have a handful of devices that you can track around through the city, you’ll be able to determine average transit times and locate the areas of highest congestion. You’ll never be able to get an accurate idea of how many vehicles are with Bluetooth traffic monitoring, but you can certainly determine where the concentrations of them are and how fast they are moving around.
Still, an educated guess can be made by comparing the physical vehicles with the detected Bluetooth devices and finding a rough average. If one road is equipped with the hardware required to count physical devices, and that is compared with the detected Bluetooth devices in the same area, a rough average can be found.
If you can estimate that 25% of vehicles have discoverable Bluetooth devices with this method, it would be safe enough to multiply the number of discovered Bluetooth devices in other parts of the city by 4 to get a rough idea of how many physical vehicles there are.

Scanner Development

For this project, Integreen needed a low cost, rugged, and highly efficient device which could be deployed for long stretches of time. Answering the call was the ever popular Raspberry Pi ARM development board, which gave the team at Integreen a powerful and efficient Linux computer at a fraction of the cost of commercial traffic monitoring systems.
Combined with off-the-shelf Bluetooth hardware, a battery pack, and placed in a weatherproof plastic enclosure, the Raspberry Pi became the perfect hardware platform for Integreen to conduct its research with.
Internals of Raspberry Pi Monitoring Device
So far, four such devices have been constructed and strategically located around Bolzano. The team at Integreen is still fine tuning the operation to determine the best location for their Bluetooth scanners, and how to correlate their data to the real world traffic situation. So far, the team has focused on physically counting vehicles passing over a stretch of road, and comparing that to their Bluetooth scanners running various different configurations.
With continued experimentation, the team hopes to both learn about the ideal placement of these devices, and adjust their software to return the maximum amount of data possible.
On the software side, developer Paolo Valleri has been working on adapting multiple FOSS software projects for use in the project.

Open Data

By opening up the development of their Bluetooth traffic monitoring system, Integreen is helping more than just the city of Bolzano. Their project can serve as an inspiration for other communities who could benefit from this type of data but either cannot afford or don’t have access to traditional traffic monitoring systems.
It doesn’t seem like much, but having access to this kind of information can be a huge advantage for small towns which might not otherwise be adequately represented when it comes time to spend development money. Being able to determine the flow of traffic is essential in many aspects of city planning and management, such as ensuring the safety of intersections and planning bus routes and stops.
Information that can make or break these kind of everyday services shouldn’t be locked up, it should be in the hands of everyone who lives in the community.
With the published details on their hardware setup and backend software, Integreen is laying the groundwork for a whole new generation of low cost vehicle monitoring It’s not unreasonable to imagine a future where traffic data is crowd sourced by concerned citizens with their own Bluetooth traffic monitoring devices all over the city, helping to ensure the quality of life in their own communities.

High-Availability Storage With GlusterFS 3.2.x On CentOS 6.3 - Automatic File Replication (Mirror) Across Two Storage Servers

$
0
0
http://www.howtoforge.com/high-availability-storage-with-glusterfs-3.2.x-on-centos-6.3-automatic-file-replication-mirror-across-two-storage-servers


This tutorial shows how to set up a high-availability storage with two storage servers (CentOS 6.3) that use GlusterFS. Each storage server will be a mirror of the other storage server, and files will be replicated automatically across both storage servers. The client system (CentOS 6.3 as well) will be able to access the storage as if it was a local filesystem. GlusterFS is a clustered file-system capable of scaling to several peta-bytes. It aggregates various storage bricks over Infiniband RDMA or TCP/IP interconnect into one large parallel network file system. Storage bricks can be made of any commodity hardware such as x86_64 servers with SATA-II RAID and Infiniband HBA.
I do not issue any guarantee that this will work for you!

1 Preliminary Note

In this tutorial I use three systems, two servers and a client:
  • server1.example.com: IP address 192.168.0.100 (server)
  • server2.example.com: IP address 192.168.0.101 (server)
  • client1.example.com: IP address 192.168.0.102 (client)
All three systems should be able to resolve the other systems' hostnames. If this cannot be done through DNS, you should edit the /etc/hosts file so that it looks as follows on all three systems:
vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.100 server1.example.com server1
192.168.0.101 server2.example.com server2
192.168.0.102 client1.example.com client1

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
(It is also possible to use IP addresses instead of hostnames in the following setup. If you prefer to use IP addresses, you don't have to care about whether the hostnames can be resolved or not.)

2 Enable Additional Repositories

server1.example.com/server2.example.com/client1.example.com:
First we import the GPG keys for software packages:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Then we enable the EPEL6 repository on our CentOS systems:
rpm --import https://fedoraproject.org/static/0608B895.txt
cd /tmp
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm -ivh epel-release-6-7.noarch.rpm
yum install yum-priorities
Edit /etc/yum.repos.d/epel.repo...
vi /etc/yum.repos.d/epel.repo
... and add the line priority=10 to the [epel] section:
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[...]

3 Setting Up The GlusterFS Servers

server1.example.com/server2.example.com:
GlusterFS is available as a package for EPEL, therefore we can install it as follows:
yum install glusterfs-server
Create the system startup links for the Gluster daemon and start it:
chkconfig --levels 235 glusterd on
/etc/init.d/glusterd start
The command
glusterfsd --version
should now show the GlusterFS version that you've just installed (3.2.7 in this case):
[root@server1 ~]# glusterfsd --version
glusterfs 3.2.7 built on Jun 11 2012 13:22:28
Repository revision: git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2011 Gluster Inc.
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.
[root@server1 ~]#
If you use a firewall, ensure that TCP ports 111, 24007, 24008, 24009-(24009 + number of bricks across all volumes) are open on server1.example.com and server2.example.com.
Next we must add server2.example.com to the trusted storage pool (please note that I'm running all GlusterFS configuration commands from server1.example.com, but you can as well run them from server2.example.com because the configuration is repliacted between the GlusterFS nodes - just make sure you use the correct hostnames or IP addresses):
server1.example.com:
On server1.example.com, run
gluster peer probe server2.example.com
[root@server1 ~]# gluster peer probe server2.example.com
Probe successful
[root@server1 ~]#
The status of the trusted storage pool should now be similar to this:
gluster peer status
[root@server1 ~]# gluster peer status
Number of Peers: 1
Hostname: server2.example.com
Uuid: 7cd93007-fccb-4fcb-8063-133e6ba81cd9
State: Peer in Cluster (Connected)
[root@server1 ~]#
Next we create the share named testvol with two replicas (please note that the number of replicas is equal to the number of servers in this case because we want to set up mirroring) on server1.example.com and server2.example.com in the /data directory (this will be created if it doesn't exist):
gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data
[root@server1 ~]# gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data
Creation of volume testvol has been successful. Please start the volume to access data.
[root@server1 ~]#
Start the volume:
gluster volume start testvol
It is possible that the above command tells you that the action was not successful:
[root@server1 ~]# gluster volume start testvol
Starting volume testvol has been unsuccessful
[root@server1 ~]#
In this case you should check the output of...
server1.example.com/server2.example.com:
netstat -tap | grep glusterfsd
on both servers.
If you get output like this...
[root@server1 ~]# netstat -tap | grep glusterfsd
tcp        0      0 *:24009                     *:*                         LISTEN      1365/glusterfsd
tcp        0      0 localhost:1023              localhost:24007             ESTABLISHED 1365/glusterfsd
tcp        0      0 server1.example.com:24009   server1.example.com:1023    ESTABLISHED 1365/glusterfsd
[root@server1 ~]#
... everything is fine, but if you don't get any output...
[root@server2 ~]# netstat -tap | grep glusterfsd
[root@server2 ~]#
... restart the GlusterFS daemon on the corresponding server (server2.example.com in this case):
server2.example.com:
/etc/init.d/glusterfsd restart
Then check the output of...
netstat -tap | grep glusterfsd
... again on that server - it should now look like this:
[root@server2 ~]# netstat -tap | grep glusterfsd
tcp        0      0 *:24010                 *:*                     LISTEN      1458/glusterfsd
tcp        0      0 localhost.localdom:1021 localhost.localdo:24007 ESTABLISHED 1458/glusterfsd
[root@server2 ~]#
Now back to server1.example.com:
server1.example.com:
You can check the status of the volume with the command
gluster volume info
[root@server1 ~]# gluster volume info
Volume Name: testvol
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: server1.example.com:/data
Brick2: server2.example.com:/data
[root@server1 ~]#
By default, all clients can connect to the volume. If you want to grant access to client1.example.com (= 192.168.0.102) only, run:
gluster volume set testvol auth.allow 192.168.0.102
Please note that it is possible to use wildcards for the IP addresses (like 192.168.*) and that you can specify multiple IP addresses separated by comma (e.g. 192.168.0.102,192.168.0.103).
The volume info should now show the updated status:
gluster volume info
[root@server1 ~]# gluster volume info
Volume Name: testvol
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: server1.example.com:/data
Brick2: server2.example.com:/data
Options Reconfigured:
auth.allow: 192.168.0.102
[root@server1 ~]#

4 Setting Up The GlusterFS Client

client1.example.com:
On the client, we can install the GlusterFS client as follows:
yum install glusterfs-client
Then we create the following directory:
mkdir /mnt/glusterfs
That's it! Now we can mount the GlusterFS filesystem to /mnt/glusterfs with the following command:
mount.glusterfs server1.example.com:/testvol /mnt/glusterfs
(Instead of server1.example.com you can as well use server2.example.com in the above command!)
You should now see the new share in the outputs of...
mount
[root@client1 ~]# mount
/dev/mapper/vg_client1-LogVol00 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
server1.example.com:/testvol on /mnt/glusterfs type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
[root@client1 ~]#
... and...
df -h
[root@client1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_client1-LogVol00
                      9.7G  1.7G  7.5G  19% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/sda1             504M   39M  440M   9% /boot
server1.example.com:/testvol
                       29G  1.1G   27G  4% /mnt/glusterfs
[root@client1 ~]#
Instead of mounting the GlusterFS share manually on the client, you could modify /etc/fstab so that the share gets mounted automatically when the client boots.
Open /etc/fstab and append the following line:
vi /etc/fstab
[...]
server1.example.com:/testvol /mnt/glusterfs glusterfs defaults,_netdev 0 0
(Again, instead of server1.example.com you can as well use server2.example.com!)
To test if your modified /etc/fstab is working, reboot the client:
reboot
After the reboot, you should find the share in the outputs of...
df -h
... and...
mount

5 Testing

Now let's create some test files on the GlusterFS share:
client1.example.com:
touch /mnt/glusterfs/test1
touch /mnt/glusterfs/test2
Now let's check the /data directory on server1.example.com and server2.example.com. The test1 and test2 files should be present on each node:
server1.example.com/server2.example.com:
ls -l /data
[root@server1 ~]# ls -l /data
total 8
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test1
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test2
[root@server1 ~]#
Now we shut down server1.example.com and add/delete some files on the GlusterFS share on client1.example.com.
server1.example.com:
shutdown -h now
client1.example.com:
touch /mnt/glusterfs/test3
touch /mnt/glusterfs/test4
rm -f /mnt/glusterfs/test2
The changes should be visible in the /data directory on server2.example.com:
server2.example.com:
ls -l /data
[root@server2 ~]# ls -l /data
total 8
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test1
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test3
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test4
[root@server2 ~]#
Let's boot server1.example.com again and take a look at the /data directory:
server1.example.com:
ls -l /data
[root@server1 ~]# ls -l /data
total 8
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test1
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test2
[root@server1 ~]#
As you see, server1.example.com hasn't noticed the changes that happened while it was down. This is easy to fix, all we need to do is invoke a read command on the GlusterFS share on client1.example.com, e.g.:
client1.example.com:
ls -l /mnt/glusterfs/
[root@client1 ~]# ls -l /mnt/glusterfs/
total 8
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test1
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test3
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test4
[root@client1 ~]#
Now take a look at the /data directory on server1.example.com again, and you should see that the changes have been replicated to that node:
server1.example.com:
ls -l /data
[root@server1 ~]# ls -l /data
total 4
-rw-r--r-- 1 root root 0 2012-12-17 11:17 test1
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test3
-rw-r--r-- 1 root root 0 2012-12-17 11:38 test4
[root@server1 ~]#

6 Links

Weekend Project: Become a Linux Contributor

$
0
0
http://www.linux.com/learn/docs/683712-weekend-project-become-a-linux-contributor


 lot of you fine readers are already contributors to your favorite worthy Linux projects. I'll wager there are also some who would love to contribute in some way, but aren't quite sure how. So here are a few ideas to get you inspired and, hopefully, involved.

http://upload.wikimedia.org/wikipedia/commons/6/63/USCurrency_Federal_Reserve.jpgMoney

Many projects accept donations of money. They may have wish lists of hardware for testing, or other items. A little bit is better than zero, so don't feel badly if you can only give a little.  I suggest focusing on a limited number of projects that you can support regularly, rather than trying to spread your finances too thinly.

Kindness

This is a lot more valuable than you may think. I'm not sure where the "you must have a hide this thick to enter" ethos came from, but it's bizarre and it doesn't work. Most people prefer to be treated with courtesy and friendliness, and that goes a long way in building a friendly, productive atmosphere. How to Protect Your Open Source Project From Poisonous People is a fast introduction to the subject.
If you enjoy encouraging people, and helping groups work together, you just might be a born community manager. The Art of Community by Jono Bacon is an excellent resource for anyone nutty enough to think they might want to be a Linux cat-herder.

Help Noobs

Every day there are hordes of new Linux users, and users new to a particular piece of Linux software. Having the patience to help newbies is incredibly valuable, and there are a lot of fairly simple ways to do this without it turning into a time sink. Your #1 resource is a good FAQ. It's not that hard to assemble and organize one from forum posts and IRC discussions, and it's a valuable way to help the developers of your favorite projects. Answering questions is a lot easier when you can point people to helpful resources.

Learn to Code

It all starts with the code, and all you need to learn is time and effort. I suggest starting with Bash shell scripting, codebecause it is the default Linux shell, and you'll need to know it no matter what other languages you learn. Don't make yourself crazy trying to decide which scripting or programming language to learn first-- just pick one. Everyone has their own ideas which ones are essential, and you can overthink yourself right out of even trying to start. Javascript, Python, Ruby, and PHP are all popular, fairly easy to learn, and well-documented. C is an oldtimer that is not going away anytime soon. Basic programming concepts are the same no matter what language you're using, so as soon as you develop some proficiency with one it's easier to learn additional languages.

Web Design and Marketing

Don't let the word "marketing" turn you off because I'm not talking about selling a project, but rather presenting its best face to the world. A lot of Linux and FOSS projects have Web sites that don't publish useful information. Like what the software does, in plain language. News and howtos are jumbled randomly into single blogs, or there is little useful communication of any kind. A project Web site doesn't need to be fancy, but it does need to be informative, and organized enough that interested visitors can learn cool things about the project.

Artwork and Multimedia

There are a lot of generous artists contributing beautiful work to Linux projects. Appearance does matter-- we stare at these dang things all day long, so they might as well look nice.

Encourage the Boss

If your business relies on Linux software, talk to the boss about supporting it in some way.

Write Howtos

The most brilliant software will just sit there if nobody knows how to use it. "Read the code" is not a substitute for good howtos. (Bruce Byfield offers some guidance on becoming a professional technical writer in Careers in Linux: Technical Writing.)

Users into Contributors

Turning users into contributors is what makes Linux and FOSS work. It takes a lot of different roles to support any software project, so don't be shy-- somewhere out there is the right one for you, where you can do satisfying work and make a difference.

Linux In The Cloud: Windows Azure vs. Amazon Web Services

$
0
0
http://tuts.pinehead.tv/2013/01/07/linux-in-the-cloud-windows-azure-vs-amazon-web-services


Until recently, the most viable cloud option for Linux virtual servers has been Amazon Web Services. But in mid 2012, Microsoft launched Linux Virtual Servers on Windows Azure. If you don’t know already, Windows Azure is a cloud platform for hosting back-end content for apps and traditional Windows Server, SQL Server, and now Linux and other open source database servers. Microsoft has come a long way with its support for open source and Linux. Given that, I set out on a mission to review and compare these services to Amazon. I’ll be honest up-front–when I set out on this mission I was completely biased towards Amazon, and I was surprised by what I found.

What I’m Comparing

I think it’s important to detail what services I’m comparing, as of now Amazon Web Servers has many other cloud services that Windows Azure does not. My primary focus will be on Linux virtual servers, the hardware specs, Azure interface, and other aspects of running Linux Virtual Severs in the cloud.

Where Azure Beats Amazon

Microsoft is clearly trying to mimic the new “m” (metro) design that comes with the new Windows 8. From a usability standpoint, parts of it are very slick. The entire interface is very “ajaxy”–from building a new server to viewing options, it loads lightning fast and presents the data in column fashion. I can’t be more thrilled with the quick launch menu and how fast you can launch a basic Linux server.
It takes me three clicks to build a Linux VPS assuming I’m selecting one of the “quick launch” images, which include CentOS, Suse, and Ubuntu servers. I guess I’m lucky I’m a CentOS guy.
Screen Shot 2013-01-03 at 10.38.51 PM
Quick Launch
When I think Linux VPS in the cloud, I think of starting on the smallest possible server I can and then scaling when capacity is required. The Azure VPS “micro” server comes with more memory and a significant more disk space than Amazon Web Services “micro” instance. The root partitions are also larger in size by default. However, Azure does not allow you to resize your partition like Amazon does.

Options For Security

When you build your first Linux server on Amazon, you’re required to use a .pem key file for security. The file is intended to give you root access to your servers, securely  However, if you need to build a server fast, on the fly, and don’t have time to run the putty ppk conversion or have a UNIX machine handy, then you’re just out of luck. That first step towards getting started on Amazon has tripped up many first time Linux users as they dive into the cloud. However, Microsoft gives you two options while building your first image. You can either chose to use a security key file or you can use a root username and password. The username and password method is less secure but if you have other plans for security for your network and servers, bypassing the mandatory pem file will save you a lot of time and hassle in the end. Bottom line, secure or not secure, I love that Microsoft gives you the option.

Basic Benchmark Test

I performed some basic benchmark tests on an Amazon “micro” instance and an Azure “extra small” instance. What I found from random “time” benchmarking tests is the Amazon micro instance and Windows Azure are pretty consistent even through those basic benchmark tests. A lot of the differences are due to Azure by default providing larger disk space on the system which causes increased time when performing disk commands.

Here Is Where Azure Can Improve

Charging for stopped instances is a deal breaker. If you build a virtual server, whether the server is running or not running, you are charged for CPU/hours. Amazon does not charge for instances that are stopped but only for running instances. I have come to find it very advantageous to be able to have stopped servers that I can go back to months down the road and work on. Having to pay for those on Azure would cost too much.
Screen Shot 2013-01-03 at 9.27.43 PM
Azure Charges For Stopped Instances
I can’t control the instance by right clicking on the instance. After working with Azure for a decent time period I was consistently annoyed that in order to stop, start or delete my instance I had to first click on the instance name then browse the bottom of my screen for navigation options. Working with Amazon web services or VMware for so long, it’s become intuitive for me to find the options for my instance by a right navigation menu. Of course, I still prefer a start menu as well…
Screen Shot 2013-01-03 at 9.55.43 PM
Bottom Navigation And Confirmation
With simplicity comes complexity and the Azure interface has some. When working on Amazon, I’m presented with a dashboard for my servers and everything I could possible want to do including configuring a firewall, load balancing, changing IP addresses, configuring volumes and more. However, while Azure proves they have a simple user interface when it comes to launching servers, managing complex operations in the interface seems elusive. In fact, it seems downright impossible. For instance, if there is a firewall or load balancing management, I can’t find it. I’m not saying they don’t exist–I’m saying that I was unable to find those options from my “portal.” If they don’t exist, they are must haves for running servers in the cloud and Azure needs them. If they do either it’s not available under my “free tier” or they need to be made more readily available and intuitive for the user.
Screen Shot 2013-01-03 at 10.45.56 PM
This is the detailed view of the instance where I was hoping to find options such as changing the static IP address on the server. However, those options seemed elusive still.

Conclusion

Out of the box I’m impressed with what Microsoft has created at Azure. They’ve created a simple to use basic environment, which makes it extremely simple to build Linux servers in the cloud. A little leeway for Azure’s shortcomings can be given based on the age of the service (for Linux) but Azure will be a great cloud solution whether you’re hosting small scale web apps or large apps that need scaling.

How to extend Nagios for custom monitoring

$
0
0
http://www.openlogic.com/wazi/bid/256126/how-to-extend-nagios-for-custom-monitoring


The powerful Nagios network monitoring platform lets you supercharge its capabilities with a host of available plugins. If you can't find a plugin to do just what you need, you can easily write your own – here's how.
Nagios plugins can be written in any programming language supported on the platform that's running Nagios. Bash is a popular choice for writing Nagios plugins because it is both powerful and simple.
Every valid Nagios check from a plugin has to produce a numeric exit status. Possible statuses are:
  • 0 – Everything is OK and the check completed successfully.
  • 1 – The resource is in warning state. Something is not quite right.
  • 2 – The resource is in critical state. A host may be down or a service not running.
  • 3 – Unknown state, which does not necessarily indicate a problem, but rather shows that the check cannot give a clear, unambiguous status.
A plugin can also print a text message. By default, this message is shown in the Nagios web interface and in Nagios mail alerts. Even though messages are not a requirement, you usually find them in available plugins because they tell users what is wrong without forcing them to consult documentation.
A simple Nagios plugin written in Bash looks like this. This example plugin checks a specified file:
#!/bin/bash

#assign the first argument ($1) as the filename
filename=$1

#first check if the file exists. this is the first and most basic check with which you should begin
if [ ! -e $filename ]; then
echo "CRITICAL status - file $filename doesn't exist"
exit 2 #returns critical status because your worst scenario is that the file doesn't even exist

#if the previous condition passes (file exists) then next check if it is readable
elif [ ! -r $filename ]; then
echo "WARNING status - file $filename is not readable."
exit 1 #returns warning status because this state is better than having no file at all

#if the previous condition passes, check if it is a regular file and not a directory or device file
elif [ ! -f $filename ]; then
echo "UNKNOWN status - file $filename is not a file."
exit 3 #returns unknown status

#if all of the above checks pass then it's ok
else
echo "OK status - file is OK"
exit 0 #Return OK status
fi
Comments (which start with # in Bash) explain the code; if you need more clarification or want to learn more about Bash's file test operators, check the documentation.
Even though this example is simple, it is a good illustration of how to implement Nagios plugin logic. Always start by probing for the worst possible scenarios. Only when all checks pass should the script exit with status OK. Make sure to specify the clarifying message before exiting.

Using the plugin

By default, all Nagios plugins are stored in the directory defined in the $USER1 macro, defined in the file /etc/nagios/private/resource.cfg. In a typical Nagios installation from EPEL's repository, $USER1 is defined to /usr/lib/nagios/plugins. The first thing you should do with your plugin is to copy it to the directory defined in $USER1 macro. Usually plugins are owned by root and have permissions of 755; Nagios works under the user nagios, which belongs to the nagios group, so the script requires read and execute permissions for other groups.
Once you place a script in the /usr/lib/nagios/plugins directory you have to define it as a Nagios command within the file /etc/nagios/objects/commands.cfg. Let's say you named your script check_file.sh; add the following command definition:
# our custom file check command
define command{
command_name check_file
command_line $USER1$/check_file.sh $ARG1$
}
That should be pretty clear. The variable $ARG1$ stands for the first argument passed to the Nagios command, which in our case should be the name of the file. If you want to pass more arguments, use $ARG2$ for the second argument, $ARG3$ for the third, and so on.
To start using your plugin, define it as a service in your nagios configuration(services.cfg for example):
define service{
use local-service
host_name localhost
service_description Check the file /etc/passwd
check_command check_file!/etc/passwd
}
The above service is defined for localhost (host_name localhost) and uses the template (see the documentation on object inheritance for templates and how they work) for local-service (use local-service). The most important part is the check_command directive. It specifies the command check_file, followed by an exclamation point as a separator, followed by a file name as argument. If your plugin has more than one argument you can separate them with additional exclamation points.

Running Nagios plugins remotely

One obvious flaw of the example check_file plugin is that it works locally, which means you cannot check a file on a remote server. You can resolve this problem in a number of ways.
The first approach would be to use the ssh command to execute the script remotely. This requires you to copy the script to a remote server and make use of ssh's ability to run remote commands. It also requires you to set up passwordless key login for the Nagios server and its nagios user. If you are not sure how to do this, check this article for all the details.
The benefit of this first approach is that you have all the power and flexibility of running commands locally for the monitored server. The drawback is that the Nagios server has to be able to log in passwordless with a key to the remote server. This is a security issue and not recommended for sensitive environments.
A second and more secure approach is to use the SNMP extend feature. This requires that you have the net-snmp package (for CentOS) installed and configured on the remote server.
To use the SNMP extend command, first copy the check_file.sh script to the remote server. You can place it in the directory /usr/bin/, for example.
Next, add the configuration directive extend check_passwd_file /usr/bin/check_file.sh /etc/passwd to the file /etc/snmp/snmpd.conf on the remote server. The syntax is extend some_alias command argument. Here comes the main inconvenience of this method – you have to define an alias for each separate check, which in our case means an alias for each separate file we want to test, because you cannot send arguments over SNMP.
Any changes in the file /etc/snmp/snmpd.conf require you to reload the snmpd service with the command service snmpd reload (for CentOS). After that you can test the new check with the snmpget command, as in snmpget -v2c -c public -OvQ 10.0.0.2 NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"check_passwd_file\". This example snmpget command queries the server 10.0.0.2 over SNMP version 2c with the "public" community string. The object identifier (OID) for your custom SNMP extended commands is NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"some_alias\".
Unfortunately the above command cannot be implemented directly in Nagios. If snmpget works properly and can connect to the remote host, it will always return status 0, indicating everything is OK, because the program snmpget itself exits without an error. Thus even if a file doesn't exist, the check script will return status 0, though it will print the correct message that the file is not there.
You can address this problem by taking advantage of a special plugin for Nagios called check_snmp_extend.sh. This plugin takes the first word from a status message and sets the status according to it. It was in anticipation of using this plugin that we set the messages in our example script check_file.sh to start with OK, CRITICAL, WARNING, and UNKNOWN.
To start using the check_snmp_extend.sh plugin, first download it, then place it in the directory /usr/lib/nagios/plugins ($USER1 macro) on the Nagios server. On CentOS you have to edit the script check_snmp_extend.sh and replace /usr/local/nagios/libexec/utils.sh with /usr/lib/nagios/plugins/utils.sh, which is the correct path for the utils.sh script.
After that you can use check_snmp_extend.sh just like any other plugin. First, define it as a command:
define command{
command_name check_snmp_extend
command_line $USER1$/check_snmp_extend.sh $HOSTADDRESS$ $ARG1$
}
After that define a service:
define service{
use generic-service
host_name somehost.example.org
service_description Check For /etc/passwd
check_command check_snmp_extend!check_passwd_file
}
Using SNMP's extend option is as secure as your SNMP configuration is. This approach requires minimal modification on remote hosts and ensures a standard setup conforming to best security practices. You can find other Nagios plugins for similar purposes, such as nrpe, but they require the remote installation of additional services, which is not always a good idea from a security and compatibility point of view.
As you can see, it's easy to extend Nagios with custom-written plugins. The fact that Nagios allows such extension is one of the reasons many administrators prefer it over other monitoring solutions.

Linux tip: Using the read command

$
0
0
http://www.itworld.com/development/333494/linux-tip-using-read-command


This content is excerpted from the new 3rd Ed. of 'A Practical Guide to Linux: Commands, Editors, and Shell Programming', authored by Mark Sobell, ISBN 013308504X, published by Pearson/Prentice Hall Professional, Sept. 2012, Copyright 2013 Mark G. Sobell. For more info please visit www.sobell.com or the publisher site, www.informit.com


read: Accepts User Input

A common use for user-created variables is storing information that a user enters in response to a prompt. Using read, scripts can accept input from the user and store that input in variables. The read builtin reads one line from standard input and assigns the words on the line to one or more variables:
[Five Linux predictions for 2013 and 14 of the most useful Linux websites]

$ cat read1
echo -n "Go ahead: "
read firstline
echo "You entered: $firstline"
$ ./read1
Go ahead: This is a line.
You entered: This is a line.

The first line of the read1 script uses echo to prompt for a line of text. The –n option suppresses the following NEWLINE, allowing you to enter a line of text on the same line as the prompt. The second line reads the text into the variable firstline. The third line verifies the action of read by displaying the value of firstline.
The –p (prompt) option causes read to send to standard error the argument that follows it; read does not terminate this prompt with a NEWLINE. This feature allows you to both prompt for and read the input from the user on one line:

$ cat read1a
read -p "Go ahead: " firstline
echo "You entered: $firstline"
$ ./read1a
Go ahead: My line.
You entered: My line.

The variable in the preceding examples is quoted (along with the text string) because you, as the script writer, cannot anticipate which characters the user might enter in response to the prompt. Consider what would happen if the variable were not quoted and the user entered * in response to the prompt:


$ cat read1_no_quote

read -p "Go ahead: " firstline
echo You entered: $firstline
$ ./read1_no_quote
Go ahead: *
You entered: read1 read1_no_quote script.1
$ ls
read1     read1_no_quote     script.1

The ls command lists the same words as the script, demonstrating that the shell expands the asterisk into a list of files in the working directory. When the variable $firstline is surrounded by double quotation marks, the shell does not expand the asterisk. Thus the read1 script behaves correctly:

$ ./read1
Go ahead: *
You entered: *

REPLY
When you do not specify a variable to receive read's input, bash puts the input into the variable named REPLY. The following read1b script performs the same task as read1:

$ cat read1b
read -p "Go ahead: "
echo "You entered: $REPLY"

The read2 script prompts for a command line, reads the user's response, and assigns it to the variable cmd. The script then attempts to execute the command line that results from the expansion of the cmd variable:

$ cat read2
read -p "Enter a command: " cmd
$cmd
echo "Thanks"

In the following example, read2 reads a command line that calls the echo builtin. The shell executes the command and then displays Thanks. Next read2 reads a command line that executes the who utility:

$ ./read2
Enter a command: echo Please display this message.
Please display this message.
Thanks
$ ./read2
Enter a command: who
max     pts/4      2013-06-17 07:50 (:0.0)
sam     pts/12     2013-06-17 11:54 (guava)
Thanks

If cmd does not expand into a valid command line, the shell issues an error message:

$ ./read2
Enter a command: xxx
./read2: line 2: xxx: command not found
Thanks

 The read3 script reads values into three variables. The read builtin assigns one word (a sequence of nonblank characters) to each variable:

$ cat read3
read -p "Enter something: " word1 word2 word3
echo "Word 1 is: $word1"
echo "Word 2 is: $word2"
echo "Word 3 is: $word3"
$ ./read3
Enter something: this is something
Word 1 is: this
Word 2 is: is
Word 3 is: something

When you enter more words than read has variables, read assigns one word to each variable, assigning all leftover words to the last variable. Both read1 and read2 assigned the first word and all leftover words to the one variable the scripts each had to work with. In the following example, read assigns five words to three variables: It assigns the first word to the first variable, the second word to the second variable, and the third through fifth words to the third variable.

$ ./read3
Enter something: this is something else, really.
Word 1 is: this
Word 2 is: is
Word 3 is: something else, really.


Table 10-4 lists some of the options supported by the read builtin.

Table 10-4read options

OptionFunction
–a aname(array) Assigns each word of input to an element of array aname.
–d delim(delimiter) Uses delim to terminate the input instead of NEWLINE.
–e (Readline) If input is coming from a keyboard, uses the Readline Library to get input.
–n num(number of characters) Reads num characters and returns. As soon as the user types num characters, read returns; there is no need to press RETURN.
–p prompt(prompt) Displays prompt on standard error without a terminating NEWLINE
before reading input. Displays prompt only when input comes from the
keyboard.
–s(silent) Does not echo characters.
–un(file descriptor) Uses the integer n as the file descriptor that read takes its input from. Thus read –u4 arg1 arg2
is equivalent to
read arg1 arg2 <&4


Anatomy of command line arguments in Linux

$
0
0
http://mylinuxbook.com/command-line-arguments-in-linux-part2


While designing a simple C program or a full fledged command line application, it is pretty usual to have a requirement for arguments to be passed while running the executable/application. These arguments are known as command line arguments. These parameters govern the behaviour of the program to some extent, as these are the inputs based on which output is computed/displayed.
Another usage of these command line arguments comes in the form of various options of a command, be it on Linux, Windows or any platform. In Linux, any command is actually an executable being triggered through Linux shell. In code, the entry point to this executable (in ELF format) will be the main() method . The Linux shell communicates the command line arguments to the program by passing these parameters to the main() method. In this article, we shall go through the advanced concepts related to command line arguments in Linux using C programming examples.


Command Line arguments in Linux


The main() method

The main() method can be defined in more than one way in a C program (see an interesting discussion on this here). One is, the usual, without any arguments:

int main()
Another way, we can define main(), if it accepts command line arguments, is:

int main(int argc, char *argv[])
In the above definition, it accepts following two arguments
  • An int, which is the number of arguments ie argc
  • A pointer array, which points to each argument ie argv[]
Note that, all the arguments are received in a char array, or to say a string in literal terminology.
What happens internally, when you run a program, is that the shell or gui parses the command and calls execve() which executes the linux system call execve().  The first string in your command specifies the program name that is to be run and rest are its arguments. All the strings are NULL terminated are passed to execve system call.
 int execve(const char *filename, char *const argv[], char *const envp[]);
  • argv is an array of argument strings passed to the new program where first argument should contain the filename associated with the file being executed.
  • envp is an array of strings, conventionally of the form key=value, which are passed as environment to the new program.
Both argv and envp contain NULL terminated entries.
The kernel sets up the argument vector and environment and calls the entry point of the program.
Things would be clear regarding the usage, with the help of an example. Note, these parameters are not part of the main() definition, they are inaccessible.
cmd.c

#include < stdio.h >

int main(int arc, char* argv[])
{
int i = 0;
printf(“Inside main\n”);
for (i = 0; i < argc; i++)
{
printf(“ %d-th argument received is %s\n”, i, argv[i]);
}

return 0;
}
Check out and absorb the way main() method is defined, and how are we access the arguments inside the definition, as general ‘int’ and pointer array variables.
How do we run this now? First, lets compile it.

$gcc cmd.c -Wall -o cmd
Compilation went fine. Further, coming to run the built executable, it is here we need to provide the command line arguments. An example, as to how command line arguments are provided.

$./cmd --name “Rupali” --line 12
To have a look at the output of the executable, here it is:
Inside main
0th argument received is ./cmd
1th argument received is --name
2th argument received is Rupali
3th argument received is --line
4th argument received is 12
Interestingly, the zero-th index, i.e. the first argument received is same as the name of the program (See here to learn how process name in Linux can be changed through this argument). The next set of arguments are received in the same order as we provided on command line i.e. ‘–name’, followed by ‘Rupali’ and then ‘–line’ and finally ‘12’. And since, the loop iterated five times, that is the number of arguments received by the ‘main()’ method.
You can try out running the same program with different number and varied command line arguments, as the nature of the program does not hold any restrictions on them.

Retrieving command line arguments

There are standard functions available for retrieving the passed command line arguments in the main program.
These are:

getopt()
getopt_long()
The header file that holds these protocols are
unistd.h
getopt.h
Talking about them one by one.

getopt()

Picking up its syntax from its man page, here how it’s protocol looks like:

int getopt(int argc, char * const argv[], const char *optstring);
  • The first parameter ‘argc’ it takes is the number of command line options passed.
  • The second parameter is takes is a pointer to the arguments, similar to ‘main()’ method.
  • The third parameter is an option string. Now this option string, depicts the options to the program as options to a command. If an option requires some input, then the option in the option string is followed by a colon ‘:’.
  • The option string would be clearer through examples.
Following examples illustrates some example commands, and corresponding option string parameter used in the ‘getopt()’.

Command Option string used in getopt()
ls -lt “lt”
find -n flilename “n:”
gcc -c -o output “co:”
Talking about what the method returns, it returns the currently parsed character option as per the option string. However, if an unrecognised option is encountered, it returns ‘?’. Hence, every time it is called, it parses and returns the corresponding option. If all the passed options have been parsed, it returns -1. There is a case, where it will return 1. It is discussed later in this section as it requires the knowledge of option string.
This method is used for parsing the short command line options and is very useful in governing the actions to be done for any particular option present. A short command line option means character options only. Any command has several command line options, however those are options. That means, it is up-to the user to mention it, if required and can always skip mentioning it if not required. Even, the behaviour of the command should be independent of the order of these options. However, if we have to implement these options in our program, it is possible, but would be complicated to compare and search the argument strings. Hence, for all the input options, the programmer would have to do parsing, finding and action.
To illustrate with an aid of an example, here is a simple ‘mkdevice’ command usage with two options available, to create a device node in the system.

mkdevice [options]
Options:
-c : Create a Device with name as provided
-k : The device node to be created with this device number
To think as an end user, this command can be used in any of the following ways as per a requirement. Of course, the command can be used in more ways than following use cases.

$mkdevice -c mydevice
$mkdevice -k 3
$mkdevice -c mydevice -k 3
We need to to parse the string of options to find ‘-c’ and then call its routine of action if it is present. Hope, now the sequence parse, find and action sounds more logical.
Recalling a use case where getopt() returns 1, if it encounters a prefixed ‘-’ in the option string to receive a non-option as one of the command line arguments. For example, if the command receives a filename as one of its command line arguments, it is considered as a non-option. Hence, we specify this non-option with following option string
“-co:”
Therefore, the getopt() method call looks like:
getopt(argc, argv,"-co:")
If the command name is ‘compiler’, following is how our command looks like
compiler main.c -c -o main
Here, while parsing the first option, ‘main.c’, getopt() will return 1, as it would be treated as a non-option.
Moving further, let us now implement our above example command using method ‘getopt()’ to understand more on how to use this standard method.

#include < stdio.h >
#include
#include
#include

#define MAXLEN 30

struct Device
{
char name[MAXLEN];
int number;
};

int main(int argc, char** argv)
{
char optc = 0;
struct Device dev = {"dev_0", 112};
int devNum = 0;

while ((optc = getopt(argc, argv,"c:k:")) != -1)
{
switch(optc)
{
case 'c':
printf("Creating the device of name %s\n", optarg);

strncpy(dev.name, optarg, MAXLEN);
break;
case 'k':
devNum = atoi(optarg);
dev.number = devNum;
break;
default:
printf("Invalid Option!\n");
exit(0);
}
}

printf("Device %s created !\n", dev.name);
printf("Device : %s\n", dev.name);
printf("Number : %d\n", dev.number);

return 0;
}
Before scratching the implementation, let us check out what it does.

$ gcc mkdevice.c -Wall -o mkdevice
$ ./mkdevice -c mlbdev -k 12
Creating the device of name mlbdev
Device mlbdev created !
Device : mlbdev
Number : 12
So, to get a clear overall picture, the above source code implementation, it creates a device node. The name of the device would be ‘dev_0’, unless specified by the ‘-c’ option and the device number by default would be 112 unless specified by the ‘-k’ option.
Understanding the source code above, how it does that, the line of code of our great interest is

while ((optc = getopt(argc, argv,"c:k:")) != -1)
Here, in an iteration, it gets the options one by one to populate the variable ‘optc’ with the listed options as command line arguments by the user. For each option specified, there is a switch case, where the corresponding action is followed.
Note the variable optarg which is neither declared nor defined anywhere in the our program, but still used. It is one of the global variables which points to the next input string after an option which expects some input. Hence, in our example, when getopt() encounters ‘-c’ option, it gets to know from the option string (“c:”), that a value parameter is expected. Hence, it assigns the pointer to the very next argument which is to string “mlbdev” in our case.
Hence following are the global variables assigned values are
  • optarg : pointer to the argument inputted with the option with argument.
  • optind : index of the next element in the parameter list argv
  • optopt : In case there is any inputted option which was not recognized in the option string, it sets this variable to the actual option character.
You can take the liberty to use these global variables as per your requirement, provided you understand them. Following example depicts one such usage of all the global variables.
#include < stdio.h >
#include
#include
#include

#define MAXLEN 30

struct Device
{
char name[MAXLEN];
int number;
};

int main(int argc, char** argv)
{
char optc = 0;
struct Device dev = {"dev_0", 112};
int devNum = 0;

/*Just to verify the name of device created before parsing aything.*/
while ((optc = getopt(argc, argv,"c:k:")) != -1)
{
if(optc == 'c')
{
printf("DEVICE name is %s\n", optarg);
if (strlen(optarg) > 10)
{
/*check run-case 1*/
printf("Invalid device name\n");
exit(-1);
}
optind = 1;/*Reseting index to 1 again to start actual parsing*/
break;
}
}

while ((optc = getopt(argc, argv,"c:k:")) != -1)
{
switch(optc)
{
case 'c':
strncpy(dev.name, optarg, MAXLEN);
break;

case 'k':
devNum = atoi(optarg);
dev.number = devNum;
break;

case '?':
if (optopt == 'c' || optopt == 'k')
{
/*check run-case 3*/
printf("Option -%c requires an argument\n", optopt);
exit (-1);
}
break;

default:
printf("Invalid Option!\n");
exit(0);
}
}

printf("Device %s created !\n", dev.name);
printf("Device : %s\n", dev.name);
printf("Number : %d\n", dev.number);

return 0;
}
As we run it,
run case 1
./mkdevice -c ff123456789 -k 5
DEVICE name is ff123456789
Invalid device name
run case 2
$ ./mkdevice -c okdev -k 15
DEVICE name is okdev
Device okdev created !
Device : okdev
Number : 15
run case 3
$ ./mkdevice -c okdev -k
DEVICE name is okdev
Option -k requires an argument
The ‘getopt()’ method is there to make our lives easier, not to worry about implementation of this parsing, finding and action. It parses, until we reach the end of the parameter list.

getopt_long()

Linux also supports long options, which are more than a character. Such options are generally prefixed with double dashes, and are called long options.
For example:

mycmd --display --file file.txt
ls --all
A command can support both short and long options. To support long options, we have method ‘getopt_long()’. Here is the syntax taken from the man page :

#include

int getopt_long(int argc, char * const argv[],
const char *optstring,
const struct option *longopts, int *longindex);
First, second and third parameters are same as in ‘getopt()’ method. If there are no short options, and only long options with a double dash, then the parameter ‘optstring’ should be an empty string and not null. The third parameter ‘longopts’ is a pointer to an array of structures named ‘option’, which is defined in getopt.h as
struct option
{
const char *name;
/* has_arg can't be an enum because some compilers complain about
type mismatches in all the code that assumes it is an int. */
int has_arg;
int *flag;
int val;
};
The structure has a name field which stores the name of the long option. has_arg stores no_argument(=0), required_argument (=1) or optiona_argument (=2) depending upon if it has an argument or not. A flag is a pointer which may be NULL or non-NULL. If it is a valid pointer holding a non-NULL value, then it would point to the val member of the struct, during processing.
However, it is is NULL, getopt_long() would return the value ‘val’, the member of this struct. In cases, where there are long and short options for the same behaviour, member ,’val’ can be assigned the corresponding short option character, which can be used similar to the usage of ‘getopt()’. Hence, if all long options have a corresponding short options, we can conveniently use ‘getopt_long()’ with structure having its flag set to NULL and val equal to the short option character, which would be then returned. One can develop a better understanding after seeing an example.
Prior to an example, and coming back to the parameters of ‘getopt_long()’, the last parameter i.e. ‘longindex’ points to the index of the ‘option’ structure array which is being encountered. An important implementation point to note is, the array of ‘option’ struct should have the last element with all zero’s.
Using the same command ‘mkdevice’ example source as illustrated above, we’ll add following long options to it using getopt_long() method.
--create : create a device with name as argument
--number : device should have device number as provided argument.
The modified source code:

#include < stdio.h >
#include
#include
#include
#include

#define MAXLEN 30

struct Device
{
char name[MAXLEN];
int number;
};

int main(int argc, char** argv)
{
char optc = 0;
struct Device dev = {"dev_0", 112};
struct option cmdLongOpts[] = {
{"create", required_argument, NULL, 'c'},
{"number", required_argument, NULL, 'k'},
{0, 0, 0, 0}
};
int devNum = 0;

while ((optc = getopt_long(argc, argv,"c:k:", cmdLongOpts, NULL)) != -1)
{
switch(optc)
{
case 'c':
printf("Creating the device of name %s\n", optarg);

strncpy(dev.name, optarg, strlen(optarg));
break;
case 'k':
devNum = atoi(optarg);
dev.number = devNum;
break;
default:
printf("Invalid Option!\n");
exit (0);
}
}

printf("Device %s created !\n", dev.name);
printf("Device : %s\n", dev.name);
printf("Number : %d\n", dev.number);

return 0;
}
Compiling and running it:

$ gcc mkdevice.c -Wall -o mkdevice
$ ./mkdevice --create mlbdev
Creating the device of name mlbdev
Device mlbdev created !
Device : mlbdev
Number : 112

$ ./mkdevice --create mlbdev --number 456
Creating the device of name mlbdev
Device mlbdev created !
Device : mlbdev
Number : 456

$ ./mkdevice --create mlbdev -k 321
Creating the device of name mlbdev
Device mlbdev created !
Device : mlbdev
Number : 321

Interesting notes

1) In case of long options, if option string contains ‘W;’, that is, a ‘W’ followed by a semi colon, then the command also accepts long options prefixed with ‘-W’ along with double dash (–).
For example, in our example source if the call to getopt_long() is:

optc = getopt_long(argc, argv,"c:k:W;", cmdLongOpts, NULL)
Then, following example usage will also work.

$ ./mkdevice -Wcreate mlbdev -k 321
$ ./mkdevice -Wcreate mlbdev -Wnumber 321
2) Generally short command line options have a dash prefixed and long command line options have double dash prefixed.

$ ls -l -t
$ mkdir --help
3) Generally command line options can be in any order, and behaviour will not change if the order of options change.
4) Make sure, while working the argument list i.e. argv, it should never be altered.

References

http://www.cprogramming.com/tutorial/c/lesson14.html
http://computer.howstuffworks.com/c38.htm
http://www.codingunit.com/c-tutorial-command-line-parameter-parsing

How To Bind Global HotKeys to a WINE Program under Linux

$
0
0
http://www.howtogeek.com/125664/how-to-bind-global-hotkeys-to-a-wine-program-under-linux


How To Bind Global HotKeys to a WINE Program under Linux


Have you ever installed a Windows program in Linux under WINE, only to discover that it doesn’t bind system wide hot-keys anymore? HTG has the work around you’ve been looking for.
Image by djeucalyptus

Overview

Every one who has even thought of the idea of switching to Linux, has probably very quickly encounter the problem that there is this one Windows app that you NEED to function. We’ve already shown you that you can accomplish this using WINE.
For this writer, the application was a Text-To-Speech application which utilizes the Microsoft SAPI4 engine. Installing the program under WINE was a breeze, however upon completion I’ve quickly found that the hot-keys used to trigger the various actions of the program (start reading, stop reading, etc’) did not function and that this is a known problem with WINE.
I’m glad to say that after eons of searching, I’ve finally found the solution in the form of a GNU utility which can manipulate the X.org interface using native functions. While not the only one of its kind, xdotool is the one which was the easiest to get working and was already in the Ubuntu/Mint repositories.

xdotool

The xdotool program can do many window related tasks from the CLI, with that said, the only two we are going to utilize are “search” and “key”. The “search” function does just that, searches for a window/s ID according to parameters you set for it. The “key” function enables you to simulate a key-stroke to a window ID.
Installation & configuration
It is assumed that you’ve already installed WINE and the program you need under it. In this example we will be using Balabolka as the “Windows” application because it is a good freeware replica of the original program I needed this solution for (2nd speech center).
If you’ve opted to use Balabolka as well, you need to activate its hotkeys ability.
Note: You may want to install either TTSReader or 2nd speech center even in demo mode, so that the SAPI voices will be installed. 
Open the program and go to settings (Shit+F6) under “Options” -> “Settings”.

Go to the hotkeys tab and check the checkbox for “Use global hotkeys”.

Click OK.
Leave it running in the background so that it can do its job when we hook the keystrokes to it.
Install xdotool by issuing:
sudo apt-get install xdotool

Global binding

The xdotool program on its own doesn’t help us bind globally to hotkeys, but we can use the already existing OS hotkey system. What we will do is create a simple script that utilizes xdotool to send the keystrokes we want to the Balabolka program and call it from the OSs hotkey system.
Create a script called “start_read.sh” with the following content:
xdotool key --window $( xdotool search --limit 1 --all --pid $( pgrep balabolka ) --name Balabolka ) "ctrl+alt+F9"
Create another script this time called “stop_read.sh” with the following content:
xdotool key --window $( xdotool search --limit 1 --all --pid $( pgrep balabolka ) --name Balabolka ) "ctrl+alt+F7"
Note: I know this is a one liner that doesn’t require a script, but the Mint/Ubuntu “Keyboard Shortcuts” program, wasn’t cooperating with just invoking it directly. If you know how to do it, please share in the comments below.
Braking this command to its components, what we see is:
  • The “–pid $( pgrep balabolka )” part, executes a “pgrep” on the program we want to use as to ascertain its process ID. This will narrow the xdotool filed of “search” to just that PID.
  • The “xdotool search –limit 1 –all … –name Balabolka” part, narrows the filed of search of xdotool even more and limits the returned answers to 1. As in our case it doesn’t matter which of the window IDs returned of the program, limiting the result acts as a formatter for the “key” command. You may find you need to massage this part more if it does matter for the program that you are using.
  • The “xdotool key –window %WINDOW_ID% “ctrl+alt+F7″” part, sends the desired keystroke to the windowID which was obtained by the previous parts.
Make the scripts executable.
Linux Mint Keyboard shortcuts
Under Linux Mint, the global hotkeys are set in the “Keyboard Shortcuts” program.

Once opened Click on “Add” to create a new custom shortcut:

Give it a name and under “Command” give the full path to one of the scripts we’ve created above. Repeat the process for the second script.
Now, on the “Shortcuts” Column, click on the “Disabled” word to get the option to set a new key combo.
Note: You may, if you wish, use something other then the program’s default. In a sense creating a “remap” to key bindings that, depending on the program you use, would otherwise be out of your control.

Hit the combo you’ve selected and hear the magic.
Ubuntu Keyboard
Under Ubuntu, the program that sets the global hotkeys is just called “Keyboard”.

Switch to the “Shortcuts” tab and select “Custom Shortcuts”.

Click the plus sign to add a shortcut. Give it a name and under “Command” give the full path to one of the scripts we’ve created above. Repeat the process for the second script.
Now click on the “Disabled” word to get the option to set a new key combo.
Note: Repeating on the note from the Mint section, you may, if you wish, use something other then the program’s default. In a sense creating a “remap” to key bindings that, depending on the program you use, would otherwise be out of your control.

Author’s Notes

Every time I’ve seriously considered moving to Linux, this issue was the first on my list of problems. Its not that Linux doesn’t have problems, but this was the real hurdle, for me. I’ve tried time and time again, asked friends/people in the field and even made it into a bounty… I am happy this saga is over and that my soul can finally rest.
It is my hope that I’ve helped someone out there to not have to go through the same ordeal.

Distributed Replicated Storage Across Four Storage Nodes With GlusterFS 3.2.x On CentOS 6.3

$
0
0
http://www.howtoforge.com/distributed-replicated-storage-across-four-storage-nodes-with-glusterfs-3.2.x-on-centos-6.3


This tutorial shows how to combine four single storage servers (running CentOS 6.3) to a distributed replicated storage with GlusterFS. Nodes 1 and 2 (replication1) as well as 3 and 4 (replication2) will mirror each other, and replication1 and replication2 will be combined to one larger storage server (distribution). Basically, this is RAID10 over network. If you lose one server from replication1 and one from replication2, the distributed volume continues to work. The client system (CentOS 6.3 as well) will be able to access the storage as if it was a local filesystem. GlusterFS is a clustered file-system capable of scaling to several peta-bytes. It aggregates various storage bricks over Infiniband RDMA or TCP/IP interconnect into one large parallel network file system. Storage bricks can be made of any commodity hardware such as x86_64 servers with SATA-II RAID and Infiniband HBA.
I do not issue any guarantee that this will work for you!

1 Preliminary Note

In this tutorial I use five systems, four servers and a client:
  • server1.example.com: IP address 192.168.0.100 (server)
  • server2.example.com: IP address 192.168.0.101 (server)
  • server3.example.com: IP address 192.168.0.102 (server)
  • server4.example.com: IP address 192.168.0.103 (server)
  • client1.example.com: IP address 192.168.0.104 (client)
All five systems should be able to resolve the other systems' hostnames. If this cannot be done through DNS, you should edit the /etc/hosts file so that it looks as follows on all five systems:
vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.100 server1.example.com server1
192.168.0.101 server2.example.com server2
192.168.0.102 server3.example.com server3
192.168.0.103 server4.example.com server4
192.168.0.104 client1.example.com client1

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
(It is also possible to use IP addresses instead of hostnames in the following setup. If you prefer to use IP addresses, you don't have to care about whether the hostnames can be resolved or not.)

2 Enable Additional Repositories

server1.example.com/server2.example.com/server3.example.com/server4.example.com/client1.example.com:
First we import the GPG keys for software packages:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Then we enable the EPEL6 repository on our CentOS systems:
rpm --import https://fedoraproject.org/static/0608B895.txt
cd /tmp
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm -ivh epel-release-6-7.noarch.rpm
yum install yum-priorities
Edit /etc/yum.repos.d/epel.repo...
vi /etc/yum.repos.d/epel.repo
... and add the line priority=10 to the [epel] section:
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[...]

3 Setting Up The GlusterFS Servers

server1.example.com/server2.example.com/server3.example.com/server4.example.com:
GlusterFS is available as a package for EPEL, therefore we can install it as follows:
yum install glusterfs-server
Create the system startup links for the Gluster daemon and start it:
chkconfig --levels 235 glusterd on
/etc/init.d/glusterd start
The command
glusterfsd --version
should now show the GlusterFS version that you've just installed (3.2.7 in this case):
[root@server1 ~]# glusterfsd --version
glusterfs 3.2.7 built on Jun 11 2012 13:22:28
Repository revision: git://git.gluster.com/glusterfs.git
Copyright (c) 2006-2011 Gluster Inc.
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.
[root@server1 ~]#
If you use a firewall, ensure that TCP ports 111, 24007, 24008, 24009-(24009 + number of bricks across all volumes) are open on server1.example.com, server2.example.com, server3.example.com, and server4.example.com.
Next we must add server2.example.com, server3.example.com, and server4.example.com to the trusted storage pool (please note that I'm running all GlusterFS configuration commands from server1.example.com, but you can as well run them from server2.example.com or server3.example.com or server4.example.com because the configuration is repliacted between the GlusterFS nodes - just make sure you use the correct hostnames or IP addresses):
server1.example.com:
On server1.example.com, run
gluster peer probe server2.example.com
gluster peer probe server3.example.com
gluster peer probe server4.example.com
Output should be as follows:
[root@server1 ~]# gluster peer probe server2.example.com
Probe successful
[root@server1 ~]#
The status of the trusted storage pool should now be similar to this:
gluster peer status
[root@server1 ~]# gluster peer status
Number of Peers: 3
Hostname: server2.example.com
Uuid: 600ff607-f7fd-43f6-af8d-419df703376d
State: Peer in Cluster (Connected)
Hostname: server3.example.com
Uuid: 1d6a5f3f-c2dd-4727-a050-0431772cc381
State: Peer in Cluster (Connected)
Hostname: server4.example.com
Uuid: 0bd9d445-0b5b-4a91-be6f-02b13c41d5d6
State: Peer in Cluster (Connected)
[root@server1 ~]#
Next we create the distributed replicated share named testvol with two replicas (please note that the number of replicas is half the number of servers in this case because we want to set up distributed replication) on server1.example.com, server2.example.com, server3.example.com, and server4.example.com in the /data directory (this will be created if it doesn't exist):
gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data server3.example.com:/data server4.example.com:/data
[root@server1 ~]# gluster volume create testvol replica 2 transport tcp server1.example.com:/data server2.example.com:/data server3.example.com:/data server4.example.com:/data
Creation of volume testvol has been successful. Please start the volume to access data.
[root@server1 ~]#
Start the volume:
gluster volume start testvol
It is possible that the above command tells you that the action was not successful:
[root@server1 ~]# gluster volume start testvol
Starting volume testvol has been unsuccessful
[root@server1 ~]#
In this case you should check the output of...
server1.example.com/server2.example.com/server3.example.com/server4.example.com:
netstat -tap | grep glusterfsd
on both servers.
If you get output like this...
[root@server1 ~]# netstat -tap | grep glusterfsd
tcp        0      0 *:24009                     *:*                         LISTEN      1365/glusterfsd
tcp        0      0 localhost:1023              localhost:24007             ESTABLISHED 1365/glusterfsd
tcp        0      0 server1.example.com:24009   server1.example.com:1023    ESTABLISHED 1365/glusterfsd
[root@server1 ~]#
... everything is fine, but if you don't get any output...
[root@server2 ~]# netstat -tap | grep glusterfsd
[root@server2 ~]#
[root@server3 ~]# netstat -tap | grep glusterfsd
[root@server3 ~]#
[root@server4 ~]# netstat -tap | grep glusterfsd
[root@server4 ~]#
... restart the GlusterFS daemon on the corresponding server (server2.example.com, server3.example.com, and server4.example.com in this case):
server2.example.com/server3.example.com/server4.example.com:
/etc/init.d/glusterfsd restart
Then check the output of...
netstat -tap | grep glusterfsd
... again on these servers - it should now look like this:
[root@server2 ~]# netstat -tap | grep glusterfsd
tcp        0      0 *:24009                 *:*                     LISTEN      1152/glusterfsd
tcp        0      0 localhost.localdom:1018 localhost.localdo:24007 ESTABLISHED 1152/glusterfsd
[root@server2 ~]#

[root@server3 ~]# netstat -tap | grep glusterfsd
tcp        0      0 *:24009                 *:*                     LISTEN      1311/glusterfsd
tcp        0      0 localhost.localdom:1018 localhost.localdo:24007 ESTABLISHED 1311/glusterfsd
[root@server3 ~]#

[root@server4 ~]# netstat -tap | grep glusterfsd
tcp        0      0 *:24009                 *:*                     LISTEN      1297/glusterfsd
tcp        0      0 localhost.localdom:1019 localhost.localdo:24007 ESTABLISHED 1297/glusterfsd
[root@server4 ~]#
Now back to server1.example.com:
server1.example.com:
You can check the status of the volume with the command
gluster volume info
[root@server1 ~]# gluster volume info
Volume Name: testvol
Type: Distributed-Replicate
Status: Started
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: server1.example.com:/data
Brick2: server2.example.com:/data
Brick3: server3.example.com:/data
Brick4: server4.example.com:/data
[root@server1 ~]#
By default, all clients can connect to the volume. If you want to grant access to client1.example.com (= 192.168.0.104) only, run:
gluster volume set testvol auth.allow 192.168.0.104
Please note that it is possible to use wildcards for the IP addresses (like 192.168.*) and that you can specify multiple IP addresses separated by comma (e.g. 192.168.0.104,192.168.0.105).
The volume info should now show the updated status:
gluster volume info
[root@server1 ~]# gluster volume info
Volume Name: testvol
Type: Distributed-Replicate
Status: Started
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: server1.example.com:/data
Brick2: server2.example.com:/data
Brick3: server3.example.com:/data
Brick4: server4.example.com:/data
Options Reconfigured:
auth.allow: 192.168.0.104
[root@server1 ~]#

4 Setting Up The GlusterFS Client

 
client1.example.com:
On the client, we can install the GlusterFS client as follows:
yum install glusterfs-client
Then we create the following directory:
mkdir /mnt/glusterfs
That's it! Now we can mount the GlusterFS filesystem to /mnt/glusterfs with the following command:
mount.glusterfs server1.example.com:/testvol /mnt/glusterfs
(Instead of server1.example.com you can as well use server2.example.com or server3.example.com or server4.example.com in the above command!)
You should now see the new share in the outputs of...
mount
[root@client1 ~]# mount
/dev/mapper/vg_client1-LogVol00 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
server1.example.com:/testvol on /mnt/glusterfs type fuse.glusterfs (rw,allow_other,default_permissions,max_read=131072)
[root@client1 ~]#
... and...
df -h
[root@client1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_client1-LogVol00
                      9.7G  1.7G  7.5G  19% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/sda1             504M   39M  440M   9% /boot
server1.example.com:/testvol
                       58G  2.1G   53G  4% /mnt/glusterfs
[root@client1  ~]#
Instead of mounting the GlusterFS share manually on the client, you could modify /etc/fstab so that the share gets mounted automatically when the client boots.
Open /etc/fstab and append the following line:
vi /etc/fstab
[...]
server1.example.com:/testvol /mnt/glusterfs glusterfs defaults,_netdev 0 0
(Again, instead of server1.example.com you can as well use server2.example.com or server3.example.com or server4.example.com!)
To test if your modified /etc/fstab is working, reboot the client:
reboot
After the reboot, you should find the share in the outputs of...
df -h
... and...
mount

5 Testing

Now let's create some test files on the GlusterFS share:
client1.example.com:
touch /mnt/glusterfs/test1
touch /mnt/glusterfs/test2
touch /mnt/glusterfs/test3
touch /mnt/glusterfs/test4
touch /mnt/glusterfs/test5
touch /mnt/glusterfs/test6
Now let's check the /data directory on server1.example.com, server2.example.com, server3.example.com, and server4.example.com. You will notice that replication1 as well as replication2 hold only a part of the files/directories that make up the GlusterFS share on the client, but the nodes that make up replication1 (server1 and server2) or replication2 (server3 and server4) contain the same files (mirroring):
server1.example.com:
ls -l /data
[root@server1 ~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test1
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test2
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test4
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test5
[root@server1 ~]#
server2.example.com:
ls -l /data
[root@server2 ~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test1
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test2
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test4
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test5
[root@server2 ~]#
server3.example.com:
ls -l /data
[root@server3 ~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test3
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test6
[root@server3 ~]#
server4.example.com:
ls -l /data
[root@server4 ~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test3
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test6
[root@server4 ~]#
Now we shut down server1.example.com and server4.example.com and add/delete some files on the GlusterFS share on client1.example.com.
server1.example.com/server4.example.com:
shutdown -h now
client1.example.com:
rm -f /mnt/glusterfs/test5
rm -f /mnt/glusterfs/test6
The changes should be visible in the /data directory on server2.example.com and server3.example.com:
server2.example.com:
ls -l /data
[root@server2 ~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test1
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test2
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test4
[root@server2 ~]#
server3.example.com:
ls -l /data
[root@server3 ~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test3
[root@server3 ~]#
Let's boot server1.example.com and server4.example.com again and take a look at the /data directory:
server1.example.com:
ls -l /data
[root@server1 ~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test1
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test2
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test4
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test5
[root@server1 ~]#
server4.example.com:
ls -l /data
[root@server4 ~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test3
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test6
[root@server4 ~]#
As you see, server1.example.com and server4.example.com haven't noticed the changes that happened while they were down. This is easy to fix, all we need to do is invoke a read command on the GlusterFS share on client1.example.com, e.g.:
client1.example.com:
ls -l /mnt/glusterfs/
[root@client1 ~]# ls -l /mnt/glusterfs/
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test1
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test2
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test3
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test4
[root@client1 ~]#
Now take a look at the /data directory on server1.example.com and server4.example.com again, and you should see that the changes have been replicated to these nodes:
server1.example.com:
ls -l /data
[root@server1 ~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test1
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test2
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test4
[root@server1 ~]#
server4.example.com:
ls -l /data
[root@server4 ~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 2012-12-17 15:49 test3
[root@server4 ~]#

6 Links


Everyday Linux User Guide To Setting Up The Internet On The Raspberry PI

$
0
0
http://www.everydaylinuxuser.com/2013/01/everyday-linux-user-guide-to-setting-up.html


 Introduction

In my last article I showed you how to set up a Raspberry PI for first time use. This will have hopefully helped you to get a working system.
If you are a novice with regards to Linux then you may have had a play around with the applications that have been installed but you might be stumped when connecting to the internet.
The article shows two ways to connect to the internet using the Raspberry PI. The first way uses the graphical tool provided. The second way shows how to connect to the internet using the command line. Whilst ordinarily I would recommend using the GUI sometimes it isn't available and so knowing both ways helps in the long run.

Connecting to the internet using the WIFI config tool

This guide assumes that you are running the Raspbian operating system.
Setting up a WiFi connection is relatively easy.
First click the WIFI Config icon as highlighted in the image above.
The wpa_gui tool will load. If you have a wireless USB dongle plugged in to your USB hub then you should see an adapter in the adapter dropdown. Make sure that the adapter is selected. It probably says wlan0.
Now click scan.
The scan results should show all the wireless networks in your vicinity. As you can see from the image above I have two networks available.
It is worth taking a note of the values in the flags column as it is useful for the next step.
Double click the wireless network you wish to connect to.
What do all the boxes mean?
SSID: This is the public name for the network.
Authentication Method: Open, WEP, WPA or WPA2. For home use you are likely to need WPA_Personal (PSK) or WPA2-Personal (PSK). 
Encryption: TKIP or CCMP. For WPA it is likely to be TKIP and for WPA2 CCMP.
PSK: The encrypion key (Only use for personal, not enterprise)
EAP Method: You only need to worry about this if you are using WPA Enterprise or WPA2 Enterprise but this is the authentication protocol used for the network you are connecting to.
Identity: The identity required to connect to the network (Enterprise only)
Password: The password required to connect to the network (Enterprise only)
CA Certificate: The certificate authority (Enterprise only)
WEP Keys: If the authentication method is WEP then this is the key required to connect to the network. (WEP Only)
Now all of that is probably very confusing. The simple way to know what to set is to look at the flags column in the scan results screen.
The flags column tells you what you already need to know. For me it says WPA-PSK which lets me know that I need to choose WPA_Personal. It also has TKIP in the flags column which tells me I need to set the encryption method to TKIP.
Now all I need to do is enter the security code into the PSK box.
Had the flags column said WEP then I know I'd have needed to select WEP and entered the key into the WEP keys box. Had the flags column shown CCMP instead of TKIP I know I would have had to set the Encryption dropdown to CCMP.
The wpa_gui screen should now have networks available in the dropdown list. Change the network dropdown so that you see the network that you set up in the previous step.
Click Connect.
At this point you should now have an internet connection.
To test it out run the Midori browser from the desktop and try loading www.everydaylinuxuser.com.

Connecting to the Internet using WPA_Supplicant

The method shown in the previous step works for Raspbian but if you run other versions of Linux then there might be other graphical tools that are supplied for connecting to the internet. Most of the graphical tools are easy to use but with the Raspberry PI it is likely that you will connect to the same network every time as it isn't really a mobile device like a phone or a tablet. With this in mind do you really need a GUI to set up the internet? Wouldn't it be better to learn one way of connecting to the internet that will work on most versions of Linux?
This little guide will show you what the GUI was doing in the background to connect to the internet so that if you ever needed to you can create a wireless connection from the command line.
Note that if you have followed the first part of the tutorial then the configuration files will probably already be set up with all the correct settings so you will not need to edit the files at all but you can still view them for reference purposes.
First of all load up the terminal. To do this click the LXTerminal icon on the Raspbian desktop.
The first thing we are going to do is set up the network interface. Enter the following text into the terminal window:
sudo nano /etc/network/interfaces


In my interface configuration I have given the Raspberry PI a static network address so that I can connect to it using SSH and I will know that the address will be the same every time. That however is for a different article that will come later on.

The lines you are interested in are really the last 4. So make sure your file has the following lines in it.

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

So what does it all mean?

Well the two sections you are really interested in are the ones starting allow-hotplug eth0 and allow-hotplug wlan0.

The allow-hotplug eth0 will detect when an ethernet cable is plugged into the Raspberry PI and connected to the router. When this happens the iface etho0 inet dhcp will use DHCP to connect to the network. In its simplest form the internet connection will be created via the ethernet cable.

The allow-hotplug wlan0 will detect a wireless interface and will use wpa-roam with the configuration file in /etc/wpa_supplicant/wpa_supplicant.conf.

Using this information you will hopefully realise that you need to add some more settings to the file /etc/wpa_supplicant/wpa_supplicant.conf.

Press Ctrl and O to save the /etc/network/interfaces file and press CTRL and X to exit nano. (Nano is the editor)

Now type sudo nano /etc/wpa_supplicant/wpa_supplicant.conf into the terminal.



You will need to enter the lines of code from the image above into your terminal window.

It isn't a simple copy and paste though as you will need to replace the ssid with the name of your network and the psk with the security key used to connect to the internet.

Proto will be one of RSN or WPA. The key_mgmt will be set to either WPA_PSK or WPA_EAP and depends on your router. Pairwise will be set to CCMP or TKIP. Finally auth_alg can be either OPEN, SHARED or LEAP. This is the same information as highlighted in the GUI section of this article earlier.

If you followed the first part of this tutorial to set up the wireless using the WIFI config tool it is highly likely that most of the information is already entered into this file (if not all of it). Just keep a copy of this file safe and if you choose to install a different version of LINUX to connect to the same internet connection you can just copy the file into the /etc/wpa_supplicant folder.

Now press CTRL and O to save the file and then CTRL and X to exit the file.

Close the terminal and reboot your Raspberry PI. Your internet connection will start automatically every time.

Summary

For a lot of people the WIFI Config tool will be perfectly adequate for connecting to the internet but by knowing what the tool is doing in the background you can use this knowledge for future reference as the GUI tools might not always be available.
In the example above the WIFI Config tool will have amended the /etc/network/interfaces file and placed a link to the wpa_supplicant.conf file with all the correct settings as specified within the GUI. If the config tool had not been available you would have needed to edit the network interfaces file and the wpa_supplicant configuration file yourself.
I hope this article has been useful.
Thankyou for reading.

15 Useful “ifconfig” Commands to Configure Network Interface in Linux

$
0
0
http://www.tecmint.com/ifconfig-command-examples


ifconfig in short “interface configuration” utility for system/network administration in Unix/Linux operating systems to configure, manage and query network interface parameters via command line interface or in a system configuration scripts.
The “ifconfig” command is used for displaying current network configuration information, setting up an ip address, netmask or broadcast address to an network interface, creating an alias for network interface, setting up hardware address and enable or disable network interfaces.
Ifconfig Command Examples
15 Useful ifconfig Commands
This article covers “15 Useful “ifconfig” Commands” with their practical examples, that might be very helpful to you in managing and configuring network interfaces in Linux systems.

1. View All Network Setting

The “ifconfig” command with no arguments will display all the active interfaces details. The ifconfig command also used to check the assigned IP address of an server.
[root@tecmint ~]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:0B:CD:1C:18:5A
inet addr:172.16.25.126 Bcast:172.16.25.63 Mask:255.255.255.224
inet6 addr: fe80::20b:cdff:fe1c:185a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2341604 errors:0 dropped:0 overruns:0 frame:0
TX packets:2217673 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:293460932 (279.8 MiB) TX bytes:1042006549 (993.7 MiB)
Interrupt:185 Memory:f7fe0000-f7ff0000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:5019066 errors:0 dropped:0 overruns:0 frame:0
TX packets:5019066 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2174522634 (2.0 GiB) TX bytes:2174522634 (2.0 GiB)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.1.1.1 P-t-P:10.1.1.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

2. Display Information of All Network Interfaces

The following ifconfig command with -a argument will display information of all active or inactive network interfaces on server. It displays the results for eth0, lo, sit0 and tun0.
[root@tecmint ~]# ifconfig -a

eth0 Link encap:Ethernet HWaddr 00:0B:CD:1C:18:5A
inet addr:172.16.25.126 Bcast:172.16.25.63 Mask:255.255.255.224
inet6 addr: fe80::20b:cdff:fe1c:185a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2344927 errors:0 dropped:0 overruns:0 frame:0
TX packets:2220777 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:293839516 (280.2 MiB) TX bytes:1043722206 (995.3 MiB)
Interrupt:185 Memory:f7fe0000-f7ff0000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:5022927 errors:0 dropped:0 overruns:0 frame:0
TX packets:5022927 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2175739488 (2.0 GiB) TX bytes:2175739488 (2.0 GiB)

sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.1.1.1 P-t-P:10.1.1.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

3. View Network Settings of Specific Interface

Using interface name (eth0) as an argument with “ifconfig” command will display details of specific network interface.
[root@tecmint ~]# ifconfig eth0

eth0 Link encap:Ethernet HWaddr 00:0B:CD:1C:18:5A
inet addr:172.16.25.126 Bcast:172.16.25.63 Mask:255.255.255.224
inet6 addr: fe80::20b:cdff:fe1c:185a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2345583 errors:0 dropped:0 overruns:0 frame:0
TX packets:2221421 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:293912265 (280.2 MiB) TX bytes:1044100408 (995.7 MiB)
Interrupt:185 Memory:f7fe0000-f7ff0000

4. How to Enable an Network Interface

The “up” or “ifup” flag with interface name (eth0) activates an network interface, if it is not in active state and allowing to send and receive information. For example, “ifconfig eth0 up” or “ifup eth0” will activate the eth0 interface.
[root@tecmint ~]# ifconfig eth0 up
OR
[root@tecmint ~]# ifup eth0

5. How to Disable an Network Interface

The “down” or “ifdown” flag with interface name (eth0) deactivates the specified network interface. For example, “ifconfig eth0 down” or “ifdown eth0” command deactivates the eth0 interface, if it is in active state.
[root@tecmint ~]# ifconfig eth0 down
OR
[root@tecmint ~]# ifdown eth0

6. How to Assign a IP Address to Network Interface

To assign an IP address to an specific interface, use the following command with an interface name (eth0) and ip address that you want to set. For example, “ifconfig eth0 172.16.25.125” will set the IP address to interface eth0.
[root@tecmint ~]# ifconfig eth0 172.16.25.125

7. How to Assign a Netmask to Network Interface

Using the “ifconfig” command with “netmask” argument and interface name as (eth0) allows you to define an netmask to an given interface. For example, “ifconfig eth0 netmask 255.255.255.224” will set the network mask to an given interface eth0.
[root@tecmint ~]# ifconfig eth0 netmask 255.255.255.224

8. How to Assign a Broadcast to Network Interface

Using the “broadcast” argument with an interface name will set the broadcast address for the given interface. For example, “ifconfig eth0 broadcast 172.16.25.63” command sets the broadcast address to an interface eth0.
[root@tecmint ~]# ifconfig eth0 broadcast 172.16.25.63

9. How to Assign a IP, Netmask and Broadcast to Network Interface

To assign an IP address, Netmask address and Broadcast address all at once using “ifconfig” command with all arguments as given below.
[root@tecmint ~]# ifconfig eth0 172.16.25.125 netmask 255.255.255.224 broadcast 172.16.25.63

10. How to Change MTU for an Network Interface

The “mtu” argument set the maximum transmission unit to an interface. The MTU allows you to set the limit size of packets that are transmitted on an interface. The MTU able to handle maximum number of octets to an interface in one single transaction. For example, “ifconfig eth0 mtu 1000” will set the maximum transmission unit to given set (i.e. 1000). Not all network interfaces supports MTU settings.
[root@tecmint ~]# ifconfig eth0 mtu 1000

11. How to Enable Promiscuous Mode

What happens in normal mode, when a packet received by a network card, it verifies that the packet belongs to itself. If not, it drops the packet normally, but in the promiscuous mode is used to accept all the packets that flows through the network card.
Most of the today’s network tools uses the promiscuous mode to capture and analyze the packets that flows through the network interface. To set the promiscuous mode, use the following command.
[root@tecmint ~]# ifconfig eth0 promisc

12. How to Disable Promiscuous Mode

To disable promiscuous mode, use the “-promisc” switch that drops back the network interface in normal mode.
[root@tecmint ~]# ifconfig eth0 -promisc

13. How to Add New Alias to Network Interface

The ifconfig utility allows you to configure additional network interfaces using alias feature. To add alias network interface of eth0, use the following command. Please note that alias network address in same sub-net mask. For example, if your eth0 network ip address is 172.16.25.125, then alias ip address must be 172.16.25.127.
[root@tecmint ~]# ifconfig eth0:0 172.16.25.127
Next, verify the newly created alias network interface address, by using “ifconfig eth0:0” command.
[root@tecmint ~]# ifconfig eth0:0

eth0:0 Link encap:Ethernet HWaddr 00:01:6C:99:14:68
inet addr:172.16.25.123 Bcast:172.16.25.63 Mask:255.255.255.240
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:17

14. How to Remove Alias to Network Interface

If you no longer required an alias network interface or you incorrectly configured it, you can remove it by using the following command.
[root@tecmint ~]# ifconfig eth0:0 down

15. How to Change the MAC address of Network Interface

To change the MAC (Media Access Control) address of an eth0 network interface, use the following command with argument “hw ether“. For example, see below.
[root@tecmint ~]# ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF
These are the most useful commands for configuring network interfaces in Linux, for more information and usage of ifconfig command use the manpages like “man ifconfig” at the terminal. Check out some other networking utilities below.

Other Networking Utilities

  1. Tcmpdump— is an command-line packet capture and analyzer tool for monitoring network traffic.
  2. Netstat— is an open source command line network monitoring tool that monitors incoming and outgoing network packets traffic.
  3. Wireshark— is an open source network protocol analyzer that is used to troubleshoot network related issues.
  4. Munin— is an web based network and system monitoring application that is used to display results in graphs using rrdtool.
  5. Cacti— is an complete web based monitoring and graphing application for network monitoring.
To get more information and options for any of the above tools, see the manapages by entering “man toolname” at the command prompt. For example, to get the information for “netstat” tool, use the command as “man netstat“.

Everyday Linux User guide to installing applications on the Raspberry PI

$
0
0
http://www.everydaylinuxuser.com/2013/01/everyday-linux-user-guide-to-installing.html


 Introduction

This guide shows you how to install applications from the available software repositories.

Step 1 - Use Apt

The method I like to use to install applications is via a tool called Synaptic which is  a graphical tool that enables you to search for applications by name or by type.
Unfortunately Synaptic isn't installed by default within Raspbian and so if you wish to use this application you need to install it first.
The first method I am therefore going to show you for installing applications is APT. (Advanced Package Tool).
This is not an in-depth guide for APT because for the everyday linux user the Synaptic GUI will work just fine.
This will however give you a little bit of a grounding of how to install applications if Synaptic is unavailable.
Open up a terminal window by clicking the LXTerminal icon on the desktop.

Type sudo /etc/apt/sources.list and press return.



The sources.list contains the list of repositories that will be used by the APT application to build up the database of applications that can be downloaded and installed onto the Raspberry PI.

Each line contains a different repository location. Therefore looking at the default sources.list you will see there is just one line as follows:

deb http://mirrordirector.raspbian.org/raspbian wheezy main contrib non-free api

So what does it all mean? Well "deb" is the type of repository which in this case means it is a debian repository. Other types include RPM and Repomd but for the Raspberry Pi running Raspbian we only care about debian packages.

The next part is the location (URL) of the repository.

Following that is the distribution which in our case is Wheezy.

The rest of the items are categories under which applications are based.

You don't need to do anything with this file. This is just a little bit of information which lets you know where APT is getting its data from.

Press CTRL and X to exit.



So the real point of this section is to learn how to download packages using APT so that you can download Synaptic.

The first thing to do is to make sure the APT database is up to date. You can do this by typing sudo apt-get update into the terminal window.




To search within APT you can use the command sudo apt-cache search x where X is the search term. 

Therefore to search for Synaptic you would type sudo apt-cache search synaptic. This will return a list of packages with Synaptic in the name or description.




To install Synaptic all you need to do is type sudo apt-get install synaptic.

In the image above you can see that I have decided to install the Chromium web browser instead. This is because I already have Synaptic installed.

When you use the apt-get install command you will get a message telling you exactly which packages will downloaded and installed and how big they are.

If you are happy to continue installing Synaptic press Y to continue.

Text will scroll up the screen showing you what is going on. Basically this will include several packages being downloaded and then installed.

When the process is finished type exit to close the terminal window.

On the menu under System there should be an option for Synaptic.

Step 2 - Using Synaptic

Run Synaptic by selecting it from the menu.

You will be greeted by a login window. You will need to enter the password you set up for the pi user and press ok.


Synaptic will load in the background but the message above will be displayed telling you the purpose of Synaptic and package management in general. Notice that there is a "show this dialogue at startup" checkbox. If you do not want to see this message every time you run Synaptic uncheck the box and then click the close button.


Synaptic provides a much more visual way of viewing the packages that are available in the Raspbian repositories.

On the left hand side is a list of categories and on the right the packages that are available in the selected category.


If you want to find a particular application by name or by description click the search button.

A little dialog box will appear. Enter the name of the application or a description of the application and click search.

On the Raspberry PI it takes a little while to search the repositories and progress can be monitored in the bottom right hand corner of the screen in the style of a blue progress bar.


A list of available packages will appear in the right pane which matches the search term.

To get more information about a package click it once with the left mouse button.

A description of the application will appear in the bottom pane.

To mark an application for installation click the checkbox next to the application. You can queue multiple installs by checking boxes next to all the applications you wish to install.

When you are ready to install the application or applications click Apply.


A window will appear showing you which applications will be installed and any required dependencies that will need to be installed as well as the applications you have chosen.

To continue the install click the Mark button.


You get one last chance to cancel the install at this point. The above window will appear showing how big the download is and the list of packages that will be installed. If you are happy to continue click Apply.


A window will appear showing you the progress of the downloads and how long it is expected to take.


When the downloads are complete another window will load showing you the progress of the actual installation.

Finally once all this is done your chosen applications will be installed.

The PI Store

If you want to try some homebrew applications then check out the Raspberry PI store

Summary

For seasoned Linux users downloading applications is second nature but for people coming to Linux for the first time and especially users whose first experience of Linux is the Raspberry PI it isn't necessarily obvious how to install new applications.
I hope this guide goes someway to helping you with your Raspberry PI experience.
Thanks for reading.
Viewing all 1407 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>