Go to Post What a great organization! - HoltDan [more]
Home
Go Back   Chief Delphi > Technical > Programming > NI LabVIEW
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 30-03-2014, 13:40
Ben Klebe Ben Klebe is offline
Registered User
FRC #5347 (The Gryphons)
Team Role: Programmer
 
Join Date: Mar 2014
Rookie Year: 2010
Location: Weston MA
Posts: 3
Ben Klebe is an unknown quantity at this point
Source/Version Control

Hi guys,

I'm the programming lead for team 5347, The Gryphons.

Our season is over, we are a rookie team and did not win. I am currently working on preparations for next year, and this includes organization of our codebase so that we can collaborate effectively and keep everything neat.

Our current source control system is kludged together through email, and it is not a system I'm eager to keep. In light of this, I've been examining other options for source control.

We currently use LabVIEW, though one of our mentors is trying to convince us to switch to Java, because of the support that will be provided by the wealth of Java programmers at competitions and supposedly on Chief Delphi as well. I'm not entirely convinced yet, because even after 2-3 months of struggling through LabVIEW stupidly not reading the quick start docs I should have, I'm beginning to recognize the beauty of graphical dataflow programming much due to my discovery of the clean-up diagram tool.

I've spent a few hours looking through a list of source control systems that integrate directly with LabVIEW. I've considered trying to get Perforce on board as a sponsor for a license or too, but was wondering if anyone has had success trying to get LabVIEW to work with GitHub or any other free source control providers.
Reply With Quote
  #2   Spotlight this post!  
Unread 31-03-2014, 03:54
joeyoravec joeyoravec is offline
Registered User
FRC #1250 (GatorBots)
Team Role: Mentor
 
Join Date: Mar 2014
Rookie Year: 2013
Location: Livonia, MI
Posts: 14
joeyoravec is an unknown quantity at this point
Re: Source/Version Control

Quote:
Originally Posted by Ben Klebe View Post
We currently use LabVIEW, though one of our mentors is trying to convince us to switch to Java, because of the support that will be provided by the wealth of Java programmers at competitions and supposedly on Chief Delphi as well.
There might be reasons to use Java. Do all the students on your team have Java experience? Does your school have a Java programming class that you are planning to piggy-back off of? Are your software mentors Java experts? Are other local teams only able to help you if you're using Java?

LabVIEW is pretty easy for students who have no prior programming experience. This allows us to focus on robot functionality and design, instead of how to work the programming language.

Quote:
Originally Posted by Ben Klebe View Post
I've spent a few hours looking through a list of source control systems that integrate directly with LabVIEW. I've considered trying to get Perforce on board as a sponsor for a license or too, but was wondering if anyone has had success trying to get LabVIEW to work with GitHub or any other free source control providers.
LabVIEW VIs are opaque binary data; almost any tool will manage them in the same way. Consider the easiest solution that meets your requirements.

How many programmers are on your team? How often are people working on the code simultaneously? How many times did you branch, merge, or compare older versions of the code during this build season?

Our team uses a shared folder on dropbox and creates a new copy at every meeting. It's simple, but it works fine for what we do.
Reply With Quote
  #3   Spotlight this post!  
Unread 31-03-2014, 07:58
Greg McKaskle Greg McKaskle is offline
Registered User
FRC #2468 (Team NI & Appreciate)
 
Join Date: Apr 2008
Rookie Year: 2008
Location: Austin, TX
Posts: 4,752
Greg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond repute
Re: Source/Version Control

There are two approaches.

You can use one of the tools that plug into LV. This allows for edits to automatically prompts for checkout, for checkins from a right-click, etc. But there are only a few supported at this level.

Or you can use a SCC tools that LV plugs into. In this scenario, you go to the tool to do the things I mentioned above, and you use the LVCompare program to compare two files.

If you google, I believe you'll find instructions for Git and other tools.

Greg McKaskle
Reply With Quote
  #4   Spotlight this post!  
Unread 31-03-2014, 11:28
wt200999's Avatar
wt200999 wt200999 is offline
Texas Instruments
AKA: Will Toth
FRC #3005 (Robochargers)
Team Role: Mentor
 
Join Date: Mar 2006
Rookie Year: 2004
Location: Dallas, Texas
Posts: 325
wt200999 has much to be proud ofwt200999 has much to be proud ofwt200999 has much to be proud ofwt200999 has much to be proud ofwt200999 has much to be proud ofwt200999 has much to be proud ofwt200999 has much to be proud ofwt200999 has much to be proud ofwt200999 has much to be proud of
Send a message via MSN to wt200999
Re: Source/Version Control

Quote:
Originally Posted by Ben Klebe View Post
I've spent a few hours looking through a list of source control systems that integrate directly with LabVIEW. I've considered trying to get Perforce on board as a sponsor for a license or too, but was wondering if anyone has had success trying to get LabVIEW to work with GitHub or any other free source control providers.
You can use Perforce for free, the only limitation is that you cannot have more than 20 users. Just remember though, that with a system like Perforce you need to have a dedicated server set up. With something like Google Code or Github you can store the repository on their servers.

Our team has been happy with Perforce, and we have it set up the second way that Greg proposed. We use the P4V GUI to manage our files with no plugins to LabVIEW itself, and we plug LVCompare and LVMerge to that tool. The compare and merge tools are a bit tedious to use however, so we make good use of the lock tool in Perforce, and we make sure students on our team don't manually set files to non-read only. One huge feature we missed this year is the P4Sandbox tool, which allows local & private branching. We were lucky that our regional had good WiFi in the pits, but I know a lot of events don't have this which makes it hard to use perforce at competition (at least without using P4Sandbox).

Whichever tool you do decide to use, make sure you spend a little time with anyone who will be contributing to the repository to train them on proper usage.
__________________
Programming in LabVIEW? Try VI Snippets!

FIRST LEGO League 2004 - 2005
FRC Team 870 Student 2006 - 2009
FRC Team 3005 Mentor 2013 -
Reply With Quote
  #5   Spotlight this post!  
Unread 01-04-2014, 23:07
tcjinaz tcjinaz is offline
Tim
FRC #3853
Team Role: Mentor
 
Join Date: May 2011
Rookie Year: 2011
Location: Arizona
Posts: 206
tcjinaz has a spectacular aura abouttcjinaz has a spectacular aura about
Re: Source/Version Control

Quote:
Originally Posted by wt200999 View Post
You can use Perforce for free, the only limitation is that you cannot have more than 20 users. Just remember though, that with a system like Perforce you need to have a dedicated server set up. With something like Google Code or Github you can store the repository on their servers.

Our team has been happy with Perforce, and we have it set up the second way that Greg proposed. We use the P4V GUI to manage our files with no plugins to LabVIEW itself, and we plug LVCompare and LVMerge to that tool. The compare and merge tools are a bit tedious to use however, so we make good use of the lock tool in Perforce, and we make sure students on our team don't manually set files to non-read only. One huge feature we missed this year is the P4Sandbox tool, which allows local & private branching. We were lucky that our regional had good WiFi in the pits, but I know a lot of events don't have this which makes it hard to use perforce at competition (at least without using P4Sandbox).

Whichever tool you do decide to use, make sure you spend a little time with anyone who will be contributing to the repository to train them on proper usage.
You're pushing me to GIT. We never have internet access at the event in AZ, except what you can set up via cell phones.
__________________
Software Mentor
3853 Pridetronics[

Reply With Quote
  #6   Spotlight this post!  
Unread 02-04-2014, 00:38
randantor randantor is offline
Registered User
AKA: James Y
FRC #0624 (CRyptonite)
Team Role: Alumni
 
Join Date: Jun 2013
Rookie Year: 2012
Location: Katy, TX
Posts: 48
randantor is a glorious beacon of lightrandantor is a glorious beacon of lightrandantor is a glorious beacon of lightrandantor is a glorious beacon of lightrandantor is a glorious beacon of lightrandantor is a glorious beacon of light
Re: Source/Version Control

This year 624 is using Git with LabViewGitEnv (https://github.com/joerg/LabViewGitEnv).

It went okay, but once we got a significant number of VIs in the project merging became such a long and protracted experience that we stopped doing it, keeping everything on a single branch, because for every single changed VI (and they change for some reason whenever you open them) it has to start up LVMerge over again, which takes quite a while to load, and then the project fills up with "file conflicts" that you have to manually accept for every single changed VI. That negated one of the most significant features of Git, which is that you're (usually) able to maintain parallel branches with easy merging between them, allowing your team to collaborate and multitask.

We found that it was helpful to use auto-populating folders for VIs in the LabVIEW project, and to review changes before committing them to avoid including a VI that wasn't really modified. We also removed the .aliases and .lvlps files from the repository, because merging would corrupt them and they seem to be regenerated by LabVIEW anyways. Git would also corrupt our lvproj file sometimes in merges, which we fixed by hand when it occurred (It's an XML file).

All in all, I don't know if it was worth it. The benefits of collaboration and multiple branches were nice early in the build season as we prototyped different elements of the code, but once we started integrating different code elements together and editing the same VIs merging became very tedious. However, the ability to go back to your code at any point in time in the past is very helpful.

If you use Git (and this may apply to other version control systems as well), I would recommend to really try to avoid working on the same VI in different branches, because merging really isn't fun.
Reply With Quote
  #7   Spotlight this post!  
Unread 02-04-2014, 21:36
tcjinaz tcjinaz is offline
Tim
FRC #3853
Team Role: Mentor
 
Join Date: May 2011
Rookie Year: 2011
Location: Arizona
Posts: 206
tcjinaz has a spectacular aura abouttcjinaz has a spectacular aura about
Re: Source/Version Control

Interesting observations. Thank you, randantor. I needed to hear about LabViewGitEnv.

We have been cursed(blessed?) in our 4 year history with never more than two working on the code. In that context, I think accept most of git's problems, but corrupting an XML file is not encouraging. This year we got to where we turned on LabView's version comment facility. Next year we'll get to real CM.
__________________
Software Mentor
3853 Pridetronics[

Reply With Quote
  #8   Spotlight this post!  
Unread 04-04-2014, 07:53
Greg McKaskle Greg McKaskle is offline
Registered User
FRC #2468 (Team NI & Appreciate)
 
Join Date: Apr 2008
Rookie Year: 2008
Location: Austin, TX
Posts: 4,752
Greg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond repute
Re: Source/Version Control

If you are going to use SCC, you may want to change the VI to store source and the binary executable code separately. The checkbox is in the VI Properties dialog on the first page. There are probably other ways to turn it on for the entire project.

Greg McKaskle
Reply With Quote
  #9   Spotlight this post!  
Unread 06-04-2014, 20:19
Ben Klebe Ben Klebe is offline
Registered User
FRC #5347 (The Gryphons)
Team Role: Programmer
 
Join Date: Mar 2014
Rookie Year: 2010
Location: Weston MA
Posts: 3
Ben Klebe is an unknown quantity at this point
Re: Source/Version Control

Quote:
Originally Posted by joeyoravec View Post
There might be reasons to use Java. Do all the students on your team have Java experience? Does your school have a Java programming class that you are planning to piggy-back off of? Are your software mentors Java experts? Are other local teams only able to help you if you're using Java?

LabVIEW is pretty easy for students who have no prior programming experience. This allows us to focus on robot functionality and design, instead of how to work the programming language.


LabVIEW VIs are opaque binary data; almost any tool will manage them in the same way. Consider the easiest solution that meets your requirements.

How many programmers are on your team? How often are people working on the code simultaneously? How many times did you branch, merge, or compare older versions of the code during this build season?

Our team uses a shared folder on dropbox and creates a new copy at every meeting. It's simple, but it works fine for what we do.
We have a very small team, ~15 members. It could be less next year. As it stands, the programming team consists of me and one other guy. As you said, the main allure of Java is support, but I'm not sure I'm ready to take it on. I've bounced between several languages, I was weaned on Logo with a Cricket then graduated to NXT-G during my FLL years. LabVIEW brings back memories of NXT-G for me, (because NXT-G was built by NI and is very similar to LabVIEW) that's part of the reason why I'm starting to get comfortable with it. Our school doesn't really have a formal programming class, so we unfortunately can't use that for support, though my dad has almost 20 years (since inception) of experience with Java and I believe our mentor has some too.

What draws me to LabVIEW specifically is the ease of data collection, graphical interface, and the idea that it is developed by the same people that make the cRIO and now the roboRIO. I suppose that's mostly symbolic, as the device obviously doesn't care what language generated the binaries it runs.

I have wanted to use Google Code/Drive and Dropbox and specifically asked to, but our last head programmer was messy with his source control and it has convinced our mentor and coach that a more dedicated solution is required.

Quote:
Originally Posted by wt200999 View Post
You can use Perforce for free, the only limitation is that you cannot have more than 20 users. Just remember though, that with a system like Perforce you need to have a dedicated server set up. With something like Google Code or Github you can store the repository on their servers.

Our team has been happy with Perforce, and we have it set up the second way that Greg proposed. We use the P4V GUI to manage our files with no plugins to LabVIEW itself, and we plug LVCompare and LVMerge to that tool. The compare and merge tools are a bit tedious to use however, so we make good use of the lock tool in Perforce, and we make sure students on our team don't manually set files to non-read only. One huge feature we missed this year is the P4Sandbox tool, which allows local & private branching. We were lucky that our regional had good WiFi in the pits, but I know a lot of events don't have this which makes it hard to use perforce at competition (at least without using P4Sandbox).

Whichever tool you do decide to use, make sure you spend a little time with anyone who will be contributing to the repository to train them on proper usage.
The server is the hard part of that. As a team with precious little funding to spare, I'm not sure we could set up a server for it. I have a few old PCs lying around, but I don't see the point in trying to convert them to servers before I know whether or not it will be time well spent.

As for GitHub, we considered it, but for LabVIEW, the process for integration seems finicky. Does anyone have any specific tutorials on how to do it? This is the only one I've found so far:

https://www.youtube.com/watch?v=2dEI6tEMTmQ

The only other concern with using GitHub is the privacy of our code, which may be a non-issue. I haven't decided yet. Does every team open their source during build season?
Reply With Quote
  #10   Spotlight this post!  
Unread 08-04-2014, 09:35
Invictus3593's Avatar
Invictus3593 Invictus3593 is offline
time you like wasting is not wasted
FRC #3593 (Team Invictus)
Team Role: Leadership
 
Join Date: Jan 2013
Rookie Year: 2010
Location: Tulsa, OK
Posts: 318
Invictus3593 is just really niceInvictus3593 is just really niceInvictus3593 is just really niceInvictus3593 is just really nice
Re: Source/Version Control

Quote:
Originally Posted by Ben Klebe View Post
The only other concern with using GitHub is the privacy of our code, which may be a non-issue. I haven't decided yet. Does every team open their source during build season?
I'm not sure privacy would be a real issue. Your team's programmers and their mentor should be the only ones who know where the code is and as long as they don't go post the link somewhere online, I don't think it would be easy for the public to find your code on GitHub.
__________________
Per Audacia Ad Astra
Reply With Quote
  #11   Spotlight this post!  
Unread 08-04-2014, 10:29
randantor randantor is offline
Registered User
AKA: James Y
FRC #0624 (CRyptonite)
Team Role: Alumni
 
Join Date: Jun 2013
Rookie Year: 2012
Location: Katy, TX
Posts: 48
randantor is a glorious beacon of lightrandantor is a glorious beacon of lightrandantor is a glorious beacon of lightrandantor is a glorious beacon of lightrandantor is a glorious beacon of lightrandantor is a glorious beacon of light
Re: Source/Version Control

Quote:
The only other concern with using GitHub is the privacy of our code, which may be a non-issue. I haven't decided yet. Does every team open their source during build season?
I may be wrong, but I remember hearing somewhere that FRC teams can get free GitHub organization accounts, which allow you to have private repositories that are only accessible to team members.

We've just hosted our git repository on a cheap VPS that we already rent to run the team website, though.
Reply With Quote
  #12   Spotlight this post!  
Unread 08-04-2014, 14:34
Ben Klebe Ben Klebe is offline
Registered User
FRC #5347 (The Gryphons)
Team Role: Programmer
 
Join Date: Mar 2014
Rookie Year: 2010
Location: Weston MA
Posts: 3
Ben Klebe is an unknown quantity at this point
Re: Source/Version Control

Quote:
Originally Posted by Invictus3593 View Post
I'm not sure privacy would be a real issue. Your team's programmers and their mentor should be the only ones who know where the code is and as long as they don't go post the link somewhere online, I don't think it would be easy for the public to find your code on GitHub.
Exactly. The question is whether we want security and privacy or scantily guaranteed pseudo-privacy.

Given how I'm not even sure how to set up a LabVIEW repository on GitHub in the first place, as well as the fact that you can get Perforce for free with ~20 users, I'm almost convinced I should just get into the morass of converting my desktop into an Apache server with Ubuntu Server and Perforce. I could use it to host our website too.

Anyone else here have any advice for LabVIEW vs Java? The benefits I see of LabVIEW are ease of learning, ease of debugging, and data collection. The only benefit I can really see of Java would be support, but people here are probably more experienced with it than I am.
Reply With Quote
  #13   Spotlight this post!  
Unread 08-04-2014, 19:59
Dkt01's Avatar
Dkt01 Dkt01 is offline
Programming Mentor
AKA: David
FRC #1756 (Argos)
Team Role: Mentor
 
Join Date: Jan 2010
Rookie Year: 2009
Location: Peoria, Il
Posts: 145
Dkt01 will become famous soon enough
Re: Source/Version Control

Quote:
Originally Posted by randantor View Post
I may be wrong, but I remember hearing somewhere that FRC teams can get free GitHub organization accounts, which allow you to have private repositories that are only accessible to team members.
You're right. Github has educational organization accounts with 20 free private repositories. See http://education.github.com for more info. FYI, give them about 1-2 weeks to process your request. Students (high school and college) can get 5 private repos as well. Look on the same site.
Reply With Quote
  #14   Spotlight this post!  
Unread 08-04-2014, 20:08
The Doctor's Avatar
The Doctor The Doctor is offline
Robotics is life
AKA: Hackson
FRC #3216 (MRT)
Team Role: Programmer
 
Join Date: Mar 2014
Rookie Year: 2013
Location: United States
Posts: 155
The Doctor is on a distinguished road
Re: Source/Version Control

Quote:
Originally Posted by Ben Klebe View Post
Given how I'm not even sure how to set up a LabVIEW repository on GitHub in the first place.
Github can host any files, even executables. LabView should be no problem.
Reply With Quote
  #15   Spotlight this post!  
Unread 17-04-2014, 22:57
Landonh12's Avatar
Landonh12 Landonh12 is offline
270 points
AKA: Landon Haugh
FRC #0364 (Team Fusion)
Team Role: College Student
 
Join Date: Jan 2012
Rookie Year: 2012
Location: Gulfport, MS
Posts: 211
Landonh12 has much to be proud ofLandonh12 has much to be proud ofLandonh12 has much to be proud ofLandonh12 has much to be proud ofLandonh12 has much to be proud ofLandonh12 has much to be proud ofLandonh12 has much to be proud ofLandonh12 has much to be proud of
Re: Source/Version Control

This year 364 used a BitBucket mercurial repository with TortoiseHg Workbench. You can commit, push, pull, and merge, but you obviously can't see changes without opening the code. Commit messages are really important since you can't see changes on the fly.

TortoiseHg: http://tortoisehg.bitbucket.org/
BitBucket: https://bitbucket.org/

Screenshot of TortoiseHg from our repository: http://i.imgur.com/QhCvkhm.png/
__________________
Team Fusion 364 - Driver/Programmer 2012-2015; Controls Mentor 2016-Present
Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 20:17.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi