Archive | February, 2012

Featured projects, February 27, 2012

Once again this week we feature a wide range of projects – a game, an operating system, a security tool, and an educational tool, among others. Check out these projects that have shown a surge in activity in the last two weeks.

  • ReactOS

    ReactOS is an open source effort to develop a quality operating system that is compatible with applications and drivers written for the Microsoft Windows NT family of operating systems (NT4, 2000, XP, 2003).

  • LOIC

    Low Orbit Ion Cannon.

    The project just keeps and maintenances (bug fixing) the code written by the original author – Praetox, but is not associated or related with it.

  • Maxima — GPL CAS based on DOE-MACSYMA

    Maxima is a fairly complete computer algebra system written in lisp with an emphasis on symbolic computation. It is based on DOE-MACSYMA and licensed under the GPL. Its abilities include symbolic integration, 3D plotting, and an ODE solver.

  • Network Spoofer

    Network Spoofer lets you mess with the internet on other people’s computers from an Android phone.

  • PDFedit

    Free editor for PDF documents. Complete editing of PDF documents is possible with PDFedit. You can change raw pdf objects (for advanced users) or use many gui functions. Functionality can be easily extended using a scripting language (ECMAScript).

  • Biet-O-Matic (Bid-O-Matic)

    Yet another sniper tool :-) BOM ist a tool to watch and bid on auctions. Many features like mail control, autoconnect/disconnect, integrated ODBC- client, multi-language-support, time sync, item grouping etc.

  • Digital Paint: Paintball 2

    Paintball2 is a fast-paced first-person game with capture the flag, elimination, siege, and deathmatch (free-for-all) styles of gameplay. This project focuses on enhancing the Quake2-based engine it uses.

  • iTALC – OpenSource classroom management

    iTALC is a free classroom management software which enables teachers to view and control computers in their labs and interact with students. It supports Linux and Windows XP (Vista/7 soon) and it even can be used in mixed environments transparently.

The Anvil Podcast: GeoServer

Rich: I’m speaking with Justin Deoliveira, who is involved with the GeoServer project. GeoServer is a little over 10 years old and … almost 11 years old actually … and is a Java server for geospatial data.

If the embedded audio player below doesn’t work for you, you can download the audio in mp3 or ogg format.

You can subscribe to this, and future podcasts, in iTunes or elsewhere, at http://feeds.feedburner.com/sourceforge/podcasts, and it’s also listed in the iTunes store.

Rich: Justin, can you tell us a bit more about what that means. How someone would actually use this product.

Justin: Sure, and thanks for having me on, Rich. As you mentioned, GeoServer is a GIS data server written in Java. What it allows for is the publishing and sharing of GIS, or geospatial data, on the web.

When I say GIS or geospatial data, what I mean is data that has location associated with it. When you’re looking at a map and you see a road or a building on a map, that building has some geospatial representation of it, that allows us to place it on a map accordingly.

The analogy I usually use is GeoServer is sort of a specialized Web server for geospatial data. Typically where we see it used is with web mapping. So using it as a backend to create a Google Maps type web map, but with full control over things like cartography and styling

Rich: The data that’s included in this – where does that come from?

Justin: GeoServer ships with what we call a vanilla or demo data, and that’s data that’s been gathered from all over the place. I believe there’s a subset of it that comes from New York City. But you’re certainly not constrained to that data. Typically people use GeoServer with their own data. So it might be a government agency that has satellite imagery or something like that, that they want to publish on the web. They can use GeoServer to connect to that data and serve it up for them.

Rich: Can you give me some examples of sites are using this?

Justin: Certainly. We’ve seen a lot of update in GeoServer in the last two years. A lot of it we see in the government sector, from federal all the way down to municipal. For instance, the FCC uses it in something called their Broadband Map, which is essentially a map of high speed Internet connectivity across the United States. You can go to the map and see things like high-speed Internet density at a country scale. You can also go down to the state and county scales as well. And that is all using GeoServer on the back-end.

broadband

The city of Portland uses GeoServer in their transportation authority call TriMet. If you go to the TriMet site – TriMet.org, you’ll see a map of the Portland transportation network, with all the routes and stops, and that stuff on it. And it also comes with trip planner, where you put in a source and destination where you want to go, and the route is calculated and displayed on a map. That all comes with GeoServer on the back end.

trimet

A final example is, New York City uses it in something called their SCOUT program. SCOUT stands for street conditions observation unit. Essentially how it works is, inspectors will go out in New York, and drive the streets, and they’ll report on conditions and events that they see, and those reports are fed back into their system, and displayed on a map, served by GeoServer in real time. That map is used by other agencies to allocate and dispatch resources accordingly.

SCOUT

Rich: The route finding stuff … is that included in to GeoServer as well?

Justin: The way Portland uses it is that they have their own route trip software that they use. So they do the route calculation and then push the result into GeoServer. However I should mention that it’s using something called Open Trip Planner, which is another Open Source project, and that’s an Open Source based trip planning multi-modal project.

Rich: I see that you have a fairly sizeable developer pool. What’s the process for somebody becoming a full developer on a project like this?

Justin: Good question. We don’t just hand commit access out, obviously, as most Open Source projects do. It’s all based on trust for us. What we encourage developers who interested in contributing, is to submit as many patches as they can. And we have formal review process for patches. Patches are commented on. We get the patch submitter to clean things up. Or we just apply the patch if it’s good enough. And once a developer has submitted enough patches, gaining the trust of the core developer community – we don’t have a specific number – they’re granted commit access.

We also have a module system in GeoServer. Someone might want to contribute just a module, and then they become the maintainer of that specific module. That gives them commit access for that specific module, but not necessarily to some of the other core modules.

Rich: Do you have a formal vote, or is it just consensus on the mailing list?

Justin: For things like patches, it’s pretty informal in terms of voting. We require that at least two core committers review a patch. They give their two plus-ones, and then the patch can be submitted. We also have a formal improvement proposal process, which we call GeoServer Improvement Proposal, and that’s more formal, and it’s really designed for larger changes. Things like architectural changes, breaking backwards compatibility, stuff like that. And that’s a formal process. We require the whole project steering committee to vote on that, and there has to be more positive votes than negative.

Certainly it didn’t start off like that. In the early years – back in the early two-thousands – is was pretty informal, and it was one or two developers doing things pretty ad-hoc. As the development community grew, and people were doing more and more contributions, it really became more critical. And now it’s a framework we rely upon to move things on the project smoothly.

Rich: I noticed that there’s also commercial support available for GeoServer. Can you tell me about that.

Justin: I work for a company called OpenGeo, who essentially does that. We offer offer products that bundle GeoServer, and we provide support and training, customization for GeoServer. So it’s a pretty typical model of company monetizing open source – Red Hat or JBoss – having this Open Source core that’s based on GeoServer and other Open Source mapping projects, and then offering commercial support on top of that.

And there’s other organizations that do as well – there’s a company in Italy called GeoSolutions that also offers the same level of commercial support as well.

Rich: Where’s this project going in the future?

Justin: The current stable version of GeoServer is 2.1, and the 2.2 release is coming probably within the next six months. A few pretty major themes have been focused on for 2.2: One is the cloud and clustering – working on features that make GeoServer scale better and making it easier to deploy GeoServer in a clustered environment.

As we see GeoServer adopted by more agencies – especially government agencies at the Federal level, obviously security becomes a major concern. 2.2 comes with a complete revamp of the GeoServer security system. It allows for more flexibility for hooking up to external security system that might be in place, like LDAP servers and things like that. But also things like better password encryption.

Dealing with geospatial data means … there’s a wide variety of formats of geospatial data, so we try to support as many of them as we can. 2.2 will also come with improvements to existing formats, and also support for new formats as well.

And then the final one might be … this is pretty experimental at this stage … We’re seeing more asking for true 3-D. Typically maps that you and I are used to looking are all two-dimensional. But there are people with 3-D data out there, and they do want to visualize it on a map, so providing 3-D capabilities as well.

Rich: I’m particularly interested in the Open Street Map project. Is there any overlap whatsoever between what you’re doing and what they’re doing?

Justin: Not really. The Open Street Maps initiative is really on the data side of things, and GeoServer lives on the tool side of things. Open Street Map is this rich, really good crowdsourced data set, and then GeoServer would load Open Street Map data, and push it onto the web.

Rich: So, I could use the Open street Map data within GeoServer?

Justin: Certainly

Rich: Cool!

If I were interested in getting involved in your project … I may have some Java experience or I may not. Tell me how I could plug into what you’re doing.

Justin: There are certainly numerous levels that people can get involved. The easiest one is probably just filing bugs in the issue tracker. Whenever users report issues or problems that they’re having in the forum, we encourage them to file those as bug reports. And if they do have some programming experience we certainly encourage them to submit a patch along with that bug report.

For those that might not have coding skills we also accept documentation patches. So if you’re a user who is familiar with a certain feature, and that feature might not be documented all that well, we certainly encourage you to submit a documentation patch, and help us with continually improving the documentation.

I’ll also mention translations. GeoServer comes with a web interface for doing administration. That interface needs to be internationalized into different languages. I think we support four or five different languages now, and we’re always looking for new people to do translations.

Rich: Thanks so much for speaking with me.

Justin: Thanks a lot for having me, Rich.

SourceForge Open Data – Measuring project heartbeat

I mentioned back in December that we have an ongoing relationship with Notre Dame University where we provide them with a monthly dump of all of our data, and they provide this to people doing research into how Open Source software development works.

I’ve been having fairly regular conversations with the director of that program, and he’s been sending me a steady supply of research papers that have come out of it. I rather expected most of them to be very esoteric and not particularly practical for every-day consumption, but I’ve been wrong on that count.

One paper I found particularly interesting was one titled “Heartbeat: Measuring active user base and potential user interest in FLOSS projects” by Andrea Wiggins, James Howison, and Kevin Crowston. It was so clearly expressed that when I got to the end of it, their conclusion seemed like I should have known it all along.

By watching download traffic on projects, and correlating peaks with releases, you can determine what part of that is the installed base updating to the latest version, and what part is new users contributing to project growth.

screen-shot-2012-02-22-at-33824-pm

This is supported by data from various SourceForge projects, and expressed as some very simple mathematical equations, which you can quite happily skip if you’re not a mathematician.

You can read the whole paper over at FLOSShub.

I’ll be sharing other papers over the coming months, as I find ones that seem to be not only particularly insightful, but also immediately applicable to those of us involved in Open Source communities.

Next on my list is a paper titled “Defining Open Source Software Project Success“, by the same team of collaborators.

Frustrations. Or: why the Arduino IDE is a mess

[[ This guest blog entry is by Daniel van den Ouden of the ArduinoRCLib project. The original posting is over here. ArduinoRCLib is a library for the development of Arduino based R/C equipment. The blog post caught my eye because I'm interested both in the Arduino world, and in R/C stuff (helicopters, in particular).

Opinions here are those of the author of this piece, and don't necessarily reflect the opinions of SourceForge, or of GeekNet. ]]

It’s official, I hate the Arduino IDE. There’s just so much wrong with it that I hardly know where to begin…

First and foremost: the build pipeline. Who came up with this anyway? I know Arduino is aimed at beginners, but that’s no excuse to make a mess of things. What happens when you hit the ‘Verify’ button (compile) is the following:

1. Create a temporary folder somewhere in your user directory, in my case (WinXP) Documents And SettingsUserLocal SettingsTempbuild-somerandomnumber. All compiled files end up here, I guess that reduces clutter in your project folder, but what’s the problem in having an obj, lib or bin folder in there anyway?

2. Do some pre-processing on the PDE file, i.e.: add an include for the Arduino header, and create forward declarations for each function in the file. Now I understand why they do this: to keep things simple for beginning programmers; no need to include a platform header and no need to have functions declared before calling them. But in my opinion educating new programmers is a much better idea, and will make life a lot easier for those of us who already know what we’re doing.

* Oh yeah, one tiny little detail: generated function declarations are placed above typedefs. So typedef struct { blah } Sometype; and then using Sometype* as a parameter in a function signature will give you some nice unexplainable compiler errors, since the function declaration will be placed above the typedef. But of course, none of this process is shown to you, you just end up with the errors.

3, Compile the pre-processed file. There’s some magic involved here as well. The pre-processor also scans for includes and tries to figure out which libraries are used. It will add all the necessary include paths to the compiler arguments. I’ll explain why this is a problem later on. In Arduino 0.22, compiler warnings are turned off, that’s right, no warnings. Seriously? Turns out I was missing a return in one of my functions, great..

4. Compile all library files that are used.

5. Link

6. Upload

If you’re like me and like to have your source tree reflect the namespaces you use then you’re out of luck. I for one like to have to use #include PPMOut.h> for my rc::PPMOut class, but that’s not going to work for multiple reasons.

First of all, using that include won’t tell the pipeline you’re using the rc library, it doesn’t look beyond the library’s root folder for files, so the library won’t be added to the include path and you’ll be presented with a nice compiler error. This can be fixed by including a file that is placed in the root of the library folder, like rc.h. So you’ll have to add another (useless) include to your source, yuck.
Now you’ve solved the include problem and fixed the compiler error, but get linker errors for unresolved references! Great, the pipeline doesn’t see the CPP file unless it’s in the root of the library, so it doesn’t compile it.

And finally, none of this is configurable in any way through the IDE, can’t set compiler flags, change warning levels, optimization levels or anything. A lot of these frustrations wouldn’t exist if there was some form of project file with compiler settings, include paths, etc. None of it would have to be very complicated.

And don’t get me started on the actual editing of code using the Arduino IDE, I’ve selected the “use external editor” option a long time ago; a few minutes after installing the IDE to be precise.

So, next challenge: rigging up a build pipeline in visual studio…

Featured projects, Feb 20-24

Once again, this week’s featured projects span a wide variety of technologies, from hardware programming to watching movies. What they have in common is that they all demonstrate attention to details and concern for quality. Here they are – the featured projects for February 20-26, 2012:

  • VLC media player

    VLC media player is a free and open source media player and multimedia framework written by the VideoLAN project. VLC is a portable multimedia player, encoder, and streamer supporting many audio and video codecs and file formats as well as DVDs, VCDs, and various streaming protocols. It is able to stream over networks and to transcode multimedia files and save them into various formats.

  • HiJackThis

    HijackThis is a free utility that generates an in depth report of registry and file settings from your computer. HijackThis makes no separation between safe and unsafe settings in its scan results giving you the ability to selectively remove items from your machine. In addition to this scan and remove capability HijackThis comes with several tools useful in manually removing malware from a computer.

  • PonyProg: serial device programmer

    PonyProg is a serial device programmer based on some simple and cheap interfaces for the PC and a user friendly GUI available for Windows9x/NT/2K/XP and Intel Linux. Its purpose is programming every serial device like eeproms and microcontrollers

  • PosteRazor – Make your own poster!

    Want to print a poster? PosteRazor cuts an image file into pieces and you can print then on your printer and glue them together to a poster. Easy FLTK based user interface. Uses FreeImage for image loading. Creates PDFs as output.

  • Fugu SSH

    Mac OS X frontend for OpenSSH’s sftp/scp tools

  • eXe

    eXe, the eLearning XHTML editor, is a freely available authoring application that assists teachers in the publishing of web content without the need to become proficient in HTML or XML markup. Resources authored in eXe can be exported to the web or LMS.

  • Synfig

    Synfig is a powerful, industrial-strength vector-based 2D animation software package, designed from the ground-up for producing feature-film quality 2D animation with fewer people and resources.

  • Fink

    Fink is an attempt to bring the full world of Unix Open Source software to Darwin and Mac OS X. Packages are downloaded and built automatically and installed into a tree managed by dpkg, all with full dependency tracking.