don wrote:I would *really* like to hear from the people who have downloaded Celestia and know C++, as to why they don't want to help with it's coding. If we don't know "why", then we can't fix "why", and Celestia will never get more programmers.
Is the Celestia code not documented enough (objects, classes, etc.)?
Is the code too complex to follow / figure out?
Do you not have a couple hours a week to offer?
Do you not want to download and install Unix environment software on your Windows system?
Is SourceForge / CVS too much of a pain to use?
Have your questions not been answered in the past?
Please help us to make it easier for experienced C++ programmers to come on board the Celestia Open Source project!
Thank you,
-Don G.
Sorry for the long reply.
I want to give my 2 cents contribution to the discussion telling you my experience.
A few months ago I was exactly in the Don’s situation. I haven't so much time but I want to contribute. I've submitted a lot of feature requests to improve Celestia:
http://celestiaproject.net/forum/viewtopic.php?t=2693
Many times those requests was explicitly acknowledged as very interesting and suitable for a rapid implementation. But if you browse my website you'll see that almost none of them was implemented yet. So like some of you, I've decided to start an active contribution.
First of all it is necessary to say that unitl 1 month ago I haven't written a single line of C++ since 1990. At that time I was in love with the mythical Borland Turbo C++. (:>).
After that period I've started my working experiences and so in some occasions I've programmed with VB and VBA (Access, Excel, Word), and I had a long amateur experience with Delphi (that is really a wonderful tool ) even with 3D programming. Delphi rulez! (:>)
Since I met Celestia I was stuck about the beautifulness of the program. The source code vas freely available but when I've tried to understand the internal mechanisms I was a little in trouble. During the last months I've studied hard C++, STL and OpenGL to be able to make some progress.
For a beginner of C++, reading the Celestia code is very difficult. The lack of comments is very frustrating. But I think that for an intermediate or an expert C++ programmer the code results very neat, clear and for what I can understand since now, has a good balance between elegance and efficiency.
The coding conventions are defined (there is a detailed HTML file), but are too simple.
There are many coding C++ conventions that in some cases should result very handy e.g. the ones used by MFC (Microsoft Foundation Classes). Moreover from my experience using the Delphi conventions you always know if a data member or a method is private or public. In Celestia code simply looking at a variable name you never know which is its type. Since you haven't familiarized enough you always must search for the declaration.
Celestia uses STL(Standard template library). STL is very powerful but relies on some C++ concepts that are difficult to learn like multiple inheritance, and template classes. Using VC++ the help available on STL is a disaster. So you have to rely on other resources on the web.
Celestia is a program that simulates very complex astronomical phenomena. The simulation performs very complex math calculations. So at least a considerable knowledge of Physics and Math is required.
Celestia is essentially C++, whenever possible uses STL, streams and all the other OOP programming concepts. But uses OpenGL too. OpenGL have completely the opposite approach because is procedural. For a natural OOP amateur programmer like me starting with OpenGL was very difficult. I've used DirectX for a long time so I consider to know at least the basics of 3D graphic programming. But start with OpenGL was very difficult. As you can see from my website I've linked all the tutorials available on the web.
Celestia uses hardware extensions to manage the more complex visualizing effects stuff. The complexity of this part of the software is extremely high and is absolutely out of the common developers capabilities. Only developers with highest 3D hardware programming skill can contribute.
For a Celestia novice, to follow the code execution without an interactive debugging system it is absolutely impossible. There is a TXT file that explains generically the software functioning and the main internal objects but is only a trace. So first of all you need to configure a tool like VC++ to be able to debug interactively Celestia code. Actually this operation is absolutely painful. Refer to this thread for more info:
http://celestiaproject.net/forum/viewtopic.php?t=3376
Celestia is designed to be executed on multiple Operating Systems. This feature increases a lot the complexity of the project. Practically now the Celestia that runs on Linux is different from the ones that run on Windows and MacOS-X because have different user interfaces and not all the features are implemented on every platform.
Usually the more significant Celestia development is conducted by Chris for the windows platform. Then usually Christophe ports (almost immediately) the new features on Linux (KDE) and lately other volunteers ports on MacOSX. Usually to avoid to add more UI complexities and differences new features are added simply associating keyboard shortcuts.
Talking about CVS I don't know which is the situation for other people but actually for me is a bloody bath. I'm able to connect to Sourceforge about 1 time every 10 tentative. When someone updates the stars.dat (often to correct 1 star a time) many tentative are necessary to update correctly. (:<<<)
But I see other problems lie on the background of Celestia Project.
Since now I was not able to figure out if there is a clear implementation design schedule.
http://celestiaproject.net/forum/viewtopic.php?t=3023
Perhaps there are private messages between developers other than the ones at:
http://sourceforge.net/mailarchive/foru ... um_id=9864
I think that in the last version were added too many new features because for me it is abnormal that 11 pre releases were made before a final release.
http://celestiaproject.net/forum/viewtopic.php?t=3151
But the worst thing is that practically every Celestia user that browses Celestia Forums now had downloaded the 1.3.1 pre 11. This version should really be considered the 1.3.11.
Forum activity is still very high but on the counterpart the official website is not updated very often.
I think that a better centralized support for add-on is absolutely requested.
Shatters.net often responds very badly.
http://celestiaproject.net/forum/viewtopic.php?t=3363
I think that sooner or later some kind of economical subscription on voluntary basis will be necessary.
Final considerations
#1 To contribute actively and successfully to the Celestia development it is necessary to have a considerable experience in C++, STL, and OpenGL, plus Windows(Win32) or linux(KDE/GNOME) or MacOSX(Cocoa).
Moreover you have to familiarize with Celestia Objects. Often will be necessary a long try and error experience. Initially the Learning Edge is very hard and time consuming.
These requirements automatically excludes a large number of possible volunteers and I think discourages the remaining ones.
I think that Marc that is conducting the parallel Mostly Harmless project surely will confirm all these considerations.
Only large time availability and strong motivation should conduct new developers in the team.
#2 If The development should be organized in a different way, defining very small and specific jobs on a limited number on Celestia objects, more developers should contribute offering patches and becoming specialists of some tasks solving very specific and restricted problems.
I’ve chosen this way:
http://celestiaproject.net/forum/viewtopic.php?t=3362
To be really effective all this requires a team management organization with a project manager that spend time to organize jobs, collect information’s and distribute tasks.
#3 It is necessary to remember what Chris said
http://celestiaproject.net/forum/viewtopic.php?t=3174&start=15
<we do it just for the fun>, so you have to consider Celestia as it really is: a wonderful program originally created for fun by a fantastic C++ programming team that one day decided to share its very complex source code with other people. If sometimes the things do not go as we would, perhaps is because Chris and other developers actually have more interesting and fun things to do or simply haven't so much time to spend on.
So volunteer C++ developers, come on! Don’t be discouraged, accept the challenge, propose your contributions and join the development team!
Bye - Paolo