Slashdot Mirror


Ask Slashdot: Selecting a Version Control System For an Inexperienced Team

An anonymous reader writes: I have been programming in Python for quite a while, but so far I have not used a version control system. For a new project, a lot more people (10-15) are expected to contribute to the code base, many of them have never written a single line of Python but C, LabVIEW or Java instead. This is a company decision that can be seen as a Python vs. LabVIEW comparison — if successful the company is willing to migrate all code to Python. The code will be mostly geared towards data acquisition and data analysis leading to reports. At the moment I have the feeling, that managing that data (=measurements + reports) might be done within the version control system since this would generate an audit trail on the fly. So far I have been trying to select a version control system, based on google I guess it should be git or mercurial. I get the feeling, that they are quite similar for basic things. I expect, that the differences will show up when more sophisticated topics/problems are addressed — so to pick one I would have to learn both — what are your suggestions? Read below for more specifics. These are the requirements I can see so far:
- __Server_running_locally__ (as opposed to in the cloud) on windows (IT departments choice, non-negotiable)
- Good/easy to use Windows clients (IT departments choice / company policy, again non-negotiable)
- Use windows credentials (maybe, single sign on)
- Open source server/client (personal preference)
- Well established Project that will not disappear/ get unmaintained within a foreseeable future
- Do basic test on the code (Syntax errors, pytest/nose/or alike with coverage (of tests), check coding style)
- email notifications
- good documentation
- reasonable price for 5 — 10 users : free — 500€

Things that would be great ...
- web interface (like github) would be nice
- integration of bug tracking / bug reports
- possibility to do and print out a code review
- some kind of jupyter / ipython integration

Things I am not sure I will need but seem to be a good idea at the time of writing...
- Include other files/ file types for measurement data, documentation and user manuals (docx, xml, xlsx, gz, ...)
- When thinking about measurement data /reports it would be great to have digital signatures (--> FDA compliant). I know this is extremely hard, if this exists I would love it, if not I am fine. Somehow this feels like mixed document/version control, but I would love to have data + code + text = report at the same place to easily find implications of a bug — which data has to be re-evaluated and so on.

34 of 325 comments (clear)

  1. CVS or Subversion by benjfowler · · Score: 5, Insightful

    As far as I can tell, you're describing the classic CVS or Subversion small team setup. You can run a server on the network (via Apache, or via SSH), run ViewCVS, set up checkin hooks, and give your clients a nice client like TortoiseCVS/TortoiseSVN built into Windows Explorer.

    If you want integration with bug tracking tools, then have a look at Bugzilla and Bonsai.

    All your users need to know about, is check in, and checkout, so the cognitive overhead is low.

    It would take one engineer half a day to set all this stuff up on a spare machine, and you could try it out fairly quickly.

    And best of all, this setup is gratis as well as Free. This has worked really nicely for me in both an academic and a commercial environment.

    1. Re:CVS or Subversion by rainmaestro · · Score: 4, Insightful

      Agreed. For small / inexperienced teams, we've always recommended VisualSVN. GUI to manage most of the project admin tasks, easy integration with AD for user/group auth, and a fairly simple workflow.

      Git is has some really nice features, but I wouldn't push it onto a team with no VCS experience.

    2. Re:CVS or Subversion by gonz · · Score: 5, Insightful

      For a small-to-medium team that has easy access to a centralized server, choosing Subversion instead of Git could save you a TON of time. In my experience, Git has a constant overhead of messed up merges, "brown bag" discussions to educate new devs about various gotchas, and ongoing debates about the right usage strategy (merging versus rebasing, branch management, how to keep histories from growing too large, etc).

      By contrast, I've also worked at several different companies that used Subversion, and basically you just show new devs how to sync and commit, and they figure out the rest themselves. The reason is that having a single always-up-to-date master is an order of magnitude simpler than Git's model of working-copy/branch/master on your local PC and then also branch/master on a remote PC and push/pull/fetch/merge between them.

      With Subversion you still have to manage branches sometimes, but there is typically a maintainer person who handles that. Whereas the model of Git is that every dev is doing merge algebra from day 1.

    3. Re:CVS or Subversion by TechyImmigrant · · Score: 2

      Branching works fine in SVN.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    4. Re:CVS or Subversion by sugar+and+acid · · Score: 3, Informative

      It is perfectly possible to branch in SVN and manage it. Git is better for branching and developing in complex and large team environments. But this is not the case here. They probably have max 3 guys maintaining and max 3 guys on a development branch. SVN is more than capable of handling that.

    5. Re:CVS or Subversion by houstonbofh · · Score: 2

      >

      why would you ever use cvs or svn instead?

      Lighter weight, more mature and stable codebase, and a smaller footprint on the clients? Just to name a few things... It is a fool who has only one tool in their toolbox.

    6. Re:CVS or Subversion by Antique+Geekmeister · · Score: 3, Interesting

      > classic CVS or Subversion small team setup

      Yes, but I'd recommend _really strongly_ against either today. Both have considerable difficulty establishing disaster recovery or failover, and the tendency to set either of them up with the passwords stored locally in the user's home directory present profound security problems. And neither of them allow developers to make their own branches, and record their changes locally on their own systems, and submit them only when needed. The result can be a profound amount of clutter in the main repository, especially if anyone accidentally commits bulky binaries to a branch. CVS at least allows deletion of accidentally committed bulky objects: Subversion does not, not without extraordinary effort.

      I'm afraid that building your own bug tracking systems from scratch, even with tools like Bugzilla or Bonsai or RT or any of the major toolkits, is a blackhole of support work. Git has proven _very_ good for developers, because it allows them to branch, and to merge, far more cleanly, with very good mechanisms to make a "pull request" and get code review, and much more reliable and verifiable GPG signed tags. For small private repositories, github.com has proven very robust and resilient, with very good tools for Wikis and bug reports and integration with build systems.

      The only compelling reason I see to use Subversion today is the very, very good "TortoiseSVN" inteface for Windows users. "TortoiseGit" simply does not work well enough, and the X based GUI's aren't as good.

      > It would take one engineer half a day to set all this stuff up on a spare machine, and you could try it out fairly quickly.

      And it can take a full day every week to support just this one service, even in a small shop, with backup, high availability, bug fixes, security updates, end user support, and the hand management of user access and privilege management that is common to these small setups.

      > And best of all, this setup is gratis as well as Free. This has worked really nicely for me in both an academic and a commercial environment.

      I've unfortunately had to clean up from a number of "free as in beer" source control systems mismanaged over the long term.

    7. Re:CVS or Subversion by Anonymous Coward · · Score: 2, Funny

      Jeez, you really drank the git Koolaid didn't ya?

    8. Re:CVS or Subversion by angel'o'sphere · · Score: 4, Insightful

      SVN might have drawbacks, one is its name. However this: SVN doesn't work. is simply wrong.

      Linus had special requirements, hence he wrote git. If he claimed SVN does not work, he is not smart as he looks like.

      That does not mean that SVN etc. does not work. CVS is another thing. Having non atomic commits (how retarded is that anyway????) is a huge problem.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    9. Re:CVS or Subversion by Maxmin · · Score: 3, Interesting

      The ONLY reason git gained popularity is Linus Torvalds. If an unknown engineer released a VCS with similarly confusing, incoherent command-line semantics? It would NEVER have taken off. git survived because Linus Torvalds. That's it.

      But git is the lingua franca. It has a learning curve, but because of that there is a virtually unlimited selection of learning materials out there. There is NO EXCUSE for not having some expertise in git, as engineers. Why rebase? How to cherry-pick? Only stubborn engineers don't know these things, and it's odd because they're smart enough to grasp the concepts, do the katas and gain proficiency.

      I work with a bunch of engineers that refuse to branch in git! They're terrified of it! Because, once they branched, worked out of that branch for three months, then had a disastrous merge to master (of course). So now master is the development branch! master is the release branch! THAT is terrifying. Although they do tag releases, but still.

      --
      O lord, bless this thy holy hand grenade, that with it thou mayest blow thine enemies to tiny bits, in thy mercy.
    10. Re:CVS or Subversion by Anonymous Coward · · Score: 2, Interesting

      I am watching this talk and so far I have learnt (or perhaps reaffirmed) that Linus can display narcissistic and a control freak tendancies and has no trouble abusing people who disagree with him. If he wasn't so talented or hadn't hit upon Linux at the right time I would not be surprised if he was homeless instead, because no one would work with him.

      To call any SCM broken because is in fact ugly and stupid. Note that I did Linus the courtesy of not calling him ugly and stupid as he called everyone he disagreed with ugly and stupid - I just called his statement ugly and stupid. People can and do work with centralized SCM ssytems every day and a lot of excellent systems have been written using them.

      To call an SCM broken because it doesn't protect against disk or memory corruption is also unreasonable. You can offload those duties to the operating system and focus on designing a good system.

      It is true that distributed source control requires a distributed system but for a lot of organizations having code in one central repository is actually seen as an advantage. I have more of an issue with the lack of fine grained security for individual projects, branches or commits. But it's nothing that can't be worked around.

      The fact that Linus built git in such a fashion that when he'd finished after his 2 weeks it was unusable "by mere mortals" but he considered it finished speaks volumes.

      This talk is proof again, as if it was needed, that one can be technically brilliant and socially inept.

    11. Re:CVS or Subversion by jrumney · · Score: 3, Informative

      I never thought I would see a recommendation for CVS in 2015. The OP is on the right track looking at git and mercurial to start with. The only probem with his requirements are the Windows server. Maybe a virtual machine running on the Windows server would be acceptable to IT? While it is possible to run a git or mercurial server on Windows, there are a lot of good tools that would give the "things that would be great" that are not supported on Windows. On the client side, TortoiseGit and TortoiseHg are available, giving the same Explorer integration as TortoiseSVN/TortoiseCVS.

    12. Re:CVS or Subversion by JoeMerchant · · Score: 2

      You see, I'd say git is better for compliance... as a solo developer, I have used svn and git extensively, and there's basically no difference between them - EXCEPT - git works when the server is down, or you are mobile with no connection.

      And if you happen to be working collaboratively, you are always branched, so you aren't really forced to merge something back to trunk or get all sorts of crap permissions worked out to continue to use version control - if the branch won't merge easily - F it, it's a branch, it can stay that way permanently.

    13. Re:CVS or Subversion by swillden · · Score: 4, Interesting

      So now master is the development branch! master is the release branch! THAT is terrifying. Although they do tag releases, but still.

      Developing on and releasing from master has its risks, but given appropriate QA, including code reviews, extensive automated unit, functional and integration tests, and extensive release tests, it can work very well. That's what Google does. 25,000 engineers, one source repository, 45,000 commits per day, developing on and releasing from HEAD.

      Well, almost. Developers create local branches for their work and don't commit into master until code review is complete -- including of automated tests. The actual commit into master doesn't go in unless the commit and everything else that could possibly depend on it builds and passes all of the tests (the build/test/submit cycle is automated; engineers kick it off and then get informed of the results). Releases are branched off to freeze them while release testing is done, and sometimes a few commits are cherry-picked into a release to fix issues, but mostly the release either passes the tests and goes out, or fails the tests and is abandoned. Most projects operate on a weekly release cycle, so the impact of abandoning a release is small. As long as it doesn't happen too often.

      Note that I'm speaking of the web properties; search, Gmail, etc. Obviously other groups have different approaches. For example, I currently work on Android, which has a roughly annual release cycle. That drives a very different strategy. One with lots of branching, actually.

      Also note that I'm not claiming that this is a good strategy for every team or company. I'm just pointing out that it can work, if you manage it well. Of course, the same is true of virtually every development process, though different processes are better suited to different contexts.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    14. Re:CVS or Subversion by Zontar+The+Mindless · · Score: 2

      Have you considered getting over yourself?

      --
      Il n'y a pas de Planet B.
  2. Git by beck24 · · Score: 2
    Seems to be the defacto standard almost everything these days. It's got everything you mentioned.

    Except

    Do basic test on the code (Syntax errors, pytest/nose/or alike with coverage (of tests), check coding style)

    That's not really a function of version control

  3. Re:git by benjfowler · · Score: 2

    I love Git myself, but for newbies who can only cope with a shallow learning curve, I'd make do with Subversion to begin with. At a recent employer, we adopted Subversion as a "gateway drug" to Git. Sometimes, you don't need anything more powerful than that.

  4. Re:So many options by benjfowler · · Score: 4, Informative

    Oh God, stay the fuck away from SourceSafe.

    SourceSafe is an absolutely terrible choice, since it is actively user-hostile, and has the alarming habit of eating your source code at the worst possible time. Rational Clearcase is almost as bad.

  5. Git, obviously, but there's a way to make it easie by Tumbleweed · · Score: 2

    Use a GUI like Atlassian's "SourceTree". It's what we use at work, and it works pretty well. You'll still want at least one Git expert on the team for when someone does something stupid, but you'll need that for whatever platform you choose.

  6. Mercurial by roman_mir · · Score: 2, Insightful

    Super easy to set up, take a day with your team to learn the main functionality and you are good to go.

    As your team gets more experienced, you will be happy you made that choice.

  7. Stay away from git for "inexperienced team" by iamacat · · Score: 2, Informative

    Source control with git is like using (char *) &myStruct in C. Very flexible, but impossible to explain to someone who wants to do simple tasks, and most commands result in corrupting your work. Including correct commands accidentally used twice. Worked with it for two years, still regularly find things that baffle me.

    Better to start with a comprehensible tool like svn and a good IDE with a source control plugin such as IntelliJ. You might migrate several years down the road, but by that time either team will become experienced enough to use git, or hopefully something better comes along.

  8. What will you ACTUALLY be doing? by GrantRobertson · · Score: 5, Insightful

    First we need to take a step back and figure out what you are actually doing. You have pulled up with a "software version control" bandwagon and everyone just jumped on without looking to see if it would take you where you wanted to go.

    Are you wanting to keep track of the versions of your code or the reports generated by that code or the data that the code used to generate the reports? Each type of information is best suited for a different kind of versioning system. Are the reports generated only by the code or are they written by humans? Trying to use a code versioning system to keep track of modifications to reports or data is a loosing game. Don't make the mistake of thinking every problem is a nail just because you have a hammer.

  9. Re:UH oh by __aaclcg7560 · · Score: 3, Insightful

    Or a hardware company being run by a marketing hack: "Python is new and popular! Let's get all our programmers and code base on Python yesterday!"

    As the summary makes no justification for switching away from C and Java, I'm just assuming the worse possible reason for switching programming languages.

  10. OUCH!!! by LostMyBeaver · · Score: 3, Informative

    I'll start by answering your question. Use GIT. It's the most widely supported system at this time and it works really well.

    Next let me be a typical slashdot asshole that makes abrasive comments that may be well intended by will come off as being a dick. I'll explain that I already see endless problems coming from this.

    If you're working with a team of 10-15 developers who all lack experience with version control, you have a major problem with out-of-date programmers and you're throwing them into a hell called Python. If you generally accomplish projects using C and LabView, the developers you have more than likely lack a modern development skill set and coding in a language like Python will produce some of the worst code ever written. If C is like shooting yourself in the leg and C++ is like blowing the whole damned leg off, Python is like dropping a nuke. You will have an endless supply of options for writing terribly bad code in the worst ways possible. The only redeeming feature will be it will have nice uniform spacing.

    I would highly recommend doing what always works best which is to hire a Python developer with good GIT skills that can lay the majority of the foundation of the project and create a uniform set of standards of coding for the project and then bring the other developers on 3 at a time and perform constant code review. Focus heavily on test driven development and use a system like SCRUM for lifecycle management. If you want to teach old dogs new tricks, don't just throw them in the fire and tell them to figure it out. The programming paradigms are so drastically different between your old method and new that without some sort of leader with experience, it will turn out to be a disaster and jungle of crap code. I personal avoid Python projects not because the language is bad, but instead because they tend to be like this.

    You should of course know by now that if you are traditionally a LabView shop, you're going to sacrifice a massive number of really important features to save a buck. Python has great support too multi-threading but it's not an awesome environment for event driven programming like LabView is. You of course can accomplish all the same things, but even with the thousands of toolkits/libraries out there, you'll have to write the entire underlying architecture yourselves and you'll lose almost all visualization you've come to depend on.

    1. Re:OUCH!!! by Njovich · · Score: 3, Insightful

      The one thing I agree with is that Git is the obvious choice as it is the current standard. For the rest I guess you are fairly inexperienced. If you really believe it's easier to shoot (or nuke) yourself with Python than with C you are extremely wrong. Obviously you can write bad code in any language, but Python is no worse than most others.

      In a couple of hours most Git basics can be taught to any reasonable programmer. It can be worthwhile to make sure they set aside some time to read up on Git usage. Especially with a GUI it's not exactly rocket science (and any programmer worth their salt should have no problems with the CLI, some annoyances notwithstanding). Making your hiring decision for a Python programmer based on Git skill is a bit weird, as there are much more important factors to choose a programmer on. I have seen good and bad Git usage across all ages and skill levels, it mostly just depends on what exactly they worked on in recent years.

      As far as massively changed programming paradigms, unless you just time traveled from the 70's, that's BS.

      As for Scrum and Test Driven Development, you would need to know more about this project before you can make a decision like that. I don't see anything in this description that would give you enough information to advise on that.

  11. Re:git by ATMAvatar · · Score: 3, Insightful

    I don't know that I share the same experience. There are plenty of UI tools that help make git easier to work with, such that I wouldn't have much hesitation in making it the first VCS for a team.

    I certainly don't expect them to be doing rebasing, bisecting, or force pushes anytime soon, nor would I suggest they start by setting each other as remotes to take advantage of the distributed aspect. However stage, commit, merge, pull, and push operations on a central origin are all pretty simple, and not much different than they would be doing with any other VCS.

    --
    "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety."
  12. Ok, others seem to have missed this by Anonymous Coward · · Score: 2, Informative

    Knowing what industry you're working in helps to understand what you're trying to do and what you actually need. Others have seemingly missed this, but you did mention FDA compliance at the end of your extended list of requirements. So, I'm guessing you're a life sciences, pharma or drug discovery company working with microarrays and other data acquisition hardware where the data WAS passed to LabView and then processed there or in one of the Java, C, or other apps you mentioned that were developed in-house. The processed data is then documented with reports.

    You actually have three problems and not one. You have a code versioning issue that requires version control for better debugging and maintenance going forward, a data cataloging problem and a document management problem. I would imagine, that some groups either have or will have visualization and graphics data to manage as well, but we'll leave that out for now.

    You mention that the developers have no background using an off-the-shelf version control system. This, in the modern development era, is ... scary! As was mentioned above in several places, a simple check-in, check-out system would probably be a good place to start with the plan to migrate to something more sophisticated in a three to four year time window. You know these developers are going to want more features down the road, but aren't ready for the full enchilada on day one as that would be a lot messier to deal with for a longer period of time than having a migration plan and starting them off slowly. I would recommend a CVS or SVN variant for the initial launch and then have a migration plan to something like Git. This gives you time to get the initial setup running and the developers have a flatter on-ramp to usage while you (and IT) come up to speed on Git in the background before a planned deployment a couple years down the road. In the end, a plan like this will save you time and pain in the long run, oh, and management will save $$$ in the process.

    Data cataloging may not be that great an issue, but it does require some thought. Not sure how data is being cataloged now, but there are a few commercial products that will help with this process. Some are desktop only and then there are those tied to commercial database systems like Oracle. You'd really have to do some research based on your actual needs to find one that works best for the researchers. Can't touch this topic sight unseen.

    Then, there's the document management problem. Being a Windows shop there are Microsoft options for this, as well as commercial and open source tools. Again, not being familiar with your internal workflow and budgets I can't be more specific than that.

    Trying to do everything with a version control system is just foolish. You're only going to create more headaches for yourself, the IT team and the researchers/developers than will be mitigated by a single system trying to manage different verticals within a workflow. DON'T DO IT!!! Use the Keep It Simple, Stupid rule along with the right-tool for the right job approach. In the end, you, your IT team and your users will be happier and more productive, that will make management very happy and cost a lot less in the long run.

    Cheers and good luck.

  13. Re:git by Electricity+Likes+Me · · Score: 3, Insightful

    No you're not? With Git its not at all distributed unless you really really work at it. The simplest and most naive git model is "get latest head, edit, commit and push". This is what everyone is going to be doing with any other tool.

    The difference is, when they get more advanced, you'll be in the good company of the *massive* git ecosystem and featureset which will make your life a lot easier. If you're dealing with people who don't know version control, then it doesn't matter what you pick - they are not going to understand it and you will be doing a lot of support.

  14. Re:git by Pseudonymous+Powers · · Score: 4, Informative

    I was with a small team of very experienced developers, and even for us going to git had a bunch of surprises. For me it's not so much the UI tools, it's understanding what's going on, and why git does what it does.

    That's what I mean when I say there's no simple formula of "do these 3 commands to do this, those 2 commands to do that". You have to understand WHY the commands are doing what they are doing.

    That's certainly a common view of Git, but after using it for the last few years, I think that a lot of the problems that beginners have with it are happening because of this assumption. That is, when a developer asks how to merge their code into the shared Git repo for the first time, the wise old Git gurus point them at a site that explains how Git works at the molecular level, called The Git Book. This is almost never helpful, because your average Joe C. Programmer doesn't have time in his schedule to read an entire book, and even if he reads it over the weekend instead of, you know, having a life, he just ends up with his head full of crazy circles-and-arrows diagrams, which, divorced from any concrete, hands-on practice, only serves to confuse the issue more.

    What the inexperienced Gitsperson actually needs at that point is a short and to-the-point workflow that he can use to get his goddamn code in the goddamn repo, like (commands for illustration purposes only, I use a Fischer Price GUI): "git clone MyRepo; git switch master; git pull; git branch MyFeature; git switch MyFeature; [implement the code changes]; git commit; git push; git switch master; git pull; git merge MyFeature; [fix conflicts, resolve, commit again if necessary]; git push". And for the love of God, Newbie, please don't try to use "rebase", you'll just cripple our entire product at 5:30 pm on a Friday.

    There's documentation of that kind out there, admittedly, but it's really hard to find among all the indistinguishable-from-autogenerated-prank-nonsense man pages and fifteen-part seminars on how the version hashing algorithm works.

  15. Mercurial is a good starting place by Xtifr · · Score: 2

    Hear me out. I know git is more popular—I prefer it myself—but mercurial has a much simpler conceptual model, is easier to learn, and offers nearly all of the benefits of git.

    With git you really need to learn about the difference between "add" and "commit" and how the staging area works. That's a very useful feature, but it also complicates the teaching, and for basic day-to-day stuff, doesn't offer huge benefits. And git just has _so_ many commands. They're powerful, but intimidating to a newbie.

    Mercurial, on the other hand, has most of the power of git, but it's a lot more straightforward for the most part. The lack of a fast-forward capability means you end up with a lot more merge commits in your history, but that's not a huge deal. At least not at first. And its fairly easy to migrate from mercurial to git later, once your team is more comfortable with the way the system works. So it's not like you're making a lifetime commitment.

    Mercurial is less powerful than git overall, but it's a great introduction to the whole model of DVCS. And for day-to-day stuff, mercurial is definitely more than adequate.

    Both git and mercurial are vastly superior to svn, especially for performance. Having to make network round trips for all but the most basic examinations of history is a serious disadvantage of svn. If you're just testing a script, for example, a bibisect can be many orders of magnitude faster with git or mercurial. And you can do it even if you're sitting in a hotel room and don't want to pay the outrageous wifi fees. You don't need a network at all. Using SVN in this day and age is simply inexcusable. There are absolutely no benefits—only disadvantages.

    If you just want to get up and running with a vcs that will offer great benefits with minimal floundering while people learn the ins and outs of the system, mercurial is a pretty darn good place to start. If you have a little more time to spare getting everyone up to speed, though, it might be just as well to leap straight to git. *shrug*

  16. Git manual by Anonymous Coward · · Score: 2

    B*llshit.

    Git is difficult to grasp because
    * it makes simple things complicated
    * you need to read an entire book before using it
    * and its manual reads like this: http://git-man-page-generator.lokaltog.net/

  17. EasyMercurial by Immerman · · Score: 3, Informative

    I'll second the recommendation of Mercurial. There's also EasyMercurial, a nice little dead-simple GUI front end that lets you do a handful of the most common things (checkpoints, history overview, version comparisons, reversions, branching and merges) without having to learn much about the details. Very nice for beginners to get their feet wet with version control systems, and if/when they need something more powerful they can always use the command-line tools directly, or migrate to a more feature-rich GUI. But honestly, for a bunch of people without prior experience even the heavily restricted feature set will be a huge step forward.

    There's probably similar "beginner" GUIs available for most of the major VCSes, but EasyMercurial is the only one I can vouch for. I would also lean towards recommending a distributed VCS that offers easy branching and merging for a bunch of VCS beginners - they seem to offer far less conceptual/procedural overhead to the "lone wolf" work flow, and thus are more likely to actually get used effectively.

    --
    --- Most topics have many sides worth arguing, allow me to take one opposite you.
  18. Re:UH oh by Megane · · Score: 3, Insightful

    LabView is not only proprietary, it's a visual programming language (connect a bunch of boxes with lines) that stores its stuff in binary blobs. So you can't do version control on it, or even diff it. If someone changes one of those little boxes in a big LabView project, you will likely never know who did it or when it happened, and good luck finding where it was changed. Or you might not even know that it happened at all, just things start acting screwy.

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  19. Re:UH oh by __aaclcg7560 · · Score: 3, Interesting

    I gave a trivial example where I wrote a Python that took 123 seconds to do one million dice rolls. I then use Cython to convert dice rolls into an C extension, which resulted in Python script that executed in two seconds. I didn't convert the entire Python script into an C extension. If the goal is to standardize the code base from C to Python, Cython can fix the performance issues.