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