Free software projects in Java or C++

Free software projects in Java or C++

Shlomi Fish shlomif at iglu.org.il
Sat Dec 26 13:21:48 IST 2009


On Saturday 26 Dec 2009 10:05:37 Uri Even-Chen wrote:
> On Sat, Dec 26, 2009 at 9:51 AM, Oron Peled <oron at actcom.co.il> wrote:
> > On Friday, 25 בDecember 2009 23:38:38 Uri Even-Chen wrote:
> >> A friend of mine suggested me to join a free software (open source)
> >> project in Java or C++, to gain experience in these languages.
> >
> > Your friend gave you a good advice. However, please note that usually
> > there is no *immediate* reward. It's not like a (free software) newbie
> > joins a project and three months later he is swamped with job requests.
> >
> > Working on a free software project tend to increase your capabilities
> > by exposing you to different technologies and working styles. On the
> > long run (years), this can bring you not only fun, but work as well.
> 
> Thanks for your advice.
> 
> >> Do you have an idea how to find a good project I can join, in Java or
> >> C++ or maybe Python?
> >
> > There are many sites hosting free software projects. Some of them:
> >  www.sourceforge.net
> >  savannah.gnu.org
> >  gna.org
> >  github.com
> >

There are some lists for them here:

* http://en.wikipedia.org/wiki/Category:Free_software_hosting_facilities

* 
http://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities

* http://www.dmoz.org/Computers/Open_Source/Project_Hosting/

In addition you may wish to browse, search or follow http://freshmeat.net/ or 
http://directory.fsf.org/ - they are directories for software with 
announcements.

> > Since you used some scripting languages in the past (PHP), it looks
> > like python would provide easier learning curve for you.
> 
> I personally prefer compiled programming languages than scripting
> ones.  

Just a note - there is no dichotomy between compiling a language and it being 
a "scripting" language. For example, Perl, Python and PHP are all compiled 
into bytecodes, and CRuby will get a bytecode-based backend in ruby-1.9.x. 
What you probably mean is compiled into binary machine-code executables. This 
actually is possible to some extent with dynamic languages too.

And just for the record see:

* http://xoa.petdance.com/Stop_saying_script

* http://www.perl.com/pub/a/2007/12/06/soto-11.html

Java and the .NET-based languages are also compiled into bytecode, which is 
then executed. (Though there's an extra level of JIT).

> I have experience with both, Pascal and C vs. Basic and PHP and
> Perl.  I want to learn Python, but I think there are less jobs with
> Python, so it's better I learn Java or C++.  I think there are many
> jobs in Java and C++.  

Yes, for better or for worse. Personally, it has been my feeling that programs 
written in either Java or C++ seem incredibly difficult to get right, although 
in these cases from different reasons. Maybe working in C++ with a framework 
such as Qt is a good idea:

http://www.shlomifish.org/open-source/portability-libs/

I have a multi-threaded program that someone who contacted me about 
http://www.shlomifish.org/rwlock/ wrote in C++ which works perfectly if you 
use printf and gets stuck quickly if you replace them with "cout <<" (I have a 
define for toggling them). Someone once gave me a link to a forum post which 
documented this, but this seems so basic that it should just work.

He also was unable to use my RWLock (despite prefering it over the built-in 
POSIX rwlock) because it caused him more problems. Eventually, he said that he 
became convinced that he should have written his program in C instead of C++.

> There are also jobs in C# and .NET, but I
> prefer not to be stuck with Microsoft technologies.  I don't like
> Microsoft, although I have been using their products for many years.

I should note that C#/.NET/etc., while having originated from Microsoft, are 
not specific to Microsoft and http://www.mono-project.com/ has implemented 
them for most other OSes besides Microsoft. Recently I ported some Perl 5 code 
to Mono and C# (because the Perl code ran too slowly for my taste and what I 
tried to do). Without really knowing C# beforehand, it took me only a day to 
write that program (409 lines of C# code and 113 lines of Perl code to help 
test it (according to SLOCCount)), and it ran fine - started quickly and seems 
to have run much faster than the Perl code. So I was happy I chose C# for that 
instead of C which I know better.

Naturally, this is just a relatively simple algorithmic and command line 
program, which isn't representative of the more complex software that C# tends 
to be used for, so I cannot comment on the suitability for it.

What you are right about is that most C# and .NET shops will expect you to 
develop and deploy on Windows, because Mono is both incomplete and deploying 
.NET apps on non-Windows platforms may exhibit bugs or non-portabilities in 
the program. Someone once sent me a C#/.NET program he wrote and I couldn't 
run it on Linux because it used backslashes for paths. (This is naturally not 
limited to .NET - you can write Windows-specific software in almost any 
language).

> Also, thanks for the websites you sent me.  I know sourceforge, the
> others I will check later.
> 

I personally am not maintaining any Java or C++ projects (and am happier this 
way), but there are many bugs in KDE (which I'm using) that can be fixed - 
http://bugs.kde.org/ and KDE is a large C++ project.

Regards,

	Shlomi Fish

-- 
-----------------------------------------------------------------
Shlomi Fish       http://www.shlomifish.org/
Optimising Code for Speed - http://shlom.in/optimise

Bzr is slower than Subversion in combination with Sourceforge. 
( By: http://dazjorz.com/ )



More information about the Linux-il mailing list