Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   General Forum (http://www.chiefdelphi.com/forums/forumdisplay.php?f=16)
-   -   Ethics 101: To re-use or not to re-use? (http://www.chiefdelphi.com/forums/showthread.php?t=50240)

aaeamdar 03-12-2006 22:31

Ethics 101: To re-use or not to re-use?
 
Dear Chief Delphi Community,

Re-reading the rule book, I came across the following rule in the 2006 Manual, Section Five:

Quote:

Originally Posted by Section_Five_Rulebook
<R71> Unaltered software modules developed during prior competitions may not be directly re-used. Just as designs for hardware COMPONENTS may be reused from one year to the next, software algorithms and designs may be reused. However, the specific lines of code must be customized for each robot each year.

This rule seems to be saying that you can't copy-paste sections of old code into your new robot's brain. My first question is, is that the way everyone else sees it? What do you think this rule means?

My second question is this: what constitutes violation of the spirit of the rule versus the letter of the rule, and is such a violation acceptable to *you*? It seems to me that you could follow the letter of this rule while easily sidestepping the spirit. In general, is it acceptable to dodge around a rule you simply don't like?

Thanks for your input,
Paul Dennis
Team 1719

AdamHeard 03-12-2006 22:42

Re: Ethics 101: To re-use or not to re-use?
 
Well.

My team has used the same PID algorithm two years in a row. But, it was pretty much a standard one we got out of a book anyway. All the implementation and the gains were different, but that was still the same. I don't see this as violating the rules because the only way around it would be to intentionally changing the algorithm just so we can use it.

Also, code that we used from someone else may have been used twice. I think we may have unintentionally violated this rule with Kevin W's code, but I'm not sure if that counts.


Really, in most situations it wouldn't even be possible to simply copy and paste previous years' code.

Alexander McGee 03-12-2006 22:47

Re: Ethics 101: To re-use or not to re-use?
 
I don't see how it should be seen as acceptable for anyone to "bend" the rules, even if you do "get away with it".

Following the rules goes hand in hand with GP, so the answer seems pretty simple to me.

New year = all new code.

CircularLogic 03-12-2006 22:51

Re: Ethics 101: To re-use or not to re-use?
 
This rule is written with no possible way to enforce it, so technical legal obligation are meaningless in this argument.

It seems that the spirit of the rule is to encourage learning and development by writing fresh software every year instead of having one good programmer write code that you can pretty much use every year.


My answer to the last question of "is it acceptable to dodge a rule you simply dont like" is yes. I do believe that too many people are into the cult of FIRST rather than the actual issue of the things they are supposed to teach, i.e. technical expertise, programming expertise, or actual robotics. Following this type of rule to the letter represents being too caught up with the organization of FIRST and not necessarily what it teaches.

Rule violations will always happen, unitentional and intentional. Things break, changes in the pit almost always leave with some type of violations, and some teams have to knowingly use a diffent gauge wire when they only have 3 minutes to fix it, but that not the point. The point of this program is not to pay incredible attention and respect the infallibility of FIRST, but to learn from it. When people are too caught up in the cult of FIRST, I feel that we miss the important parts of the program as in the actual robotics part of it.




Anyway, that was kind of off topic, but it is the observations of a person who was always into the team and into the robotics, but never really a huge fan of the FIRST cult.

p.s. I always copy and paste lines of code. Its quite annoying to have to write entire drive algorithms over again when you have the same drive train.

Mike 03-12-2006 23:29

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Alexander McGee
I don't see how it should be seen as acceptable for anyone to "bend" the rules, even if you do "get away with it".

Following the rules goes hand in hand with GP, so the answer seems pretty simple to me.

New year = all new code.

"Rules are not necessarily sacred, principles are."
-Franklin D. Roosevelt

The rules aren't always right. Respect the intent, not the letter. Etc. etc.

Donut 03-12-2006 23:43

Re: Ethics 101: To re-use or not to re-use?
 
I see this as saying you can't copy paste entire control systems from a previous year, not a section (since copying a section and then adding new stuff to it would be classified as "altering" it in my opinion).

If you were to say using any previous year's code was against the rules, that would mean you really couldn't even use past years as reference, since you would invariably end up having at least 1 line in common with it. I think they just want you to figure out how the program works from the past and add your own style to it, rather than importing whole files for drivetrain, arm control, etc.

Gdeaver 04-12-2006 00:09

Re: Ethics 101: To re-use or not to re-use?
 
I thought cut and paste programing was a standard practice. Just let the lawyers haggle over the Intellectual Property stuff.

Bharat Nain 04-12-2006 01:41

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by CircularLogic
This rule is written with no possible way to enforce it, so technical legal obligation are meaningless in this argument.

It seems that the spirit of the rule is to encourage learning and development by writing fresh software every year instead of having one good programmer write code that you can pretty much use every year.

p.s. I always copy and paste lines of code. Its quite annoying to have to write entire drive algorithms over again when you have the same drive train.

I can agree with that one. Software engineering isnt exactly the same thing as hardware engineering. I also think its kind of hard to use the exact same code for every years robot so the rule is self surviving. Although, if you're talking about simply mapping inputs to ports which is even done in the default code, copying and pasting isnt really a big deal.

I think the rule is geared towards more complex software. Maybe a personal software for camera? I don't know. The rule doesnt entirely make sense right now but maybe it will in the future.

Joel J 04-12-2006 01:50

Re: Ethics 101: To re-use or not to re-use?
 
I think the rule is terrible, and the reasoning given for its creation is nice to listen to, but reaches a flawed conclusion.

:rolleyes:

Tangent about rules: the worst thing (in my opinion) about rules that have to be followed is the effect they have when they steer you to the edge of a cliff, and then tell you that you have to jump off. Absolutely painful to endure. This software reuse rule isn't that bad, but with all the bad rules being enforced in my daily life, this tangent was a must-take for me.

If you have old useful code that you will have to rewrite from scratch, then please be careful! Its really easy to make a mistake..

KarenH 04-12-2006 02:27

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by CircularLogic
My answer to the last question of "is it acceptable to dodge a rule you simply dont like" is yes. I do believe that too many people are into the cult of FIRST ...When people are too caught up in the cult of FIRST, I feel that we miss the important parts of the program as in the actual robotics part of it.

Your answer reminds me of what an acquaintance said when asked what was his definition of a cult: "A cult is any religious group I don't like." :)

I see a serious problem with your answer, however. When people "dodge" a rule they "simply don't like," the results are often damaging to society. Political scandals, felonies, skyrocketing teen pregnancy rates, automobile fatalities--these are often consequences of people breaking rules they "simply don't like." Calling the party that sets the rules a "cult" (or any other label) does not justify breaking the rules--particularly if you participate in that group voluntarily. The only ethical grounds for deliberately breaking a rule is when the rule violates a higher standard.

People with long experience in FIRST know that sometimes the rules could be more clearly written, and there is often room for interpretation. But breaking rules merely for personal convenience is more than a failure in exercising Gracious Professionalism--it is an attitude that can lead to anarchy, a society in chaos.

aaeamdar 04-12-2006 07:35

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by KarenH
I see a serious problem with your answer, however. When people "dodge" a rule they "simply don't like," the results are often damaging to society. Political scandals, felonies, skyrocketing teen pregnancy rates, automobile fatalities--these are often consequences of people breaking rules they "simply don't like."

Karen,

There's a difference between breaking a rule that you see as simply an inconvenience and breaking a rule that you know you shouldn't break. For example, we all know it's wrong to steal from people - massive violation of this rule would result in the anarchy you describe. But how would breaking this rule lead to anarchy?

Confused

Al Skierkiewicz 04-12-2006 08:10

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by CircularLogic
This rule is written with no possible way to enforce it, so technical legal obligation are meaningless in this argument.

My answer to the last question of "is it acceptable to dodge a rule you simply dont like" is yes.

Would you like to review your answer now that you see it in print? There is no way it is acceptable to violate a rule you don't like or that you don't believe. This one isn't even that hard to implement. Just retype... One thing all team members must understand is that the rule book is what draws us all together by making us follow the same path. When we accomplish great things by following the same rules as everyone else we show everyone that it is possible. If you don't like the rules then consider them a false set of real world constraints, like gravity. By avoiding the rules you are telling your students it is acceptable to violate any rule they don't like. There is no 'almost right' in this question, there is no 'it's alright if I don't like it' to this question. And there is no 'if no one knows then it's alright' to this question. A violation of the rules is a violation.

Steve W 04-12-2006 09:33

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by CircularLogic
My answer to the last question of "is it acceptable to dodge a rule you simply dont like" is yes. I do believe that too many people are into the cult of FIRST rather than the actual issue of the things they are supposed to teach, i.e. technical expertise, programming expertise, or actual robotics. Following this type of rule to the letter represents being too caught up with the organization of FIRST and not necessarily what it teaches.

Rule violations will always happen, unitentional and intentional. Things break, changes in the pit almost always leave with some type of violations, and some teams have to knowingly use a diffent gauge wire when they only have 3 minutes to fix it, but that not the point. The point of this program is not to pay incredible attention and respect the infallibility of FIRST, but to learn from it. When people are too caught up in the cult of FIRST, I feel that we miss the important parts of the program as in the actual robotics part of it.

p.s. I always copy and paste lines of code. Its quite annoying to have to write entire drive algorithms over again when you have the same drive train.

FIRST is not just about robotics. I believe that it has a higher standard. Gracious Professionalism is just part of it. There have been many threads about following rules. I will state again here that a rule is a rule. It is meant to be followed. It is there for a reason. It can be changed if the powers that be deem that you have a valid point. It is wrong to intentionally break a rule. It is a violation even if it is not intentional. If you break rules then you must live with the consequences.

It is also your responsibility to pay attention to all of the details. If you don't in the real world then you won't last long. As for people being caught up in the "cult" of FIRST, that is not a bad thing. Being caught up on ones self and putting them self above all others is.

I am glad to see that you admit breaking the rules. This will make it easier for the inspectors to find those who intentionally break the rules.

Is it a good rule? Probably not but it is still a rule. It holds the same intent and validity as only 4 CIM motors.

Jack Jones 04-12-2006 10:30

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Steve W
I am glad to see that you admit breaking the rules. This will make it easier for the inspectors to find those who intentionally break the rules.

Note to 2007 inspectors: Be on the lookout for Poof Ball shooting robots! ;)

Seriously, we need to follow the rules – even this one – in order to show respect and fair play toward the competition. If we succeeded in breaking a rule and later succeed in wining a match or three, then what have we won? None of us should want to cheat our way to hollow victory. It is way better, win or loose, to have played fair.

Acting up about this rule isn’t like the Founding Fathers tossing tea into Boston Harbor, or Rosa Parks sitting where she pleased. This is not about tyranny or oppression; it’s about honesty and fair play. Feel free to speak up against it, but respect us all enough to follow it.

aaeamdar 04-12-2006 13:17

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Al Skierkiewicz
This [rule] isn't even that hard to implement. Just retype...

Do you really think that simply re-typing the code would satisfy the rule? If so, that's fine. I respect your interpretation of the rule; I'm just looking for some clarification. How would re-typing the same thing be better than copy-paste?

Quote:

Originally Posted by Al Skierkiewicz
One thing all team members must understand is that the rule book is what draws us all together by making us follow the same path.

If the rule book is really what draws us together, then FIRST is a sad organization indeed. Thankfully, I don't believe that our FIRST credo and over one-thousand teams can be summed up into one hundred pages of rules, from non-functional decoration to pneumatics. Is it possible you meant something different from this and I'm reading too much into what you said?

To all those who are saying that following this rule constitutes fair play (and there seem to be quite a few such people), imagine a rule saying that before every meeting, teams must do the chicken dance. Would you still make a "fair play" argument? I suppose that there's some time gained or lost in not doing/doing the chicken dance (as there is in re-using old code directly or re-typing it, as Al S suggests), but is this really what the rule is about?

What do you guys see as the purpose of this rule, and what would be the purpose of a violation? Many people seem to think the intent of a violation is to cheat to get a leg up on hard-working teams following the rule. Is this the case?

Still confused,
Paul Dennis
Team 1719

Alan Anderson 04-12-2006 14:05

Re: Ethics 101: To re-use or not to re-use?
 
The intent of the rule is obviously to try to put software on the same sort of footing as hardware. This is not an easy thing to do well, for a number of reasons, but prohibiting reuse of code developed before kickoff is pretty close to prohibiting reuse of mechanisms assembled before kickoff.

Copy and paste of last year's code is too close to pulling a spare assembly from last year off the shelf. Retyping the code, line for line, is very much like fabricating an exact duplicate of a mechanism from last year's plans. The code design can certainly be reused without breaking the rules, and I think running the actual code through a student's eyes and fingers on the way to being compiled is a very good way to expose him or her to the design of the software.


I haven't given it a great deal of thought yet, but there could well be a legitimate way to reuse the exact .c and .h files from a previous year's software project. If you make it readily available to everyone, you could probably make a good case for treating it as an "off the shelf component". That's approximately what happens with the code so helpfully provided by Kevin Watson. But unless you're also willing to support such code, I wouldn't suggest making yourself a test case.

Dave Flowerday 04-12-2006 14:34

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Alan Anderson
This is not an easy thing to do well, for a number of reasons, but prohibiting reuse of code developed before kickoff is pretty close to prohibiting reuse of mechanisms assembled before kickoff.

NO, I very strongly disagree with this. I understand the intent of the rule but I really feel that it is misguided. Code is not equivalent to an assembled part (I know, you only said "pretty close", but I'm not even comfortable with that). Code for a project the size of a robot includes large portions of design as well. People are trying to make analogies between the code and a mechanical part and it really can't be done (not accurately, at least). The mechanical team is allowed to reuse a design. This means they're allowed to re-use a blueprint of the exact part they want, right? This means they're allowed to even re-use a CAD design to generate the exact part on a CNC mill, right? As far as I know, there is no requirement to throw away all the blueprints and CAD designs each year and re-do them (by measuring a previous part, etc). Re-typing is not the same as building another copy of a previous robot part, because by retyping you're repeating a lot of work that for the mechanical part would have been considered part of the "design" and would not have been repeated.

The rule is what it is, but I'd prefer to talk about WHY is it that way, and does it make sense? If we're not allowed to re-use prior year's code, then where does code from Kevin Watson and others fall? If we're trying to equate the code to a physical, mechanical part then shouldn't we require teams to purchase the code from Kevin (and require him to be an approved vendor, and require teams to re-purchase it each year)? Or, if it's given away free, then the "fair market value" of it should be charged against a team's budget. (You have any idea what his code is really worth and how fast THAT would chew through your $3500 limit?)

I wish people would stop trying to draw parallels between robot code and mechanical parts, and instead focus on making a different set of rules which really make sense for software. Requiring teams to re-type is stupid and represents tons of wasted busy-work - I contend that no one learns anything from blindly re-typing code. Re-building a mechanical design allows the builder to learn how to operate the machines, etc. necessary to build that part. However, the other extreme (re-use no code, no re-typing allowed) doesn't make sense either, because then you're throwing away valuable design work that is invariably tied to the code. What interest would it serve by requiring teams to completely start over on the software each year? Don't give me any excuse about being fair to new teams (who wouldn't have software from last year to re-use) because they also don't have the library of mechanical designs that other teams have either, and no one is talking about taking that away.

I guess my opinion on this matter is that the change to the game each year necessitates enough code change on its own. It's highly unlikely that a team could completely re-use code from a previous competition season without at least some modification, and if they can re-use it entirely then they're likely pretty close to the default code anyway. I think the nature of the game changes each year already ensures enough changes are made to the code that there is no good reason to attempt to "legislate" that more be made.

Al Skierkiewicz 04-12-2006 14:36

Re: Ethics 101: To re-use or not to re-use?
 
Paul,
You started the thread with a reference to rule #71, the terms of which are clear and with which you find fault. What is generally accepted is that year to year, software must be treated as if it were a part for the robot. The statement "Just as designs for hardware COMPONENTS may be reused from one year to the next, software algorithms and designs may be reused" indicates teams will "reuse" software. But just as all parts for this season's robot must be built during the build period, so shall software. It is not to put you or I on the same playing field but to put both of us on the same field as a rookie who has no code from last year from which to copy.
I don't think FIRST is a sad organization because of the rule book. The rule book is the means to the end of building a robot for competition. This is much more than a competition, we are building (or trying to build) the next generation of scientists, engineers and other professionals to make this world better. We have to get people back into the mode of realizing rules and following them, automatically. We know what happens when people don't follow rules. Lay, Skilling and others not only lined their own pockets they did so at our expense and the millions of people who depended on their retirement accounts to get them through their golden years. I know it is hard for a young person to imagine but many of those people are now well into their seventies and eighties and beyond their ability to work for themselves. They worked diligently when they could and sacrificed in order to not be a burden on anyone when they retired. Those people have watched as 40 years of their hard sork and sacrifice were flushed down the toilet by a couple of guys in Texas who didn't follow the rules.

Dave Flowerday 04-12-2006 14:52

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Al Skierkiewicz
What is generally accepted is that year to year, software must be treated as if it were a part for the robot.

Generally accepted by whom? I see a lot of people who do not write software for a living who agree with it, but so far I haven't seen too many who do write software professionally pipe up.

Consider this: right now (as I understand the rules), we are allowed to re-run a CAD design on a CNC mill to produces an EXACT DUPLICATE of a part from a previous year. The best software design document in the world will not allow you to write a brand new program that produces an EXACT DUPLICATE of the binary output of the compiler.

Apples and oranges, apples and oranges.

Alan Anderson 04-12-2006 15:38

Re: Ethics 101: To re-use or not to re-use?
 
Dave, I infer from your posts that you consider the source code for a software module to be the equivalent of the blueprint for a hardware assembly, and the compiled bits to be the equivalent of the assembly itself. Is that a fair assessment of your opinion?

I draw the line between design and "fabrication" a little higher. The way I see it, the design is in the structure and the algorithms, rather than in the specific way those algorithms are embodied in actual lines of code. I think it's the .h and .c files that correspond to the frame members and sprockets. Sure, there is usually a particularly obvious way to write a function to implement an algorithm, especially when the structure of the program is well-defined in advance, but that just means the next embodiment of the design will come out looking the same as the previous one most of the time.

The software rule from last year means you're not allowed to pull a module out of the version control system and drop it into this year's project unchanged; you're required to re-implement it. That's a perfectly reasonable rule in my worldview. It means someone has to actively do some programming in order for that functionality to be available. If you want to consider that wasted effort, fine, but I think it's the same sort of effort required to assemble a KOP gearbox when you already have four assembled ones sitting on a shelf from the previous year.

I write software for a living, and I definitely consider software to be a part of the robot. Is your position otherwise?

seanwitte 04-12-2006 17:01

Re: Ethics 101: To re-use or not to re-use?
 
I write software for a living and I agree with Dave Flowerday. Having kids retype C source from season to season is not an effective use of their time. Software is fundamentally different from hardware and it should be treated as such. It should be an established team's right to leverage their accumulated experience by reusing designs from previous seasons. Since the effective manufacturing "cost" of software is zero, treat is as such and allow reuse.

chris31 04-12-2006 17:15

Re: Ethics 101: To re-use or not to re-use?
 
It really doesnt make alot of sense for someone to have to re-create the wheel on there code. If you spend hours coding a way to interface some sensors why should you have to throw it all out the window and redo it all. Its a complete waste of time.

RyanN 04-12-2006 17:28

Re: Ethics 101: To re-use or not to re-use?
 
I see this rule as you cannot use the exact code from last year. Let's say that in 2005, your team had the perfect, most efficient camera routine ever made in the history of man, then in 2006, would you use it? If it was my team, I would use it. Why would I settle for less than what we already have?

ntroup 04-12-2006 17:39

Re: Ethics 101: To re-use or not to re-use?
 
As it seems that this should somehow make a difference, I, as well, write software for a living.

With that said, I have to agree with those agree that software is different than other components. Yes, I agree that software is a part of the robot, and, in fact, it is a integral and critical component. But it is fundamentally different than hardware.

I see a few arguments to that. One being that re-typing the code allows one to support this rule. But how is that really any different than copying/pasting, or checking out a version from your favorite source-code repository. There isn't a difference, other than potentially introducing typos that require more time to debug. This doesn't seem like a productive use of time for teams.

If you have a known good design/algorithm/function, why try to re-invent it. You only have to invent the wheel once, then you use it, because you know how it works. The same goes for Omni-Wheels, Transmissions, etc.

As said before, if the argument is that it is faster for teams to copy/paste or checkout a version than rookie teams, then how is it fair for teams to have CAD files that will generate all the components needed for a mechanical design at a moment's notice.

The rule says this:
Quote:

However, the specific lines of code must be customized for each robot each year.
Since no game is going to be the exact same each year, this is going to always be true. The code will have to be customized for that game. As Jack eluded to, I doubt there will be PoofBall throwing robots next year. BUT, I can definitely foresee teams needing to track lighted objects on the field. To have to completely re-write that from scratch, as others have inferred, would be pointless AND difficult.

Each year is a learning experience. And each year, teams learn and perfect various pieces of their robot. To have to force team's to re-perfect any component each year, be it hardware or software, seems like a step backwards in where this program is aiming to go... to create those that go one step beyond.

-Nate

Dave Flowerday 04-12-2006 18:26

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Alan Anderson
Dave, I infer from your posts that you consider the source code for a software module to be the equivalent of the blueprint for a hardware assembly, and the compiled bits to be the equivalent of the assembly itself. Is that a fair assessment of your opinion?

Not really - my point is that you cannot equate the software directly to a mechanical piece. I contend that a software implementation (especially in C) includes elements that are roughly equivalent to the design of a mechanical part AND elements that are roughly equivalent to the fabrication of that part. So all I'm saying is that it's unfair to treat the software as either the direct equivalent of mechanical design or the direct equivalent of mechanical implementation.

I feel strongly about this topic because treating software as if it were equivalent to an implemented mechanical part is an error that is being made not only here in FIRST but in industry as well. Many companies are starting to treat software implementation as a manufacturing job - something that is able to be farmed out to any group which claims to be able to write software. The fact of the matter is that software engineering is a very immature discipline - unlike other engineering practices, the tools and processes in software have not been developed to the point where the design and architecture can be cleanly separated from the implementation. The tools and processes we have to do software design with right now do not allow us to create a design which can be implemented blindly by someone writing the code without them having to interpret the design, "read between the lines", and generally know how something is supposed to work.

In FIRST, you can take a blueprint (either one you created or something you're borrowing from another team), send it out to a machine shop, and they can send you back a finished part. This machine shop really doesn't need to know anything about how the part works or how it fits into your robot or anything. Right now there is no equivalent to this with robot software - there is no artifact which your team has that you can ship off to a 3rd party software shop and have them build you the exact same software that you had from a previous year.

So, I come back to my original point, which is stop trying to equate it to something from the mechanical world and instead focus on making rules that makes sense and address the underlying concern. To be honest I'm not sure 100% what the underlying concern really is (if someone truly knows please respond here and fill me in), but I suspect it has something to do with wanting the new kids to learn and have the experience of writing the software that the kids from last year did. Now, if this is the case, how is reusing software from last year (which the new kids didn't write) any worse than using Kevin Watson's software (which the new kids didn't write either)? How is it any different for my team to reuse camera code that we ourselves wrote in a previous year than to use Kevin's? What problem are we really trying to solve with this rule anyway? Is this just another attempt to make things more "fair", even though Dean repeats often that this competition is not fair?

When a similar rule to this first came out in 2005, it was clarified that year that anything written after ship date would have to be retyped at competition. We diligently followed this - we had 4-5 people sitting at the top of the stands furiously retyping code at Boilermaker on the practice day. Many people came by and asked what on Earth we were doing. When we explained that we were retyping all the code that we wrote after ship date, they almost all said "Oh, I didn't know we were supposed to do that. We didn't retype ours..." So, it's great that people are talking here about what high standards everyone holds in FIRST and everything, but I personally believe the vast majority of teams really are just ignoring this rule, which ends up punishing the teams who honestly try to follow it.

Mike Martus 04-12-2006 18:39

Re: Ethics 101: To re-use or not to re-use?
 
So where does this put programs like Easy C. They have many modules already written and ready to drag and drop. For us NON programmers this was a savior for my students.

So easy to use, re-creating a new code from scratch for 2007 using existing modules within the program is the way to go, once we design the robot of course.

I think this meets the rules. Am I wrong?

aaeamdar 04-12-2006 18:48

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Al Skierkiewicz
We have to get people back into the mode of realizing rules and following them, automatically. We know what happens when people don't follow rules. Lay, Skilling and others not only lined their own pockets they did so at our expense and the millions of people who depended on their retirement accounts to get them through their golden years.

As cliché as it may be, you're comparing appples to oranges. The crimes perpetrated by the Enron execs were by no means victimless. Lay and Skilling lined their pockets, but at some level, they must have known that what they were doing was wrong.

Personally, I've always been one to question authority. That's just the way I am, and it's not likely to change. I go to a school with a philosophy that rejects arbitrary authority. If you can show me someone who would be hurt by a team re-using previous years' code, I'm all ears. However, FIRST does seem to be asking us to reinvent the wheel each year (to a certain extent) while at the same time giving us large sections of code that we're not even meant to look at, much less understand. How is it a valuable use of time for teams to re-type code from last year?

Furthermore, if FIRST is looking to really level the playing field between rookie teams and veterans, there's a whole lot more that they could be doing. Veteran teams, if you're really looking to burn their time, could be forced to fill out long questionaires during each build season. How is this better than asking teams to re-type code?

To those who are saying that it's silly for FIRST to require teams to re-invent the wheel (as chris31 seems to be saying), do you think that this is what the rule says?

Thanks for all your collective input,
Paul

ewankoff 04-12-2006 19:46

Re: Ethics 101: To re-use or not to re-use?
 
From the way this discussion is going it looks like many people are not looking at the real intent of this rule. FIRST's goal is to teach student about technology, science, and engineering. When a part is fabricated student gain expierience with that part and machines used to make it. The rule inquestion, I beleive, is to force students to learn how to program and create code that works. If a team has already perfected code then this rule does not outlaw reuseing but only forces teams to re-implement it. The re-implementing of the code forces students to figure out how to make that specific code work with this years robot. If a team was required to retype or copy and paste then no-one benefits and does not coincide with the goals of first. The only thing that should be taken into consideration when copying code directly is that students should learn how it works and what makes it tick then the goals of FIRST are being fulfilled.

Not2B 04-12-2006 20:50

Re: Ethics 101: To re-use or not to re-use?
 
Here's how I look at it...

The algorithms and designs can be re-used, but not the actual code. Thats GREAT!

This means you can let the new students look over the design or psudo-code, and see if they can build the software as a way of learning the program, and the older students can check and guide the new students.

Re-using the code seems like a lost opportunity. But then again, we aren't out there to win the game, just win... stuff for ourselves.

KarenH 04-12-2006 20:59

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by aaeamdar
There's a difference between breaking a rule that you see as simply an inconvenience and breaking a rule that you know you shouldn't break. For example, we all know it's wrong to steal from people - massive violation of this rule would result in the anarchy you describe. But how would breaking this rule lead to anarchy?

Confused

Read all of my post. It's the ATTITUDE that leads to anarchy. When people make their own choices between what is an "inconvenience" and what they "shouldn't break," they place themselves above the law. They decide which laws they will follow. Laws become meaningless. This is the basis of anarchy.

If it's an inconvenience to follow a FIRST rule, and a mentor tells the team to ignore the rule merely because it's inconvenient, then logically what will prevent that mentor or those students from deciding it's an inconvenience to follow school rules against cheating, local laws against speeding, or state laws against shoplifting? And that therefore, it's OK to ignore those rules?

For example, some people think it's inconvenient to not have enough money, so they decide it's OK to enter someone else's house or car and take whatever they find. And they often don't think there's anything wrong with doing so, unless they get caught!

The values mentors and teachers convey to students are critical. If adult leaders give teenagers ANY justification for breaking rules, even stupid rules, many teens will take that little "permission" and run away with it. Then, when they get into trouble, they'll blame the adults who said it's OK to break the rules. If they can break one rule, why not break the other rules?

Back to the rule under discussion-- Did anyone ask for clarification of this rule in the Q&A?

chris31 04-12-2006 21:07

Re: Ethics 101: To re-use or not to re-use?
 
Well think of it this way. No code is ever finished. Atleast it isnt in my mind. Every peice of code could use a new feature, tweak, or performance boost. All you need to do is modify the code and it no longer breaks the rule. Your doing yourself a favor by having better code due to this rule.

Dan Zollman 04-12-2006 21:10

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by ewankoff
The re-implementing of the code forces students to figure out how to make that specific code work with this years robot.

I am not a programmer and I am not responding directly to the rule itself. I want to suggest a different way to think about this, but I hope I'm not off the mark with this opinion.

Some, if not all, teams document their code development like any other engineering project, including everything from the problem statement to reasons for choosing certain solutions to a description of the final product. If you're documenting a program, you would explain why each detail of the code was written the way it was, and why it solves the problems of this year's game and this year's robot. You haven't done a good job with your documentation if you say, "This code has worked before..." or "This code worked on last year's robot/another robot...so we decided to use that code for this year's robot."

Even if you would use your code from a previous year, or if you would use someone else's code, it is much better--and common practice--to explain the details of that code, show why each one is appropriate for your needs and goals, and show why you chose this code instead of writing your own. (Also acknowledge it when your code isn't original, even if you think that would affect a score.)

Would anyone have any objections to copied and pasted code if the team members can thoroughly explain why the code has been written in the way that's right for this year's robot?

Steve W 04-12-2006 21:12

Re: Ethics 101: To re-use or not to re-use?
 
I am convinced that rewriting software is now bad and copy and paste is good (tongue in cheek). Now the fact that I am a builder I can use the same reasoning for using a new drive base that our students have spent all summer and fall fixing and building. Why should we have to rebuild an already good working unit? I would even say that because the students built it that it has more validity than coping someone else's software.

seanwitte 04-12-2006 22:14

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Steve W
I am convinced that rewriting software is now bad and copy and paste is good (tongue in cheek). Now the fact that I am a builder I can use the same reasoning for using a new drive base that our students have spent all summer and fall fixing and building. Why should we have to rebuild an already good working unit? I would even say that because the students built it that it has more validity than coping someone else's software.

That's not a valid analogy. The rule states that you can not reuse existing hardware or software, but you can reuse the design. This is a flawed system because the manufacturing costs of the two artifacts are different. Once you design a part, the cost to manufacture it, both in time and money, is roughly the same from that point forward. You may be able to make it a slightly faster or slightly cheaper, but the up-front investment has already been made. Writing software from scratch is completely different. No matter how good your design or algorithm is, reproducing a complex piece of code does not scale the way a mechanical component does.

[EDIT]
I want to clarify my position. I think this is a bad rule and it does not serve the program. However, it is a rule, and cannot be ignored. When you choose to participate in ANY activity you agree to follow the rules, whether you like them or not. This is especially important when the rules are not enforceable.
[/EDIT]

aaeamdar 04-12-2006 22:23

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by KarenH
Read all of my post. It's the ATTITUDE that leads to anarchy. When people make their own choices between what is an "inconvenience" and what they "shouldn't break," they place themselves above the law. They decide which laws they will follow.

Karen, your later reference to speeding brings up an interesting comparison. Let's say that Don the driver is driving along on the highway. The posted speed limit is 60 mph, but the average speed of the cars on the highway seems to be about 70 mph, with several drivers going as fast as 80 mph. Is it better for Don to "go with the flow" and move along at 70 mph, or is it better for him to go 55-60 mph as the speed limit states?

The answer is that Don is a safer driver at 70 mph (even if this is faster than the speed he would like to go) than he is at 60 mph. Anyone with driving experience knows that a driver going along at a significantly slower pace can cause problems for him/herself and also other drivers.

We make judgements about rules all the time, and we choose to follow them or not based on those judgements. In this case, if a FIRST rules official were to come on this thread and say that simply re-typing (in other words typing while looking at the original code) is the way to follow this rule, I would have absolutely no bad feelings about ignoring such a busywork rule. Please tell me how this would lead to anarchy.

Quote:

Originally Posted by Steve W
I am convinced that rewriting software is now bad and copy and paste is good (tongue in cheek). Now the fact that I am a builder I can use the same reasoning for using a new drive base that our students have spent all summer and fall fixing and building.

Steve, you should re-read Dave Flowerday's postings. I think they shed some light on why these comparisons work. I'll admit that since the beginning of the discussion, I've felt that they aren't as valid as many people seem to think, but I never put words to it. Dave has made a much more persuasive case for it than I could have.

Paul

Steve W 04-12-2006 22:26

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by seanwitte
Writing software from scratch is completely different. No matter how good your design or algorithm is, reproducing a complex piece of code does not scale the way a mechanical component does.

I agree that writing from scratch is different but that is not what has been said I don't believe. People are saying that they think it a waste of time to re-type which is legal so why not just cut and paste? I believe that it just that people don't want to do what is in the rules because in is an inconvenience. I too would like to make my job easier by reusing parts from last years robot. After all they would have to be modified to fit on the new robot and adjusted for the new game. Why do we want to rebuild an already good unit?

Bharat Nain 04-12-2006 22:57

Re: Ethics 101: To re-use or not to re-use?
 
Where does this put Kevin Watson's software? What about other white papers and code provided by other programmers? Does this mean you should look into Mr. Watson's softwares and grab the logic and re write your own version from scratch?

Dave Flowerday 05-12-2006 06:32

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by aaeamdar
Steve, you should re-read Dave Flowerday's postings....

Just so we're clear, while I have stated strong opinions about this rule, I do not feel that you can simply ignore a rule if you don't like it, as it appears you are suggesting. The rules are what they are and we have to follow them, but it doesn't mean we have to like them and it doesn't mean we can't critique them and discuss them in an effort to improve the situation.

To be blunt, I want to make it clear that my opinion on this rule does not translate into support for your argument.
Quote:

I would have absolutely no bad feelings about ignoring such a busywork rule.
I think you will find that this attitude will not serve you well in life. It's OK to question rules, but you should work within the bounds of the system to change them, rather than flagrantly disregarding them simply because you don't like them. Questioning authority in certain circumstances can be a good thing, when it is done in a civil manner using proper channels. What you seem to be advocating here however is simply ignoring authority. Trust me, when you get a little older you will find that this doesn't work well. Try something like that at an engineering job and you very likely could get fired, or get someone hurt (ignoring safety standards, for example), or cost someone a lot of money (by getting sued, etc.). Definitely not something to aspire to.

Alan Anderson 05-12-2006 07:36

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Bharat Nain
Where does this put Kevin Watson's software?

I think it makes sense to treat it as components included in the Kit of Parts.

Venkatesh 05-12-2006 08:15

Re: Ethics 101: To re-use or not to re-use?
 
There is a neat question that has been raised in this thread - whether software is a concrete "thing" or an abstract "idea".

Consider for a second a description, written in some (human) language, that thoroughly specifies the software of a FIRST robot. All inputs, all outputs, are accounted for. Would reusing this whole between years run afoul of the rule?

I think that this software description mentioned above is a design document, very analogous to a blueprint or a CAD drawing. Assuming that it is practical to fully reuse the design document above, I think that the rules allow it to be used, in undistilled-to-C form.

But do the rules require the entire thing to be distilled to C every year completely fresh or do they allow reuse of old elements? If the C code serves to express an idea from design, then I believe that it is a design document and can be reused, copy-and-paste. If the code itself is a tool or part, then it cannot.

A few years ago, there was an interesting court case in New York; I forgot the name, but in it a professor from CMU makes a very conclusive case that software foremost expresses ideas. Let me try to capture the spirit of his ideas here: If an abstract mathematical description of a system can be an idea, a direct translation of that description into another idea-description/algorithm-description language is still an idea. What I think that this means for us is that teams can reuse elements of prior code, copy-pasted. Elements would mean modules, functional units, whole state machines, etc. But teams would not be able to reuse the parts of the code that came about through the process of converting the description into code - parts that account for how the robot is wired up, specific gain values on sensors, which motor is where, a driver's preferences, etc.

On a more practical note, completely copying prior code, without understanding or modification, would be very difficult because of how much the competition and KoP changes every year - the default code itself has changed so much between the years, even since 2004. I think that the natural changes in the competition itself properly force changes that make running afoul of this rule difficult.

Daniel_LaFleur 05-12-2006 09:42

Re: Ethics 101: To re-use or not to re-use?
 
As a mentor, I am here to teach these students far more than just robotics. I am here to teach about life.

As such, how can I teach them that it is OK to break a rule just because it is inconvienient, and unenforceable. To do so would be teaching them the wrong things.


This question is not about writing code. It's about teaching morals, eithics, and gracious professionalism.

Can people reuse code? YES. Will they get caught? Probably not. If we show them that breaking the rules (and reusing code) is OK, what have they learned? That society does not expect them to follow the rules, and when inconvienient it's OK to break them.

Is this what we really want to teach them?

And where does that put those teams that play fair?

And once we head down that slippery slope, where do we stop?

ntroup 05-12-2006 09:59

Re: Ethics 101: To re-use or not to re-use?
 
I think a lot of this discussion comes down to what the rule actually says. I see a lot of people saying 'I think'/'I infer'/'I believe' regarding this rule, but no one has said 'I know' what the rule exactly means.

What is FIRST's intent when they say "software algorithms and designs may be reused." Does that mean the high level design, or the actual functional implementation. The rule does not exactly say, and it is left to the readers' interpretation.

I would have to believe that most people (and I hope that this is true) are trying to follow the rules, but to their own interpretation of them. In most cases, this would seem like 'bending the rules' to make them more favorable for you. However, in this case, with the software side of FIRST becoming so big, yet still so new, I believe(*) that the rules don't quite state what is/isn't allowed exactly to the level that all will understand. (* Again, my own interpretation)

Each person obviously has their own thoughts on this issue, but those thoughts aren't necessarily FIRST's. I think the appropriate thing to do is to ask FIRST directly, when the rules for 2007 come out, and see how they address this exact issue.

After doing a quick scan of 2006's Q&A system, I did not see anyone post a question regarding this. But, there are a lot of questions regarding Software and how it fits into the rulebooks (i.e. FixIt windows, shipping, practice bots, etc). This shows that there is a large misunderstanding of how we are to deal with this, since it is different than a hardware component.

So, in order to prevent any larger argument, I think we need to agree to disagree until we can get a decisive answer from the powers that be.

-Nate

MikeDubreuil 05-12-2006 10:54

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Bharat Nain
Where does this put Kevin Watson's software? What about other white papers and code provided by other programmers? Does this mean you should look into Mr. Watson's softwares and grab the logic and re write your own version from scratch?

Since we can't establish the spirit of the rule we have to go by the letter of the rule. "Unaltered software modules developed during prior competitions may not be directly re-used." Since only Kevin Watson developed the code he can not use the code but every other team can. Hmm... that doesn't make sense does it? BAD RULE.

EDIT: You could also argue that you developed the software during the offseason some people would not consider that time to be "during prior competitions." You could even argue that "during prior competions" only includes events such as regionals and nationals (build season would be excluded from the rule.)

MikeDubreuil 05-12-2006 11:57

Re: Ethics 101: To re-use or not to re-use?
 
This thread discusses the rule when the rule first was introduced. It appears that no one understood the rule at the time. The thread eventually died without resolution. A search of the FIRST forum turned up nothing; indicating no one ever asked FIRST to clarify <R71>.

Bharat Nain 05-12-2006 14:48

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by MikeDubreuil
This thread discusses the rule when the rule first was introduced. It appears that no one understood the rule at the time. The thread eventually died without resolution. A search of the FIRST forum turned up nothing; indicating no one ever asked FIRST to clarify <R71>.

I am pretty sure the GDC is reading this thread and scratching their heads and probably re-writing the rule with more thought. Happens every year.

Kris Verdeyen 05-12-2006 15:12

Re: Ethics 101: To re-use or not to re-use?
 
You know what would make a great change to this rule? Allow the re-use of any code that is put into the public domain (a la Kevin.org), and force the re-typing for fuddy-duddies who don't want to participate. It would encourage a practice that would lead to stronger teams, force top team to continue innovating, and give weaker or new teams a glimpse into what can be done with the tools they have available.

Would anyone have a problem with posting last year's code in orde to be allowed to use it this year?

Tristan Lall 05-12-2006 15:29

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Kris Verdeyen
You know what would make a great change to this rule? Allow the re-use of any code that is put into the public domain (a la Kevin.org), and force the re-typing for fuddy-duddies who don't want to participate.

Let's anticipate a loophole and amend that to "into the public domain, and made widely available"...otherwise someone will slap a CCL on it, but never give it out.

(This is what "public domain" entails.)

Richard Wallace 05-12-2006 15:33

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Kris Verdeyen
Would anyone have a problem with posting last year's code in order to be allowed to use it this year?

I like the idea. However, as a robot inspector I can't quite see how event volunteers could verify that a team was complying. We could just ask, "is any of your code re-used from last year, and if so did you post it for others to see?"

Hmmm.... :confused:

Billfred 05-12-2006 15:42

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Richard
I like the idea. However, as a robot inspector I can't quite see how event volunteers could verify that a team was complying. We could just ask, "is any of your code re-used from last year, and if so did you post it for others to see?"

Hmmm.... :confused:

I think this is the only way you could enforce it, and just hope they make their grandmother proud. (As a past inspector, I can think of far, far worse ways for those who lack GP to pull a fast one.)

And yes, I think the idea's a winner. The Kevin Watson Rule, anyone?

Richard Wallace 05-12-2006 15:55

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Billfred
The Kevin Watson Rule, anyone?

OK, I'll second Billfred's motion.

In FIRST we don't encourage lawyering the rules, and we often don't worry about policing them, either. GP mostly handles both functions. A world where lawyers and police don't get much work -- there's a goal to work toward.

aaeamdar 05-12-2006 16:01

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Billfred
The Kevin Watson Rule, anyone?

It's really interesting to see where this discussion has gone. Would individual teams post their code versions on their websites, or would we have some central code dump? Who would be in charge of managing this?

Thanks to everyone who has responded so far!
Paul

chris31 05-12-2006 16:11

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by aaeamdar
It's really interesting to see where this discussion has gone. Would individual teams post their code versions on their websites, or would we have some central code dump? Who would be in charge of managing this?

Thanks to everyone who has responded so far!
Paul

It would have to be 1 central thing. Else people could make it harder to get there code from there site, its not easy to find, etc. The only fair way would be to have 1 central cite.

Andy Baker 05-12-2006 16:24

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by chris31
It would have to be 1 central thing. Else people could make it harder to get there code from there site, its not easy to find, etc. The only fair way would be to have 1 central cite.

How is is not fair to have the team's code on the team's site? There does not need to be a central site for this.

Andy B.

ps... btw, everyone: whatever is discussed here is by no means a decision we all must live by. This is up to the GDC. They can either incorporate the suggestions in this thread, go totally against them, or even make us all write code on banana peels with our fingernails.

Billfred 05-12-2006 16:28

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by chris31
It would have to be 1 central thing. Else people could make it harder to get there code from there site, its not easy to find, etc. The only fair way would be to have 1 central cite.

I'm not so sure--I believe that you can phrase it in simple enough terms. Here's my attempt:

Quote:

Originally Posted by R1234
Teams that wish to utilize code created before the Kickoff must post the code publicly, either on a team website or a community forum. In either location, the code should be easily and freely accessible, where anybody can download it.


Dave Scheck 05-12-2006 16:52

Re: Ethics 101: To re-use or not to re-use?
 
I disagree with the proposed idea.

My reasoning is that I think that this will punish teams that actually take the time to create well written, reusable code. They have put in the time to create this product....why should they be forced to share this with a team that doesn't put in the effort? What is the motivation of a new team to actually learn how to write code when they can go out and download the prewritten code of their choice? What is the motivation for a team to post their code in a legible format?

If teams want to share a code module, or even their whole codeset, that should be their prerogative.

Would you think the same way if this pertained to mechanical design? Would you force teams to make their gearbox design public if they intended to use it from year to year? (I know that the software/mechanical comparison isn't easily made, but humor me).

Marc P. 05-12-2006 17:06

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by ewankoff
From the way this discussion is going it looks like many people are not looking at the real intent of this rule. FIRST's goal is to teach student about technology, science, and engineering. When a part is fabricated student gain expierience with that part and machines used to make it. The rule inquestion, I beleive, is to force students to learn how to program and create code that works. If a team has already perfected code then this rule does not outlaw reuseing but only forces teams to re-implement it. The re-implementing of the code forces students to figure out how to make that specific code work with this years robot. If a team was required to retype or copy and paste then no-one benefits and does not coincide with the goals of first. The only thing that should be taken into consideration when copying code directly is that students should learn how it works and what makes it tick then the goals of FIRST are being fulfilled.


Everyone needs to read this carefully. I see quite a bit of arguing back and forth about whether a rule like this has any justification, and I think this post nails the question home. While software is without a doubt an integral part of a robot, it's implementation (not creation) is arguably simpler than a mechanical component. Once the concepts and code are developed and written, it only takes the click of a button to send it on it's way to the robot. Therein lies the problem: how do you arrive at completed concepts and code? The question seems to be "is it alright to use code/algorithms from previous years on current robots?" To take the question to a hypothetical extreme, without a rule like the one in question, a team could just drop in completed 2006 binaries into the 2007 robot and call it a day. Naturally, this wouldn't make much sense given the change in game play form year to year, but how far off from reality could it be if a team has not much more than a pusher/drive train bot from year to year? In that situation, how would a mentor tell their programming team "sorry guys, the code we had from last year is good enough, so we won't be needing you." More importantly, what do the students learn from that?

Break it down one step. Instead of binaries, copy and paste the source from the previous year. The compiled binaries are still the same if nothing has changed. Break it down further. Instead of complete source, just take snippets from the most complex parts, such as the camera tracker. Mentor to programming team: "Sorry guys, our code from the camera last year worked so well, we don't need to rewrite it. Just copy and paste it and call it a day." Again, what do the students learn from that?

If a team has the same general programmers from year to year, the rule does make it seem like a waste of time to re-write common code from year to year. However, at the same time I see seniors graduate from their teams and move off to college, carrying all their concepts and algorithms with them, leaving a rookie programming team scratching their head looking at the leftover code. Rewriting every year at least gives the experienced programmers time to properly explain why the code works, from algorithm to implementation, and gives the programmers-to-be the chance to ask questions and learn as things are put in place. Ultimately, isn't that the goal of FIRST? To inspire future engineers and help them find something they're interested in? How inspiring is it as a programmer to simply copy and paste existing code without understanding how or why it works? I believe that is the spirit of the rule.

Dave Scheck 05-12-2006 17:51

Re: Ethics 101: To re-use or not to re-use?
 
Marc

I agree that then end result has to benefit the students. However, there is a hole in your argument.

What do students learn from Kevin Watson's serial port code? That code is so complex that it has the potential to baffle even people that write software for a living. I would never expect a high school student to be able to understand it. Yes they can be taught how it works, but isn't the allocated time better spent teaching them how to use the interface? In this case, I believe that's where the real learning comes from. How many high school students are exposed to serial communication outside of this program? How many have even heard of it? So much can be learned in simply writing a protocol to talk serially between two endpoints. In theory, nothing about the guts of the serial code needs to be known other than "when I call this function, these bits get sent to the other end".

This is something that software professionals deal with on a daily basis. There are always modules that you will use that you haven't written yourself. If you're doing any sort of GUI programming, I highly doubt that you would write your own Button class. This doesn't take away what can be taught/learned if you can't see the internals of what a Button really is.

Why can't this principle be applied to robot code? Why couldn't a team re-use a PID control function from year to year? There is so much to learn from interfacing with the function and tweaking the parameters without needing to know the guts.

I do see how reusability needs to be done responsibly otherwise we would end up in the situation that you described above, where the students get very little out of this. This should be placed squarely on the shoulders of the mentors. After all, aren't we here to make sure that students get the most out of this program (whether it be education or inspiration)?

I agree that there is no substitute for actually writing a piece of code to understand what it does, but there is plenty to learn by interfacing with existing code.

Another thought:
Is prototype code written during the offseason legal for use? There has been plenty of discussion of being able to track multiple colors. If a team has perfected it are they forced to have to rewrite everything? What if the same team of people that are writing the robot software also designed and wrote that code? My stance is that if a team has put in the effort to go out and learn about something on their own, they shouldn't be forced to waste the time rewriting it when the time could be better spent creating the interface to it.

Kris Verdeyen 05-12-2006 18:01

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Dave Scheck
My reasoning is that I think that this will punish teams that actually take the time to create well written, reusable code. They have put in the time to create this product....why should they be forced to share this with a team that doesn't put in the effort?

They aren't forced to do anything - in the propoal, those teams are free to do the busy work of re-typing everything.

Quote:

Originally Posted by Dave Scheck
What is the motivation of a new team to actually learn how to write code when they can go out and download the prewritten code of their choice?

Because for anyone to be able to use another team's code, they will have to understand it first. Even the best-intended public code (kev or usfirst) still requires hours to fit into a complex scheme like what's used on a robot.

Quote:

Originally Posted by Dave Scheck
What is the motivation for a team to post their code in a legible format?

So that other teams could use it? I don't know. Maybe so they don't have to retype all those comments they left out? Because it makes them feel good? Altruism? First fame? They're trying to get into heaven? It seems more stupid to purposefully obfuscate posted code than to simply re-type it.

Quote:

Originally Posted by Dave Scheck
If teams want to share a code module, or even their whole codeset, that should be their prerogative.

I agree wholeheartedly. I do think, however, that that sort of behavior ought to be encouraged.

Quote:

Originally Posted by Dave Scheck
Would you think the same way if this pertained to mechanical design? Would you force teams to make their gearbox design public if they intended to use it from year to year? (I know that the software/mechanical comparison isn't easily made, but humor me).

Yes.

I agree that the comparison is not easily made, and I've tried, but why not? Year after year, and with nearly every chance they get, FIRST rules in a way that makes the game more competitive, the robots better, the compeitition more fun to watch. Why should completely spilling the beans on last year's robot be any different? It's good for good teams, because it encourages them to continue to innovate, and it's good for struggling teams because it demystifies the champion teams in a way that is bound to inspire them to strive further. It makes the pie higher.

Bharat Nain 05-12-2006 18:14

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Dave Scheck
I disagree with the proposed idea.

My reasoning is that I think that this will punish teams that actually take the time to create well written, reusable code. They have put in the time to create this product....why should they be forced to share this with a team that doesn't put in the effort? What is the motivation of a new team to actually learn how to write code when they can go out and download the prewritten code of their choice? What is the motivation for a team to post their code in a legible format?

If teams want to share a code module, or even their whole codeset, that should be their prerogative.

Would you think the same way if this pertained to mechanical design? Would you force teams to make their gearbox design public if they intended to use it from year to year? (I know that the software/mechanical comparison isn't easily made, but humor me).

I tend to agree with Dave. I don't think its fair to compare software with hardware either. I mean honestly, if FIRST requires that we do not use any code from previous years and I have a modular component from a previous years, I could easily take any kid from the team and ask them to re-type it for me maybe just looking off print outs or another computer. It is the exact same thing, and the only thing we accomplish by re-typing the code is spending valuable time. Does this make an even playing field for other teams? If you look at hardware though, you can legally use designs from previous years and all you have to do is re-synthesize the part. This cannot be done by just anyone and requires certain skills, equipment and valuable time. Based on all this, I feel teams should be allowed to develop code and re-use code every year or improvise. I hope you see the difference and I hope FIRST comes up with a solid ground for a rule like this, whatever it may be.

chris31 05-12-2006 18:18

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Billfred
I'm not so sure--I believe that you can phrase it in simple enough terms. Here's my attempt:


Quote:

Originally Posted by Andy Baker
How is is not fair to have the team's code on the team's site? There does not need to be a central site for this.

Andy B.

ps... btw, everyone: whatever is discussed here is by no means a decision we all must live by. This is up to the GDC. They can either incorporate the suggestions in this thread, go totally against them, or even make us all write code on banana peels with our fingernails.


I just meant it would be easier for everyone if the code was all in one place. Or atleast a place were we could find a list of every teams webpage. Maybe a list of all the teams websites exists and I just havent seen it.

Alexa Stott 05-12-2006 18:39

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Dave Scheck
I disagree with the proposed idea.

My reasoning is that I think that this will punish teams that actually take the time to create well written, reusable code. They have put in the time to create this product....why should they be forced to share this with a team that doesn't put in the effort? What is the motivation of a new team to actually learn how to write code when they can go out and download the prewritten code of their choice? What is the motivation for a team to post their code in a legible format?

I have to agree with David on this one. As a programmer, I have witnessed how much time, effort, and frustration it takes to maybe even get a small part of the robot working. You write some code, test it, change it, test it again, etc. This could go on for hours. How is it fair to that team that sits there writing and testing the code to post it online for anyone to see?

I can see how this would help enforce the rule, but the outcome isn't fair to the programmers that spend 14-hour days writing code for their robot only to have a team that is too lazy or too inexperienced come and just copy it all. Moreover, how is that helping to teach students how to program if they know that pre-written, working code is out there for them to just download? I know you can all sit there and say "Well, they would do the right thing...they would be GP and not steal it...blah, blah, blah." But honestly, if you know you could skip those hours upon hours of coding and spend 2 minutes downloading someone else's code, you know you'd be typing in the URL to that site.

Don't get me wrong-I'm entirely open to helping other teams with programming help if they PM/email/IM/approach me at a competition asking for it. I'm more than willing to let people look at our code to get an idea of how it works. But this brings to a new level. At least when they talk to me directly, I know what their problem, unlike the people that would be downloading code from this "central location."

Dave Scheck 05-12-2006 18:41

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Kris Verdeyen
They aren't forced to do anything - in the propoal, those teams are free to do the busy work of re-typing everything.

How is saying "if you're going to reuse all that stuff you already did, you have to waste your time to re-type it" not forcing? Because it has the condition that you don't have to reuse it? I don't buy it. We're here to teach engineering skills, not busy work. If you go back to Dave Flowerday's post about what our team went through at Purdue, I consider that a punishment. We had kids that weren't able to enjoy almost a full day at a competition because they had to perform busy work.

Quote:

Originally Posted by Kris Verdeyen
Because for anyone to be able to use another team's code, they will have to understand it first. Even the best-intended public code (kev or usfirst) still requires hours to fit into a complex scheme like what's used on a robot.

Granted, but it's not understanding how it works but understanding how to work with it. My previous post explains my stance on this.

Quote:

Originally Posted by Kris Verdeyen
So that other teams could use it? I don't know. Maybe so they don't have to retype all those comments they left out? Because it makes them feel good? Altruism? First fame? They're trying to get into heaven? It seems more stupid to purposefully obfuscate posted code than to simply re-type it.

I agree that obfuscating the code is more of a hassle than its worth, but I guarantee you there is someone out there that will do it. Then how do you handle that? Require that code be posted in a certain format? Do you then require teams to support any code that they make public?

Quote:

Why should completely spilling the beans on last year's robot be any different?
There's a difference between sharing a design and handing something out.

The teams that want to make themselves better will seek out the assistance of the teams that they want to learn from. The teams that want to make others better will seek out teams to teach what they've accomplished.

I can't tell you how many requests we received in 2003 about how our autonomous worked. We gave explanations both at competitions and remotely to anybody that requested it. I have seen many teams behave in the same way in all aspects of the competition. Want to know how 71 dragged everybody around the field in 2002? Want to know how 33 automated their arm in 2005? Want to know how team X did Y? Just ask. That's one of the foundations of this program that makes it so great. I can't think of another program in which participants share their secrets.

I really don't intend my involvement in this thread to be an argument. I just think that if we are going to have rules intended to level the playing field, they shouldn't hurt teams that put the effort in to go the extra mile.

MikeDubreuil 05-12-2006 18:54

Re: Ethics 101: To re-use or not to re-use?
 
Let me start off by making a bad analogy to hardware. In the past 5 years the hardware guys have made a significant improvement in the FIRST program by encouraging the spread of designs. From multiple speed transmissions to omni-wheels to some craziness called swerve drive- they are sharing everything! Yet, on the software side we want to keep our code hidden. Teams put their electronics in black boxes. It's getting bad. Maybe we should take a play out of the hardware guys book?

Here's my 10 cents...
Teams have a 1 season monopoly on their software. If a veteran team wants to re-use code from a previous year they should be required to post it in a "Software Portfolio" hosted by FIRST. The portfolio is publicly available to everyone. A new regional award can be created for veteran teams who share code, "The Software Award." An award that celebrates a teams generosity and their ability to write good software with even better documentation.

Bharat Nain 05-12-2006 19:12

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by MikeDubreuil
Let me start off by making a bad analogy to hardware. In the past 5 years the hardware guys have made a significant improvement in the FIRST program by encouraging the spread of designs. From multiple speed transmissions to omni-wheels to some craziness called swerve drive- they are sharing everything! Yet, on the software side we want to keep our code hidden. Teams put their electronics in black boxes. It's getting bad. Maybe we should take a play out of the hardware guys book?

Here's my 10 cents...
Teams have a 1 season monopoly on their software. If a veteran team wants to re-use code from a previous year they should be required to post it in a "Software Portfolio" hosted by FIRST. The portfolio is publicly available to everyone. A new regional award can be created for veteran teams who share code, "The Software Award." An award that celebrates a teams generosity and their ability to write good software with even better documentation.

There is still a difference between hardware and software. Many teams did not share their exact design on hardware but what they did was visible and people caught up on their idea. Most teams took the time to teach people what they did too. Software is just like that and people do not need to see a team's code to understand the concept. It is easy enough to write something based on a concept but not for high schoolers. It is easy for professionals or the more experienced. Therefore, Sharing code is the team's business and it should be upto them if they want to share it or not.

Alexa Stott 05-12-2006 20:27

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by MikeDubreuil
Here's my 10 cents...
Teams have a 1 season monopoly on their software. If a veteran team wants to re-use code from a previous year they should be required to post it in a "Software Portfolio" hosted by FIRST. The portfolio is publicly available to everyone. A new regional award can be created for veteran teams who share code, "The Software Award." An award that celebrates a teams generosity and their ability to write good software with even better documentation.

There is a huge difference between hardware and software. Teams post their designs or pictures, other teams take them, and make them themselves. The thing with that is, they actually have to do some work actually making the parts. Or maybe they go and find a way to make it lighter or whatever.

With software, someone has to simply quickly download the files or do a quick copypasta. Maybe they have to go as far as to declare a few variables.

As Bharat as repeatedly said, you cannot compare hardware and software.

MikeDubreuil 05-12-2006 21:38

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Bharat Nain
Most teams took the time to teach people what they did too. Software is just like that and people do not need to see a team's code to understand the concept. It is easy enough to write something based on a concept but not for high schoolers. It is easy for professionals or the more experienced. Therefore, Sharing code is the team's business and it should be upto them if they want to share it or not.

Can you explain... Are you saying that it is okay for teams without software engineers to flounder with software?

aaeamdar 05-12-2006 22:34

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Marc P.
Naturally, this wouldn't make much sense given the change in game play form year to year, but how far off from reality could it be if a team has not much more than a pusher/drive train bot from year to year? In that situation, how would a mentor tell their programming team "sorry guys, the code we had from last year is good enough, so we won't be needing you." More importantly, what do the students learn from that?

[...] such as the camera tracker. Mentor to programming team: "Sorry guys, our code from the camera last year worked so well, we don't need to rewrite it. Just copy and paste it and call it a day." Again, what do the students learn from that?

Marc, as a previous poster said, there are some holes in your logic. I'm not sure how much knowledge you have of the programming process, but in your first example, a robot that simply pushes other robots around, there is (programmatically speaking) nothing for the programming team to do. The default code that you are required to use takes care of this already. R71 would have no effect here, since you would be using the default code each year (which I'm sure doesn't violate the rule).

In your second example, you seem to be out of touch with the way that the camera code was implemented last year. I'm sure some teams last year wrote their own camera code, but the vast majority of teams (including mine) took advantage of the code graciously provided by Mr. Kevin Watson. So in effect you have the mentor saying this: "Sorry guys, we have code already for the camera. Just copy and paste it and call it a day." Maybe you would argue that such code should not be provided?

Paul

aaeamdar 05-12-2006 23:13

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by AtalanteStar25
I have to agree with David on this one. As a programmer, I have witnessed how much time, effort, and frustration it takes to maybe even get a small part of the robot working. You write some code, test it, change it, test it again, etc. This could go on for hours. How is it fair to that team that sits there writing and testing the code to post it online for anyone to see?

I certainly understand where you're coming from here. It can be very frustrating, but I think you're reacting from that frustration. Let me make a couple points.

My favorite language of all time (so far) is Java. For those who don't know, Java is a language that has huge libraries of pre-written code. People from all over the world submit their code to Sun so that it will be included in the next Java version. What's the point? I would say that it's rather like building a pyramid. You can't start with the top layer. You must start at the bottom and build up. Before you can write a game with orcs that attack humans (à la Warcraft) you must first know how to display an orc on the screen, how to get information from the user, and about 1000 other pieces of information. If every time someone wrote a computer game they had to come up with new code to read data from the keyboard, complex games would never evolve because everyone would be too busy building the bottom layer of the pyramid over and over again.

The other point is that no-one is forcing teams to post their code. I myself would have no problem posting my code online for others to use. In fact, if I knew I were doing this, it might go a long way towards encouraging me to better document my code.

Paul

aaeamdar 05-12-2006 23:19

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Dave Scheck
I agree that obfuscating the code is more of a hassle than its worth, but I guarantee you there is someone out there that will do it. Then how do you handle that? Require that code be posted in a certain format? Do you then require teams to support any code that they make public?

First, I beg everyone's forgiveness for posting three-in-a-row. My short response to this: no one is going to catch you if you re-use code and don't post it online. I'm not recommending it, but I'm simply saying, there's no reason to maliciously obfuscate code. However, I'll acknowledge the possibility that it might happen somewhere. But: You can't make teams be graciously professional. The best you can do is ask. Intentionally obfuscating code is certainly an example of this. No solution will be perfect.

Paul

Bharat Nain 05-12-2006 23:44

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by MikeDubreuil
Can you explain... Are you saying that it is okay for teams without software engineers to flounder with software?

Yes. Lets face it. FIRST has never really been an even playing field. Some teams have better engineering support over others. Same goes for programming. Some teams, like Wildstang(I only say this because they have posted on this thread) have accomplished a lot as far as programming goes. Their StangPS has been known to all and they have shared their designs. In my opinion, we should be grateful to them for sharing the concept in detail(I think I saw it on their website). They did not have to because they put in the hard work and were privileged enough to have the expertise. On the other hand, I am sure there are many teams out there who have complex code which do wonderful tasks but never release their code or concept to others. Bottom line: its their choice. So understand - I am by no means saying that teams should not share and the not so privileged teams should have crappy programs - because I know FIRST has taken steps to help teams with their basic needs(default code). But FIRST also provides a kit chassis to all teams and it is totally upto the teams if they want to use them or not. Some will, some won't, so what? The bottom line is always inspiration and having a running bot is a good start.

p.s. 25 doesn't have any flourishing software engineers so I am not standing up for my team by any means.

Cory 06-12-2006 00:12

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Dave Scheck
Would you think the same way if this pertained to mechanical design? Would you force teams to make their gearbox design public if they intended to use it from year to year? (I know that the software/mechanical comparison isn't easily made, but humor me).

Quote:

Originally Posted by Kris Verdeyen
Yes.

I agree that the comparison is not easily made, and I've tried, but why not? Year after year, and with nearly every chance they get, FIRST rules in a way that makes the game more competitive, the robots better, the compeitition more fun to watch. Why should completely spilling the beans on last year's robot be any different? It's good for good teams, because it encourages them to continue to innovate, and it's good for struggling teams because it demystifies the champion teams in a way that is bound to inspire them to strive further. It makes the pie higher.

Why is it good to hand someone something on a silver platter instead of making them work to attain it? If you put together all the time that team 254 and it's partners in collaboration have spent developing a six wheeled drive base, I'm sure the figure would exceed the thousand hour mark by far. Why should such teams be forced to give everyone in FIRST a transmission design they can hand to a machinist and get back a week later when it took the original teams a thousand hours to perfect the design?

Now by no means am I against sharing designs. Anyone who wants to know anything about our drivetrain, for example, can feel free to ask me or any other student/mentor about it. I'm sure 968 feels the same way. We'll gladly share pictures, theory on how it works, why we did what we did, what we might change and do differently. However, we are not going to handout blueprints. What's the point of that? What is any student going to learn by handing a sheaf of CAD drawings to a machinist and then receiving a nice shiny transmission back? The answer is nothing. You would be cheating yourself.

FIRST is about learning, and nobody learns anything if teams are forced to share code, mechanical systems, or anything else just to use them again. All that would happen is the original teams efforts are completely ignored and everyone reaps the benefits without any of the work. So much more could be learned by simply approaching a team with a innovative and successful idea and learning about how it works from them, and then implement it yourself.

eugenebrooks 06-12-2006 02:04

Re: Ethics 101: To re-use or not to re-use?
 
<R71> Unaltered software modules developed during prior competitions may not be directly re-used. Just as designs for hardware COMPONENTS may be reused from one year to the next, software algorithms and designs may be reused. However, the specific lines of code must be customized for each robot each year.

The plain English of R71 is clear. It disallows the reuse of unaltered software modules, allows the reuse of software algorithms and designs, and requires that modules be customized for the robot each year. The rule was clear and easy to satisfy, hence no Q&A activity regarding it.

The business of retyping code developed outside of the allowed work periods in order to make it legal is a red herring from a prior season. It did not apply this past season, probably because more than one person saw teams busily retyping their entire robot program in order to legalize it in a prior season, while the "illegal copy" ran the robot during practice matches, and realized the foolishness of this rule. Retyping modules, verbatim, did not satisfy the plain English of R71.

Sharing is one of the key principles of the FIRST community. Sharing has been encouraged and has been expressed in many ways: design ideas, actual parts, actual software, etc..., have all been shared. From the point of view of the FIRST community, there is everything to gain and nothing to lose by sharing at any level that you are comfortable with. If someone walked up to me at a competition and asked for a copy of the source code for our robot I would hand it to them without a second thought. I would like to think that the recipient would learn something from it. The same goes for any of the mechanical aspects and wiring aspects of our robot, in any level of detail. I would encourage every team to share at any level of detail that they are comfortable with as nothing but good can come of it.

I am not one to think, however, that we should have rules that force sharing. Forcing sharing is as much an anathema to FIRST principles as is the notion of seeing a robot covered by a black shroud to conceal "trade secrets" while it is in the pits. There are so many teams eager to share that we need not make teams uncomfortable by forcing sharing upon them.

If the past experience is our guide, the rules for software development will change again this year. The notion of treating the software like hardware misses some of the fundamental aspects of software development. Suppose we were to place the same "customize modules" requirement on CNC software used to turn out identical parts that are used in a team's robot year to year. Just what purpose would customizing the CNC program have, only to have it turn out exactly the same part. A module that implements interrupt driven wheel counters is exactly the same. The end result is the count, no more or less than that. The role of customization here is exactly the same as a rule of customization for the CNC program that turns out exactly the same axle as last year.

I would hope that the rules for software development get changed so that they reflect the nature of the software development process. There isn't any need to customize a software module that provides wheel counters, and that the program for the robot will be customized given that each game is entirely new, is a given. Lacking that, it is best to follow a reasonable interpretation of whatever the rules may turn out to be.

Eugene

MikeDubreuil 06-12-2006 09:50

Re: Ethics 101: To re-use or not to re-use?
 
Their is a significant difference in the ability to reverse engineer hardware over software. Many people can look at an assembly and then create a design from it. Thereby duplicating that assembly without mechanical drawings. The same can not be said about the software. Sure, you can guess as to how the code is implemented. However, you still don't know the design or the implementation.

I think it would be a step forward for teams to share their code. It's against my perception of FIRST to allow veteran teams to dominate autonomous by leveraging years of software development. It might be a good solution in the private sector but not in FIRST.

Jack Jones 06-12-2006 10:55

Re: Ethics 101: To re-use or not to re-use?
 
I don’t know what the big deal is. Many of you have typed more characters here than it would take to program the robot – autonomous mode included. So, your displeasure with the rule can’t be about wasted typing effort. Many have pointed out that the requirements change enough from year to year so that not much, if anything, from the code can escape customization. Since the rule, as all <R> rules, must only apply to what goes in the crate on ship day, then go ahead and start with the old code. By ship day it’ll be tweaked up beyond all recognition – TUBAR. ;) Any code that hasn’t been touched, you can rewrite. You’ll probably find you’ve improved it, if not in function, then in the appearance.

There’s been a lot of discussion about the difference between hardware and software, especially as to why we can’t equate the two. Well, the main difference I see is that with software the raw material is infinite. We can create and destroy it with the press of a button. If we can live with leaving perfectly good hardware behind each year, then having to recreate software shouldn’t faze us a bit.

There are times when I wish the DoD had an <R71>. I often write CAE software to facilitate signature research and analysis. There are a number of dinosaurs from the eighties, usually written in Fortran, that try to predict atmospherics, bi-directional reflection, thermodynamics, and etc. I don’t know how many times management wants us to incorporate this chunk of code from the Air Force, or that from the Navy, into something we can use to predict the performance of future combat systems. They all have this joint meeting of planners, each wanting to leverage their programs, so they conclude we can just write a wrapper around stuff that may, or may not, have worked all that well to begin with. My group prefers to start from scratch with the code, to take the essence of what has been done and bring it into line with the 21st. century. So, there may be some method to the madness of <R71>. It forces us to revisit and perhaps improve upon what was done, instead of dragging along dinosaurs year after year.

ewankoff 06-12-2006 11:25

Re: Ethics 101: To re-use or not to re-use?
 
As i said in my last post and like alot of other people have said, FIRST is about learning. This rule is simply a big sign saying "learn from your code and know how it works" and so no one blindly copies things that they dont really know about (I know Kevin's code is hard to understand but an attempt can be made). Sharing your code is a great idea but in no means should it be the loophole for this rule. Yes teams that put in the hard work should reap the rewards but, these teams should be able to teach new programmers, robot designers, or someone with a question year to year about their code or part. I see copying and pasting code to be the same as sending a coppied CAD drawing of a mechanical component to a machinest. no one learns from anything. If some one learns from part of the robot in any way it is a whole of a lot better. FIRST is about teaching the students and simply copying and pasting or stealing designs is neither a goal of FIRST nor in the spirit of FIRST.

Pavan Dave 06-12-2006 12:07

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Steve W
FIRST is not just about robotics. I believe that it has a higher standard. Gracious Professionalism is just part of it. There have been many threads about following rules. I will state again here that a rule is a rule. It is meant to be followed. It is there for a reason. It can be changed if the powers that be deem that you have a valid point. It is wrong to intentionally break a rule. It is a violation even if it is not intentional. If you break rules then you must live with the consequences.

It is also your responsibility to pay attention to all of the details. If you don't in the real world then you won't last long. As for people being caught up in the "cult" of FIRST, that is not a bad thing. Being caught up on ones self and putting them self above all others is.

I am glad to see that you admit breaking the rules. This will make it easier for the inspectors to find those who intentionally break the rules.

Is it a good rule? Probably not but it is still a rule. It holds the same intent and validity as only 4 CIM motors.

One of my I was gonna post. FIRST stands for a little more than you are giving credit for and help spread Gracious professionalism along with other skills you need to suceed in the real world.

Although some rules seem pointless they are rules none the less and you MUST follow them. But than again programming is often very simlar. What are you going to do? But I believe that the point of this rule is so that the rookies learn how the program itself works and get to work on it and learn something about programming rather than just cut and paste.


Pavan.
118 - Controls

seanwitte 06-12-2006 12:15

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Pavan
One of my I was gonna post. FIRST stands for a little more than you are giving credit for and help spread Gracious professionalism along with other skills you need to suceed in the real world.

Although some rules seem pointless they are rules none the less and you MUST follow them. But than again programming is often very simlar. What are you going to do? But I believe that the point of this rule is so that the rookies learn how the program itself works and get to work on it and learn something about programming rather than just cut and paste.

It's the difference between building up a body of expertise from year to year and starting from scratch. Do you want to start next season where are are now or where you were last December? If you're rebuilding the codebase every season there will be limited opportunities for innovation because a large percentage of the time will be spent rebuilding basic components. It's like writing a GUI library every time you write a windows app. You'll get better at it, but you still have to DO it every time. That time should be spent doing something useful, but that's just my opinion.

ewankoff 06-12-2006 12:43

Re: Ethics 101: To re-use or not to re-use?
 
Yes it may waste time to re build a code base but the rule does not out law reusing code it only states that that code must be adapted for that years robot. The adapting of the code is what makes students learn from last years code. If each year students can understands all the code you are using from previous years and adapted it to work on the new robot it is acceptable to the rule.

Steve W 06-12-2006 14:32

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by seanwitte
It's the difference between building up a body of expertise from year to year and starting from scratch. Do you want to start next season where are are now or where you were last December? If you're rebuilding the codebase every season there will be limited opportunities for innovation because a large percentage of the time will be spent rebuilding basic components. It's like writing a GUI library every time you write a windows app. You'll get better at it, but you still have to DO it every time. That time should be spent doing something useful, but that's just my opinion.

Could you please explain the differences in your statement between hardware and software. As I see it the argument holds equally true with either.

aaeamdar 06-12-2006 15:36

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Steve W
Could you please explain the differences in your statement between hardware and software. As I see it the argument holds equally true with either.

With hardware, teams can take a CAD drawing (or whatever you guys call them), send them off to a machinist, and get the parts back in a few days. Thus, if a team has settled on a certain drive train/gear box/whatever, all they must do to get a new Part X is send it off to a shop. Thus, while teams are encouraged to spend time thinking about ways they could improve their Part X, they're not forced to reinvent Part X from scratch each year (as some interpretations of R71 seem to say).

If you basically take the rule (as some have suggested) to mean that you have to start from scratch (i.e. you can use a pseudo-code/code outline or similar, but no actual code), you're forced to redo each year the simple things. Imagine if every year, teams were forced to do CAD drawings for every part of their robot, even if the drawings were the exact same as a previous year. This is the real parallel we're talking about.

Paul

mgreenley 06-12-2006 15:46

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Steve W
Could you please explain the differences in your statement between hardware and software. As I see it the argument holds equally true with either.

Please correct me if I'm off the mark, but I believe that Seanwitte is saying that by having code that can be built off of previous implementations, programmers can work on adding to the code rather than re-working it.

After reading the thread, I think that the machine part v. code is a faulty analogy because of the information they hold. Rather, I suggest that a source file is closer to the working-drawings that are used to build components. I say this because working drawings are a very information-dense format of representing the idea of a part; In my design class, I wouldn't throw out my drawings at the beginning of every project, rather, I re-work them to speed up the next project to allow me to work on something new. In the same way, the source code is a very information dense format of representing an idea of behavior. I think Seanwitte is saying that by having code modules already developed, instead of re-writing them, they can be tweaked to fit a new situation and then new code and new implementations can be built from them.

The analogy breaks down at the implementation stage, because machining a part takes more time than compiling a program; the information-dense idea to information-diffuse implementation divide is blurred.

However, consider a team that has a CAD file for a part. To make the part, they can enter this into a CNC, go to (Wawa/7-11/Subway/etc...), and retrieve their part. By having this, a team can plan new implementations without worrying about the base every year. Maybe they want to add a turret on their already developed frame? The programming analog here is adding a new function. By having a code base for managing joystick input to drive motor output (lets say the team wrote a piece of code to linearize the input to output and also added a deadzone on the joystick). This year, the team plans to implement the already-debugged code block, but also to add functionality for using the gear-tooth sensor and an accelerometer.

I think that this difference is key to why I am behind the conclusions Mr. Scheck draws in post #62

seanwitte 06-12-2006 17:17

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Steve W
Could you please explain the differences in your statement between hardware and software. As I see it the argument holds equally true with either.

This has already been stated in this thread, but there is a common misconception that you can "design" software in preparation for "manufacturing", similar to hardware. Taking a CAD drawing and turning it into a physical part is a well known process. Taking an algorithm and producing working code is completely different. The only true way to fully define a piece of software is with the source code. People can argue but that is a fact.

Say for any artifact, hardware or software, there is 80% planning and 20% implementation. For a piece of hardware you create this year you get to save 80% next year. You don't get the same scaling for software because you can't fully define it without the source. Since the software is by far the weakest discipline in FIRST, acknowledge the difference and relax that particular rule.

Marc P. 06-12-2006 17:34

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Dave Scheck
Marc

I agree that then end result has to benefit the students. However, there is a hole in your argument.

What do students learn from Kevin Watson's serial port code? That code is so complex that it has the potential to baffle even people that write software for a living. I would never expect a high school student to be able to understand it. Yes they can be taught how it works, but isn't the allocated time better spent teaching them how to use the interface? In this case, I believe that's where the real learning comes from. How many high school students are exposed to serial communication outside of this program? How many have even heard of it? So much can be learned in simply writing a protocol to talk serially between two endpoints. In theory, nothing about the guts of the serial code needs to be known other than "when I call this function, these bits get sent to the other end".

By the same logic, how many students know anything about embedded processors and microelectronics? What do students learn from Innovation First's robot controller designs? Should teams be expected to build their own operator interfaces/robot controllers/radio modems?

There are pieces of hardware and software provided to all teams by the governing organization to use as a starting point in building a robot's functionality, separate from custom team-generated programming. The same idea as IFI providing the hardware applies to Kevin Watson's code- it's provided as a basis for obtaining functionality provided to all teams. I doubt any team simply compiled unmodified camera code and downloaded it to the RC without adding some sort of custom input/output or autonomous code. It's understood overall there are some pieces of code that are necessary to use from year to year, e.g. the default code provided from IFI. But to preserve complete customized team modules from year to year in a copy-paste fashion seems to defeat the purpose of having a programming team for each year. All it would take is one original team to write the code, then hand the flash drive down from season to season.

Quote:

Originally Posted by aaeamdar
Marc, as a previous poster said, there are some holes in your logic. I'm not sure how much knowledge you have of the programming process, but in your first example, a robot that simply pushes other robots around, there is (programmatically speaking) nothing for the programming team to do. The default code that you are required to use takes care of this already. R71 would have no effect here, since you would be using the default code each year (which I'm sure doesn't violate the rule).

While I'm not a programmer by profession, I grew up with BASIC, and wrote PBASIC code for FIRST robots for a number of years ago. I didn't start learning C until the IFI controllers switched a few years back, but I'm well aware of the differences between BASIC and C development, enough so to understand the programming process.

My example was a hypothetical extreme, and yes, the default code would suffice for that function. My point was to show how boring life is for the programmers on the team if they didn't have anything to do. The default code is provided for the purpose of having something that "just works" for all teams to use if necessary. Customization is the prerogative of the team, and generally necessary to achieve proper robot function. Handing completed modules down from one programmer to another is similar to handing them the default code. The only difference is one happens to be more functional, which is great for getting a working robot out the door, but not so great for the students trying to learn what programming entails. To each their own I guess.

Quote:

In your second example, you seem to be out of touch with the way that the camera code was implemented last year. I'm sure some teams last year wrote their own camera code, but the vast majority of teams (including mine) took advantage of the code graciously provided by Mr. Kevin Watson. So in effect you have the mentor saying this: "Sorry guys, we have code already for the camera. Just copy and paste it and call it a day." Maybe you would argue that such code should not be provided?
As I responded to Dave, the camera code provided by Mr. Watson was available to all teams, in the same sense that the IFI hardware was made available to all teams. Of course students would benefit in some way by learning how serial protocols work in rewriting the camera code, just as they could learn how embedded electronics work by dissecting the IFI controllers, but I believe that falls outside the scope of what FIRST is trying to accomplish. I wouldn't expect a programming team to rewrite stdio.h, as it's a standard library available to everyone. But you can't honestly compare custom robot code to globally standard library files or universally accessible code in terms of carrying over from year to year. One is team generated, the other is available anywhere. The team generated code is what the rule is attempting to keep in check. I understand the similarities in terms of the real world application of having pre-written libraries ready to serve common purposes, that's not what this debate is about. This thread was meant to question the reasoning behind this particular rule, which is what my original point was, semantics aside. The purpose of the rule is to prevent teams from maintaining the same code base from year to year, thus putting programming groups out of a job.

Dave Scheck 06-12-2006 18:05

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by Marc P.
By the same logic, how many students know anything about embedded processors and microelectronics? What do students learn from Innovation First's robot controller designs? Should teams be expected to build their own operator interfaces/robot controllers/radio modems?

I think you may have misinterpreted what I was saying. My point was that if the interfaces are defined well enough, the internals of the module don't necessarily need to be known in order to incorporate it into the system. With the RC example, in the typical case, you don't need to know the exact details of what's going on inside in order to program it. Obviously there are reasons for wanting to learn, but every detail isn't required. The nice thing about reusing code (not binaries) is that you have access to what's going on under the hood if you need to know more than what the interface provides.


Quote:

But to preserve complete customized team modules from year to year in a copy-paste fashion seems to defeat the purpose of having a programming team for each year. All it would take is one original team to write the code, then hand the flash drive down from season to season.
I disagree. The chance that the entire codeset will be used from year to year is extremely slim, but the chance that a team will need to count wheel ticks from year to year is more feasible. There will always be customization that needs to be made, but the internals of the low level building blocks could stay the same.

Quote:

But you can't honestly compare custom robot code to globally standard library files or universally accessible code in terms of carrying over from year to year.
Why not? If a team writes a library that will simplify the interaction with a sensor, I see nothing wrong with using it from year to year. Instead of interacting directly with the sensor, future programmers would interact with the library (to which they would have the source code for reference).

Quote:

The purpose of the rule is to prevent teams from maintaining the same code base from year to year, thus putting programming groups out of a job.
Your statement would also be an argument for not releasing default code because it would put teams that only need the default functionality out of a job.

EricH 06-12-2006 22:33

Re: Ethics 101: To re-use or not to re-use?
 
Guys, this thread is off-topic (I think.) What Paul was originally asking was, A. What is your interpretation and what does the rule mean? and B. What is a violation (of letter or spirit) and what violations are acceptable? The thread has now gone from answers to the questions to "This is my analogy and why the rule shouldn't apply" and "You're wrong, this analogy is better and why" and "You're both wrong", and generally being a big confusing mess. (At least, confusing to a non-programmer who doesn't know much about programming and isn't sure he wants to know.)

Now, to answer:
A. The rule is that you can't re-use unaltered modules from year to year, but algorithms and designs may be re-used. Also, the specific lines must be new. Now, what this means (to me) is that you must alter the modules every time you use them. If you have changed a hardware drive module for a different encoder/wheel/gearing, you practically have to change the software module, right? So, seeing as the robots are different each year, there shouldn't be too much of a problem for most teams.

B. The letter is as Paul quoted. The spirit is that you must change the code between years. For me, a violation is when a team used the exact code that they used the year before. Doesn't matter if they retyped it or not (and that discussion was over a rule that applied to Fix-it windows and similar things, if I remember correctly.) What violations are acceptable? For me personally, none. I prefer not to do anything that might be perceived as against the rules.

There is another point that I wish to bring up, however. This rendering of <R71> is from last year's manual. We don't know what the corresponding rule in this year's manual will be, or even if there will be one. So this whole discussion could be a moot point on January 6th.

Alexa Stott 07-12-2006 15:48

Re: Ethics 101: To re-use or not to re-use?
 
So does that mean that Kevin Watson has broken the rule? Most of his code is the same from year to year.

trilogism 07-12-2006 18:21

Re: Ethics 101: To re-use or not to re-use?
 
Hypothetically speaking:
If a team has used the same drive train 4 years in a row, and plans on using it again for a fifth year, but each year they build a new one (so they are using a design but not the pre-made structure), does the programmer still have to completely rewrite the drive code, even though it would most likely be nearly or completely identical to the code from the previous four years?

Alexa Stott 07-12-2006 19:10

Re: Ethics 101: To re-use or not to re-use?
 
Quote:

Originally Posted by trilogism
Hypothetically speaking:
If a team has used the same drive train 4 years in a row, and plans on using it again for a fifth year, but each year they build a new one (so they are using a design but not the pre-made structure), does the programmer still have to completely rewrite the drive code, even though it would most likely be nearly or completely identical to the code from the previous four years?

According to the current rule, you can't, because then some of the lines of code would be <gasp!> identical! :ahh:

But you brought up a good point. According to some people in this thread, no line of code could be the same from year to year. Now, if that is what the rule is actually saying, that means the simplest things, such as pwm01 = 127; would be illegal. Also, as it has been stated before, this rule would make using Kevin Watson's default code illegal, since there are few changes from year to year.


All times are GMT -5. The time now is 13:49.

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