I know for sure that Epidemics are being worked on.
Yeah indeed, a better way to see what people are working on may be a
good addition. I would suggest something like the below.
At the moment it is the case that people are welcome to write patches
and submit them, at which point they are reviewed and added to the
repository by someone else who has access, and for any bugfixes a new
patch is created and sent in and so on. Unfortunately for larger patches
(such as the VIP patch), the code that I was writing was seen by only
me, and it was hard for other developers to tell what progress I was
making with this patch, or whether I had given up on it and was no
longer working on that feature. It also made it very difficult for two
contributers to work on the same code (they would need to create their
own copies of the repository which each other could push to, while
frequently pulling from the main repository).
The way I would suggest that we perhaps consider doing things is that
whenever someone wants to implement a feature, they e-mail the mailing
list and they are immediately given repository access and told to read
the set of programming guidelines that developers should follow, at
which point they can start committing code to the repository, and future
bugfixes will get into the repository faster which will allow for
further testing.
It would then be easy to see which features are being worked on by
simply looking at the svn logs, and using the datestamps see how long it
has been since a commit has been made, which will indicate whether that
developer has suddenly got busy and might want to hand off the job to
another developer to continue.
I think this might help stop scenarios of the kind that I'm in, where
two months ago I had earthquakes feature about 90% complete, but
suddenly got very busy and now I'm not sure what state the repository is
in and how easy it will be to merge things together. If I was able to
push this code to the repository at the time, my guess is someone else
could have picked this up and finished it within the same day and we
would have this feature working by now.
I also suspect such a design would help with multiple developers working
on one feature. As an example, it is my understanding that William is
currently working on epidemics which will eventually lead to the
programming of health inspectors, which are essentially VIPs but with a
few different features (multiple can visit, speed of movement no longer
constant, no longer looking at a list of rooms). It may be helpful to us
to be able to work on this section of the code at the same time, pulling
each others changes immediately to test how the code works together.
This sort of system is working well with some of the research projects
that I'm currently working on and it works pretty well for us. Naturally
if there are any problems with any particular person, we can just revert
the repository and remove their commit rights which is a simple process.
We use commit scripts to make sure the contributers reach a certain
standard (eg, they _must_ include a copyright statement), which I guess
would be an option for this project also (eg checking code indentation).
Just my 2 cents worth! ;-)
John
Alternatives include switching to a distributed versioning system (e.g.
git), or using something like git-svn to manage your own changes and
collaborate, but ultimately send everything back to the svn repo.
I haven't checked it recently, but it still seems to work OK.
You can use it as a read-only copy if you dont want to futz with
git-svn. Great if you're authoring patches without commit permissions.
Kind regards,
Jørgen P. Tjernø.
(Sent using a touchscreen keyboard)
That seems like a sensible idea to me. My thoughts were that the code
would not execute unless accessed from the debug menu, so for example
for example for the VIP, the earthquakes, the epidemics and so on that
code wouldn't be executed on a timer (as it would be when the code was
stable), but such code was executed only when accessed through the debug
menu. As the code wouldn't be being executed, it shouldn't affect the
rest of the code (as long as it compiles, naturally).
That said, for some features this might be tricky so your idea of using
branches would perhaps be a better way to do this, then merging the
feature branches into the trunk could be done by some main admins once
the code is deemed to be of the right standard.
John
I would suggest the branch approach for larger patches. Small bug fixes and
small enhancements can be added directly to the trunk while larger features,
refactoring or optimizations are first made in a branch. Then other
developers can try it out before the original creator can merge them
him-/herself.
The important thing is that the merges are made at some point... There is
for example a branch Corsix started on regarding the Action system. It never
got to the point of including it into the trunk, and now I wonder how much
time it would take to get it up to speed again.
At the moment the greatest "feature" still missing in my opinion is that
small objects such as radiators should occupy one side of a tile only.
/Edvin