Discussions

News: Featured Article: Source Code Communication Best Practices

  1. Vincent Massol compares two approaches for effective source code communication. One approach involves writing a script that sends emails containing the diffs between committed code and code in the repository. Another involves generating RSS feeds on resources using a tool such as Cenqua's FishEye. Detailed screenshots of the two approaches are provided.

    Read Best Practice: Source Code Communication

    Threaded Messages (20)

  2. This is pretty basic stuff.

    First option is something every SCM guru will know about and the second is not a option for advanced SCM system users.

    Why Vincent is wasting his time on this kind of article!!!!!!!!!!!
  3. What is wrong with the second option? I do like the idea of having an RSS feed, (you can set one up in Eclipse, but I won't use that one since Eclipse can be set to regularly monitor your CVS repository and flag any changes and you can quickly look at the change log of the file if you need to).

    I would use option it for ridiculously large projects with tonnes of files since reading an RSS will not kill my IDE with constant scanning of a really large repository.
  4. This is more of a press release for FishEye than an article. It would be more honest to label it as such.
    That said, I have been investigating FishEye and it seems like a truly useful and innovative product.. I just wish they'd hurry up with the Subversion support.
  5. Not as good, but cheap[ Go to top ]

    I think just having maven run through some source code and change log analysis would be good enough for the most part. Though its going to be a slow and heavy on the system. At least its free.
  6. This is more of a press release for FishEye than an article. It would be more honest to label it as such.
    This is simply a blog post on my blog... It's not an article and it's not a press release. I happen to like FishEye and it happens that it's the nicest tool I've seen for generating RSS feeds of CVS changes. I don't have any stock option in Cenqua (editor of FishEye) :-)
  7. A cool idea would probably be putting in RSS output in maven:changelog.
  8. A cool idea would probably be putting in RSS output in maven:changelog.
    Yep. I have already added RSS feeds to the Maven Checkstyle plugin and the Maven Changes plugin. Next on my list are the Maven Dashboard plugin, the Maven Clover plugin and why not the Maven Changelog plugin... :-)
  9. Look at Trac[ Go to top ]

    If you need something like FishEye for Subversion, you should look at Trac (http://trac.edgewall.com). Really it is more of a web based project management tool, like a combination of Confluence, Jira and FishEye. And it's GPL. Quite cool!
  10. Look at Trac[ Go to top ]

    Trac is based on Subversion (http://subversion.tigris.org/), which is nice version control system, but not so broad used as CVS. And CVSTrac (http://www.cvstrac.org/) for CVS repository is a similar but far simpler system. Is there is something else all-in-one?
  11. Why Vincent is wasting his time on this kind of article!!!!!!!!!!!
    Because I can! :-)

    More seriously because I'm preparing some idea for a Personal Project Information Portal (PPIP) project. The main idea is to gather metrics from different sources (clover, fisheye, maven plugins, etc) and present them on a nice web portal with portlets and of course to make the RSS feeds available. kind of a project quality dashboard.

    I know it's all easy stuff for you :-) but you wouldn't imagine how many people are still using email to push information. I strongly believe emails are for *actions* that you have to perform. Everything informational should be available through a different channel (like RSS feeds). Otherwise, what happens is that people set up email filter to dump the emails by default. Using user-chosen RSS feeds sounds like a better idea to me.
  12. Why Vincent is wasting his time on this kind of article!!!!!!!!!!!
    Because I can! :-)More seriously because I'm preparing some idea for a Personal Project Information Portal (PPIP) project.
    Are you doing this in coordination with Cenqua or alone?
  13. Why Vincent is wasting his time on this kind of article!!!!!!!!!!!
    Because I can! :-)More seriously because I'm preparing some idea for a Personal Project Information Portal (PPIP) project.
    Are you doing this in coordination with Cenqua or alone?
    Alone for the moment. It's just an idea ATM. I'm starting too many OSS projects right now so I don't know how much free time will remain for this one... ;-)
  14. Why Vincent is wasting his time on this kind of article!!!!!!!!!!!
    Because I can! :-)More seriously because I'm preparing some idea for a Personal Project Information Portal (PPIP) project. The main idea is to gather metrics from different sources (clover, fisheye, maven plugins, etc) and present them on a nice web portal with portlets and of course to make the RSS feeds available. kind of a project quality dashboard.I know it's all easy stuff for you :-) but you wouldn't imagine how many people are still using email to push information. I strongly believe emails are for *actions* that you have to perform. Everything informational should be available through a different channel (like RSS feeds). Otherwise, what happens is that people set up email filter to dump the emails by default. Using user-chosen RSS feeds sounds like a better idea to me.
    The only problem I had is that the best option described in the article(Fisheye) does not support any best of the breed Version controllers(like clearcase). That is why I started my ranting.
  15. Why Vincent is wasting his time on this kind of article!!!!!!!!!!!
    Because I can! :-)More seriously because I'm preparing some idea for a Personal Project Information Portal (PPIP) project. The main idea is to gather metrics from different sources (clover, fisheye, maven plugins, etc) and present them on a nice web portal with portlets and of course to make the RSS feeds available. kind of a project quality dashboard.
    Vincent,

    Sounds like a great tool.

    Slap it on a big flat-screen monitor, mount it on a wall, and it would make an excellent "war room environment" awareness display. Even better, endow each portlet with some high-level, ambient, representation of the project, e.g. maven goes red if build's broken, clover colour varies according to coverage level.

    (Yes I'm serious)
  16. Even better, endow each portlet with some high-level, ambient, representation of the project, e.g. maven goes red if build's broken, clover colour varies according to coverage level.(Yes I'm serious)
    Yep, that's something I have wanted to do for some time now (http://blogs.codehaus.org/people/vmassol/archives/think_tank.html#000597_enlightening_build) but I haven't found the perfect device yet. All the ones I've seen use some radio frequency to get their data. I'd like a simple Wifi or RJ45 interface so that the data can be sent from a simple PC. I know the Ambient Orb has a serial interface but I'd like something ready made.
  17. No silver bullet[ Go to top ]

    Otherwise, what happens is that people set up email filter to dump the emails by default
    Or just put filter to redirect email in meaningful directories and/or have special actions.
    Using user-chosen RSS feeds sounds like a better idea to me.
    The user needs to subscribe as well. And he may not do so on his own.

    I love Fisheye but this is no silver bullet, the user is still the problem, so if your developper is dumping emails he will probably not subscribe to rss feeds or will also dump rss feeds.
  18. Why is the user a problem[ Go to top ]

    If a user wants to dump an email isn't he/she allowed to? Or not subscribe to an RSS feed.

    I have a bit of an issue that the "article" did not make an argument that there is a need for this. If I am in a large project with 5 subteams, I won't spend much time looking through daily changes of others. How could I get anything done if I did?

    If I am doing some GUI work at the moment, database schema changes don't affect me and if I can't trust my colleagues to do the right thing then I will have problems down the road.

    Finally, if I don't get around to working on DB related stuff for a few months, todays changes my be buried in the anals of SCM archives by then. In that case I probably did not make the best use of my time

    This may have turned into a bit of a rant. Communication is obviously a critical aspect of successful development, but I question the "best practiceness" of having each developer examine every set of source control changes on a daily basis. It could kill productivity. Maybe I missed the point somehow.
  19. Absolutely[ Go to top ]

    I second your point and it was somewhat buried in mine.

    It is naive to believe that there is need to go through each other changelog when the scope reach different modules. This is overkilling. "But with RSS you can micro manage the information". Yeah right, do we really care ?

    As you said, if you cannot trust your colleagues working on componentA while you are working on componentB, well you're obviouslly in a desperate situation.

    The FishEye changelog is ok for people working in the same module as it is easier to look at the any CVSSpam mail or ViewCVS.
  20. Absolutely[ Go to top ]

    It is naive to believe that there is need to go through each other changelog when the scope reach different modules. This is overkilling.
    I agree. But who said that?
    "But with RSS you can micro manage the information". Yeah right, do we really care ?
    Again I agree. Who said that?
    As you said, if you cannot trust your colleagues working on componentA while you are working on componentB, well you're obviouslly in a desperate situation.
    Sure. Who said that? :-)

    Basically I believe I have not been successful at explaining the point clearly enough. The idea is that there qre some portions of code that you'd like to be aware of when they change. It has nothing to do with trusting anyone. Say for example that there is a change to the schema. If I don't know about it and I make a CVS checkout, it may break all my code and imagine I'm in the middle of something. It will be a pain to go back. Knowing what has changed in the schema will tell them whether updating now is a wise choice and it'll also tell me what the impact the change will have on my code. If it happens that it's a change that I know is not right for a reason only known by me then I can raise it now instead of waiting 2 days, 1 week or more. Same for things like the build process. Same for important documents that are updated, etc.

    Of course my opinion may be biased by the fact that I have usually worked on "big" projects (minimum of 30 developers - The current one has roughly 100 developers), and the bigger the project the more there is a need for good and efficient communication. This helps but it doesn't replace verbal communications (by no means!). My second bias is that I'm using to working with distributed team who are physically in different locations.

    Anyway YMMV. There is no hard and fast truth.

    -Vincent
  21. Currently, we generate a "24 Hour Changelog report" at 4am every day.

    It is easy to accomplish this using Ant's <cvschangelog> task and the <mail> task

      http://ant.apache.org/manual/CoreTasks/changelog.html

      http://ant.apache.org/manual/CoreTasks/mail.html

    It works pretty well for us (we have a small team).

    In the future, we might use CVSSpam or something similar.

       http://freshmeat.net/projects/cvsspam/