19

I am a vc++ developer (but like Qt) interested in learning from open source project by contributing and reading the code. I use windows as primary development platform. Which project will be right for me to start?

Is chromium a good choice?

yesraaj
  • 46,370
  • 69
  • 194
  • 251
  • 11
    The question you should ask yourself is "what FOSS tools do I currently use? what's wrong with them? how could I make them better?" –  Jul 09 '09 at 20:02
  • 1
    If you want to learn from the source code, it's unlikely that you'd also be able to make useful contributions to the project - and vice versa, if you're able to contribute to the project, you probably won't learn much new by reading the code. Which do you want? To contribute or to learn? – jalf Jul 10 '09 at 02:44
  • 8
    @jalf: I'm not sure I agree. *Most* developers look at source code, make lots of assumptions (usally wrong) about what the code is doing. This normally leads to the statement: "I could do it better". The devil is usually in the details with source code, and IMHO it's through reading and modifying that you really get to understand something. – Richard Corden Jul 10 '09 at 09:05

14 Answers14

40

Is chromium a good choice?

I believe so, yes!

The source code is IMO very well written, it's a really active project with a lot of work to do and is also interesting in many different ways. Obviously a browser is in itself just a combination of specific libraries, and thus Chromium gives you a nice entry to learn more about them and hopefully contribute evidently. But most importantly it has a big community, is sponsored by a big corporation and has many talented software engineers on its core team.

There are so many things to do, so you could even contribute things you know while learning stuff you don't.


I'd like to add; The choice of an open source project to join should be based on:

  1. Your level of expertize
    • What you'd like to learn
    • Quality of the code
    • Maturity of the project
    • Code complexity (not to be confused with readability)

I only speak for myself here, but as much as I love learning more from too complex projects (file systems, RDBM etc) I find those projects to be less rewarding because of the overwhelming complexity. Try not to learn everything at once, take smaller steps and finish what you start rather than taking larger steps and give up.

Just my 2c - YMMV


In case you'd want to try Chromium out, here are links for the design documents:

The links above are all taken from the Chromium developer documentation, where even more details can be found.

Anyway, good luck finding a project that fits your needs!

hannson
  • 4,465
  • 8
  • 38
  • 46
17

Get involved in the Qt Creator project.

Rob
  • 76,700
  • 56
  • 158
  • 197
  • Can you tell us something about Qt Creator and why it's a good one to try to start with? – David Nehme Jul 16 '09 at 13:30
  • 3
    Qt Creator is a great IDE but with more contributors it could be superb. It's only v1.x so there is plenty of scope for new functionality and the OP mentioned Qt. – Rob Jul 16 '09 at 19:04
11

KDE has plenty of code in C++/Qt. It is a huge example of open source community... their SVN repository will soon have 7-digit commit numbers (http://websvn.kde.org/).

liori
  • 40,917
  • 13
  • 78
  • 105
  • KDE is great, but he did say he primarily uses Windows. (And yes, I know, it runs on Windows, but very few people do that.) – Zifre Jul 15 '09 at 17:02
6

Google has a lot of open-source C++ projects. Specifically, perftools (replacement malloc, heap/CPU profiler) is in need of considerable Windows and x64 expertise.

http://code.google.com/hosting/projects.html

Tim Sylvester
  • 22,897
  • 2
  • 80
  • 94
4

Well I think there is a lot of interesting opensource projects using c++. Boost is the first project one can think about. It is a library, but very well written, so you will learn a lot. If you want something more fun you can try something like a game engine like Ogre3D. If you want to participate in a project with Qt bindings, I suggest projects related to KDE as they mainly use Qt, AFAIK.

Boost

Ogre3D

Zifre
  • 26,504
  • 11
  • 85
  • 105
neuro
  • 14,948
  • 3
  • 36
  • 59
3

how about webkit about Web browser engine open source project?
I hope it helps.

Community
  • 1
  • 1
Tiger
  • 507
  • 1
  • 6
  • 16
2

Launchy

from the project page introduction

Launchy is a free windows and linux utility designed to help you forget about your start menu, the icons on your desktop, and even your file manager.

Launchy indexes the programs in your start menu and can launch your documents, project files, folders, and bookmarks with just a few keystrokes!

They also have a plugin interface so you could start with writing a plugin before getting into working on the actual code.

Jesse Vogt
  • 16,229
  • 16
  • 59
  • 72
2

Participate in a Qt competition such as: Pimp My Widgets and QtCentre programming contests

Lawand
  • 1,094
  • 2
  • 16
  • 40
1

I enjoyed working on Code::Blocks. It's not a trivial project, but you should still be able to wrap your head around it to contribute. :)

The most important thing is work on something you want to work on.

Sam Harwell
  • 97,721
  • 20
  • 209
  • 280
1

wxWidgets is better for c++ developers who has knowledge about MFC and Windows. Qt uses MOC compilers to generate c++ code. In wxWidgets you have full control of your code.

harik
  • 563
  • 2
  • 5
  • 16
1

You could try and help with the KDE port to Windows. KDE is a desktop environment which was traditionally at home on Linux/Unix systems, but now has (native) ports to Windows and MacOS X.

You could help make those applications perform and integrate better with Windows. Working on certain apps would be highly appreciated (e.g. Amarok - an advanced music player, digiKam - an advanced digital photo management application) as they would be good open source options to Windows users.

You can get a good overview on how to participate on the KDE for Windows TechBase article.

Anyway, good luck choosing ;-)

riyad
  • 479
  • 4
  • 3
1

I don't think anyone here can really answer the question "Which project will be right for me to start?" as no one here really knows who you are. Programming is an absolutely HUGE area, you can do low level systems code (i.e. drivers & OSs), databasing, web browsers, games, word processing, and the list goes on.

What you should do, is find something you would like to work on, and start playing around with the code. Try out several different projects in that area and see what you can understand, contribute to and learn from (its also a good way of seeing a variety of some of the programming paradigms out there). Also, if you are trying to learn from this as well, you should check out how much help and communication between the members of the project there are and how much they seem to be willing to help one another (and if there is almost no communication, i'd worry about the project surviving much longer anyway).

Grant Peters
  • 7,691
  • 3
  • 45
  • 57
0

Before reading the actual question, Chromium was my first thought. I definitely think it's worth it.

Tamás Szelei
  • 23,169
  • 18
  • 105
  • 180
0

If you are into gaming, try the Half Life 2.2 Full SDK. Its free and you can make your own mods.

YD8877
  • 10,401
  • 20
  • 64
  • 92