Question to users who know C++

General discussion about Celestia that doesn't fit into other forums.
Topic author
don
Posts: 1709
Joined: 12.07.2003
With us: 21 years 2 months
Location: Colorado, USA (7000 ft)

Question to users who know C++

Post #1by don » 23.10.2003, 18:04

Greetings to all Celestia users,

If Celestia has been downloaded by hundreds of thousands of people (or 2 million as Frank says in his User Manual), then why are there only a handful of active posters in the forums (mostly add-on and texture creators), and even fewer people willing to offer their programming experience?

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.

Falck
Posts: 48
Joined: 04.07.2002
With us: 22 years 2 months

Post #2by Falck » 24.10.2003, 05:09

My knowledge of C++ is somewhat limited, but I'd love to help.

I guess my problem is just to getting the code to compile the first time. After that I'd be set, but I tend to have all sorts of problems in trying to build it with VC++6. I did read a few weeks back that the makefiles are updated, but the VC++ project file is not, but I havent since gotten around trying again.

Any chance on getting it to work with a free compiler like Dev C++?

chris
Site Admin
Posts: 4211
Joined: 28.01.2002
With us: 22 years 8 months
Location: Seattle, Washington, USA

Post #3by chris » 24.10.2003, 10:19

Let me add one thing . . . Though the number of regular contributors is small, a significantly larger number of people have contributed one or two patches.

--Chris

Topic author
don
Posts: 1709
Joined: 12.07.2003
With us: 21 years 2 months
Location: Colorado, USA (7000 ft)

Post #4by don » 24.10.2003, 11:48

And I'm sure most every patch (bug fix, feature extension, new feature, etc.) is certainly welcome!

What about Falcks question about getting Celestia to compile with a free compiler like Dev C++?

-Don G.

Paolo
Posts: 502
Joined: 23.09.2002
With us: 22 years
Location: Pordenone/Italy

Re: Question to users who know C++

Post #5by Paolo » 24.10.2003, 11:59

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. :oops:

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
Remember: Time always flows, it is the most precious thing that we have.
My Celestia - Celui

Harry
Posts: 559
Joined: 05.09.2003
With us: 21 years
Location: Germany

Re: Question to users who know C++

Post #6by Harry » 24.10.2003, 12:28

Paolo wrote: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.


Have you tried recently? The CVS-server on sourceforge was upgraded, and for me is now usably nicely.

Harald

Topic author
don
Posts: 1709
Joined: 12.07.2003
With us: 21 years 2 months
Location: Colorado, USA (7000 ft)

Post #7by don » 24.10.2003, 12:38

Howdy Paolo,

Thank you for sharing your experience with us. WOW! You really have jumped into the internals of Celestia. Much deeper than most people I would think.

Personally, I think a lot of people *could* get involved in Celestia coding with much less knowledge than you suggest, such as with the Windows User Interface, CEL and Lua Scripting, bug track-down and repair, photo and video capture / recording, and many other "specialized" functions / features that do not require a physics or astronomy degree. Much like you suggested in your consideration #2. We can all hope, right?!

By the way Paolo, how is your class list coming along?

Is there any documentation that you have created that you can share with other aspiring "new" Celestia programmers? For example, a step-by-step list of what a Windows user must acquire, install, set-up, etc. in order to access the CVS repository AND get Celestia to compile successfully? This alone may be keeping a lot of folks from helping out, as it is a long, time-consuming process, based on one of the threads you linked to.

Thanks again for your very informative message!

-Don G.

Falck
Posts: 48
Joined: 04.07.2002
With us: 22 years 2 months

Post #8by Falck » 24.10.2003, 14:48

don wrote:Is there any documentation that you have created that you can share with other aspiring "new" Celestia programmers? For example, a step-by-step list of what a Windows user must acquire, install, set-up, etc. in order to access the CVS repository AND get Celestia to compile successfully? This alone may be keeping a lot of folks from helping out, as it is a long, time-consuming process, based on one of the threads you linked to.


This is precisely what is needed. I've seen requests for it in the past, but they have gone pretty much unfulfilled.

Rassilon
Posts: 1887
Joined: 29.01.2002
With us: 22 years 8 months
Location: Altair

Post #9by Rassilon » 24.10.2003, 19:17

I personally think chris spends more time compiling new lines of code instead of writing rem statements...not to mention they increase code size on compile...I suppose he could write a guideline for what each part of the program does but this would be like writing a programmers tutorial manual...might take some time...

Ive personally been contimplating picking up the old programming books of mine and brushing up on my coding but much like Paolo I am more used to Borlands C 3.1 than VC...

And MFC is a fricken nightmare...

But the alternitive is my copy of Borlands VC 6.0 which I havent tried yet...Mostly because I prefer graphics over coding...

I for one would like to see more and more contributions from others...Namely landscapes on planets using a displacement map of sorts...The list goes on...
I'm trying to teach the cavemen how to play scrabble, its uphill work. The only word they know is Uhh and they dont know how to spell it!

Topic author
don
Posts: 1709
Joined: 12.07.2003
With us: 21 years 2 months
Location: Colorado, USA (7000 ft)

Post #10by don » 24.10.2003, 19:54

Falck wrote:
don wrote:... a step-by-step list of what a Windows user must acquire, install, set-up, etc. in order to access the CVS repository AND get Celestia to compile successfully?
This is precisely what is needed. I've seen requests for it in the past, but they have gone pretty much unfulfilled.

This is also what "put me off" when I first wanted to connect to the CVS in order to have the latest source code on my local system for browsing while writing the Scripting Guide. Within 10 minutes of looking into the programs necessary just to load CVS locally, I had 10 or 12 IE windows open to different program descriptions, requirements, instructions, reviews, home-sites, etc., etc., and had no idea which one would be "best" for use with the Celestia project.

So I just "gave up", because I didn't want to spend days or weeks just trying to figure out how to get CVS loaded locally -- and just used the remote browse features. Then, Christophe created his GREAT CVS cross-reference site <BIG SMILE>! And I've been a "happy camper", until now, when I really *do* need to get this stuff figured out and get the live Celestia source code loaded on my system.

Paolo, since you seem to be the most recent person to actually accomplish this on a Windows system (from scratch), would you mind terribly spending some time documenting what you did to get everything going? I know this might be asking a lot, but it sure would help folks like me, Falck, and others who really *would* like to help, but don't have days or weeks of time to try and figure out how to get the CVS Celestia code onto their system and make it compile correctly.

This would probably be an even more difficult task for Chris or any other existing Windows developer to do, because over time, one adds files, toolkits, etc. that one simply forgets about but are still referrenced in the build / compile code. BUT, for someone starting from scratch (like Paolo), they run into errors for each missing piece as they attempt to compile the program, which makes it easier to document exactly what files, libraries, APIs, toolkits, etc. are *currently* required.

Can you find the time to do this Paolo? Pretty please. :?: :D

-Don G.

Topic author
don
Posts: 1709
Joined: 12.07.2003
With us: 21 years 2 months
Location: Colorado, USA (7000 ft)

Post #11by don » 24.10.2003, 20:26

Howdy Rassilon,

Thank you for joining in on this thread.


Rassilon wrote:I personally think chris spends more time compiling new lines of code instead of writing rem statements...not to mention they increase code size on compile.
RE: Chris ... I would hope so! 8O

RE: Comments adding to code size ... unless compilers have changed since the mid 1990's, comments do not become part of the object code (exe file), so they do not increase the code size. They *do* however increase programming time. :(


Rassilon wrote:I suppose he could write a guideline for what each part of the program does but this would be like writing a programmers tutorial manual...might take some time...
Actually this would be an "Introduction to the Celestia Project" tutorial, and I'm sure would be a very welcome addition to the project files. :)

However, as you say, it would take someone (not necessarily Chris, but he does know the code intimately) a decent amount of time to complete.

Currently there is only one (slightly outdated) document that briefly describes a few of the Celestia source code files, DevGuide.txt, dated February 2002 ...
http://cvs.sourceforge.net/viewcvs.py/celestia/celestia/devguide.txt

If someone could update this document to include all current source files, and maybe expand the descriptions a bit, I'm sure all prospective Celestia programmers would appreciate it very much.

There is also a brief Celestia "Coding Standards" web page (HTML) file, dated January 2002, at ...
http://cvs.sourceforge.net/viewcvs.py/celestia/celestia/coding-standards.html

Rassilon wrote:... but much like Paolo I am more used to Borlands C 3.1 than VC. ... But the alternitive is my copy of Borlands VC 6.0 ...
IF someone can actually get Celestia to compile in one or more of Borlands C++ products, this would probably help Celestia even more, since they will obviously need to create a new makefile or command-line .bat file to compile Celestia. Then, these could be added to the project files and more folks with Borland tools could help out too.

But, once again, this could be a difficult task for someone to undertake. Anyone up to the challenge? :wink: Or, maybe someone has already done this but hasn't shared their make files yet?


Rassilon wrote:And MFC is a fricken nightmare.

This is, unfortunately, one of the things I *do* remember about my previous attempts to learn OOP/C++, using MS products. :cry:

Thanks again for joining in Rassilon.

Come on folks, don't be shy. Let's keep this thread going with whatever is putting you off about helping out with Celestia coding. It is not "complaining". The more reasons we all know, the more ways we can all help to make it easier for new folks to join in the coding fun! :D

-Don G.

Paolo
Posts: 502
Joined: 23.09.2002
With us: 22 years
Location: Pordenone/Italy

Post #12by Paolo » 24.10.2003, 20:52

don wrote:By the way Paolo, how is your class list coming along?
Do you refer to my little celui project?

don wrote:Is there any documentation that you have created that you can share with other aspiring "new" Celestia programmers? For example, a step-by-step list of what a Windows user must acquire, install, set-up, etc. in order to access the CVS repository AND get Celestia to compile successfully? This alone may be keeping a lot of folks from helping out, as it is a long, time-consuming process, based on one of the threads you linked to.

I did the work a few months ago so I don't remember exactly all the steps. I'll try to redo all the path from scratch.
I will prepare a brief description within the weekend.

Oh Yesssss.
Finally I was able to align from Sourcegorge CVS this evening :D

Bye - Paolo
Remember: Time always flows, it is the most precious thing that we have.

My Celestia - Celui

Harry
Posts: 559
Joined: 05.09.2003
With us: 21 years
Location: Germany

Post #13by Harry » 24.10.2003, 21:46

don wrote: [...CVS...]
So I just "gave up", because I didn't want to spend days or weeks just trying to figure out how to get CVS loaded locally -- and just used the remote browse features. Then, Christophe created his GREAT CVS cross-reference site <BIG SMILE>! And I've been a "happy camper", until now, when I really *do* need to get this stuff figured out and get the live Celestia source code loaded on my system.


I just did a CVS-checkout from the public sourceforge-server, zipped it and put it on my site at
http://www.h-schmidt.net/celestia/celestia-2003-10-24.zip
The public server has been lagging behind the one for developers in the past, but if at all the code should not be older than a couple of days.

So if you just want to have the current source, you can go the easy way and download it as a zip :) Though I don't know what is needed additionaly to compile on Win :?

If there is demand (I will check the logs, you can ask here, or write a mail), I can update the file now and then.

Harald

Avatar
selden
Developer
Posts: 10190
Joined: 04.09.2002
With us: 22 years
Location: NY, USA

Post #14by selden » 24.10.2003, 22:35

One of the features that SourceForge seems to support is the idea of a "nightly tarball". Since SourceForge has multiple file servers, maybe use of this feature should be considered so as to avoid overloading individuals' file servers?
Selden

Harry
Posts: 559
Joined: 05.09.2003
With us: 21 years
Location: Germany

Post #15by Harry » 24.10.2003, 22:54

selden wrote:One of the features that SourceForge seems to support is the idea of a "nightly tarball". Since SourceForge has multiple file servers, maybe use of this feature should be considered so as to avoid overloading individuals' file servers?


Didn't know about this feature :idea: . But I don't expect a lot of people to download it, and currently I have enough free traffic left to not worry about it (space is becoming more of a problem :D ). This is just meant to help those who don't want to mess with CVS - which luckily is already installed on most linux-systems.

Topic author
don
Posts: 1709
Joined: 12.07.2003
With us: 21 years 2 months
Location: Colorado, USA (7000 ft)

Post #16by don » 24.10.2003, 23:26

Howdy Paolo,

Paolo wrote:
don wrote:By the way Paolo, how is your class list coming along?
Do you refer to my little celui project?
No, I meant for Celestia (as a whole) that you discussed doing a while back, as a "beginning step" to learning the Celestia code.


Paolo wrote:I did the work a few months ago so I don't remember exactly all the steps. I'll try to redo all the path from scratch. I will prepare a brief description within the weekend.
Sorry, I did not realize it was that long ago. How time FLIES when we are having fun, no? :lol:

I'm sure that many folks here (current and future) will really appreciate your effort to do this Paolo. Thank you!!! :D


Paolo wrote:Finally I was able to align from Sourcegorge CVS this evening :D

Congratulations!!!

Thank you Paolo!

-Don G.

Topic author
don
Posts: 1709
Joined: 12.07.2003
With us: 21 years 2 months
Location: Colorado, USA (7000 ft)

Post #17by don » 24.10.2003, 23:32

Howdy Harald,

Harry wrote:I just did a CVS-checkout from the public sourceforge-server, zipped it and put it on my site ...

Thank you for doing this Harald! I'm sure a lot of folks will enjoy looking through the code, see how simple some areas of it are, and maybe even get interested in helping out? :)

Personally, from this point out, I will need to connect to CVS to keep my local source updated, as I will be doing bug and problem research and fix testing. At least this is my plan. :)

-Don G.

Topic author
don
Posts: 1709
Joined: 12.07.2003
With us: 21 years 2 months
Location: Colorado, USA (7000 ft)

Post #18by don » 24.10.2003, 23:34

Howdy Selden,

selden wrote:One of the features that SourceForge seems to support is the idea of a "nightly tarball". Since SourceForge has multiple file servers, maybe use of this feature should be considered so as to avoid overloading individuals' file servers?

I remember seeing this feature too, and agree that it would be the best idea. Would Chris be the only one who could set it up (as admin), or would one of the other authorized developers be able to do this?

-Don G.

Topic author
don
Posts: 1709
Joined: 12.07.2003
With us: 21 years 2 months
Location: Colorado, USA (7000 ft)

Post #19by don » 24.10.2003, 23:37

Keep posting folks, don't be shy.

Let's keep this thread going with whatever is putting you off about helping out with Celestia coding.

It is not considered "complaining" but rather "constructive" help. The more reasons we know why not, the more ways we can all help to make it easier for new folks to join in the coding fun!

-Don G.

Cereb

want to help

Post #20by Cereb » 25.10.2003, 17:49

Hi guys, I just downloaded Celestia. I think this is a great program.
I know some C++ but I have no idea how I can help... any sugestions?


Return to “Celestia Users”