[Split Thread] Differences between PROS and VEXCode and Respective Documentation

Connor, I’m getting vibes from the last time you went on a tirade against PROS here on the forum.

So here’s the deal. I’m going to go point by point through your posts and point out numerous inaccuracies (as I have done several times in the past now). However, the ultimate problem with your posts here is your attitude. This is a collaborative environment where we can come together to learn new things and help inspire students to learn real-world STEM skills while competing in robotics. There is no need to demean the freely released work of others in the manner you are currently. If you want to help, contribute patches to the projects you are trashing (they are all open source for this exact purpose).

The irony of this statement is astounding. Are you seriously saying that having no documentation would be superior to PROS’s documentation? And how would having no documentation be superior for new students learning to program!?

Additionally, the assertion that VEXCode doesn’t have documentation is plain false. VEXCode has an online API reference, as well as documentation within vexcode and the VEX VSCode extension themselves.

James is indeed an invaluable resource for students who use VEXCode on this forum. But, treating a person as a substitute for documentation as you propose is not ideal, and while I can’t speak for him I would imagine he would appreciate it if more people utilized the documentation that exists rather than going to him first.

This is plain false. There are countless examples of students having trouble with PROS (and VEXCode) being helped through back-and-forth troubleshooting over the course of hours and days in a number of servers. This is true even for high level and fairly complex problems, and can involve hundreds of messages back and forth. People will be directed to documentation first if their question can be answered directly by it, which reduces redundant information and saves the time of everyone involved. However, if they come back and still have questions that are not answered by the documentation (as has happened many times), there are dozens of users ready to help them through whatever challenge they are having.

Again, this is false. Here, let’s take a look at a page of the PROS 3 docs:


Here we can see that the function prototype and example code utilizing that function are clearly delineated, as they are throughout the documentation. Let’s take a look at the PROS 4 docs:


Please explain where this “zero visual differentiation between a header and code” is in this screenshot.

This is the first of several times where you imply that the PROS team has deliberately made their solution hard to use for students. This is not only patently false, it is hurtful, offensive, and it wrongfully impugns the character of the students who donate their time to the PROS project.

First, Okapilib is and was always a separate project from PROS, developed by a different group of people, so I don’t understand the relevance here. Second, what part of the okapilib documentation is dated? The site uses doxygen, which is an industry standard tool, and the new PROS 4 docs use it as well, and I’m reasonably certain the VEXCode API reference uses it in some manner. Doxygen is a great way to tightly couple your documentation to your project’s code, and provides a standardized and modern layout for the documentation it generates.

As for Okapilib being unintuitive for new programmers, Okapilib was never intended to be for teams just starting out with C++. Via rule G4, teams must be able to understand how the libraries they use work and explain them to judges. If a team isn’t capable of reading a C++ function prototype and understanding how to use it, how on earth would they be G4 compliant while using something like Okapilib?

I that instance, I think it’s fair to say that with your level of knowledge at the time, it would not have been G4 compliant to use Okapilib.

There are no “formatting” differences between VEXCode V5 and VEXCode Pro V5 They use the exact same API, but with a different editor and file format.

Spins faster? Yes
Is more powerful? No.
The built in PID on the V5 motor is plenty willing to use the full 12V available when the motor isn’t spinning at its target velocity. This means that the built in PID absolutely is capable of producing peak power output from the V5 motor (which happens when loaded to around 50-60% of rated RPM).

Friction isn’t really the relevant factor here, especially on a drivetrain. The most important variable is how much load is on the motor, whether it comes from friction or from trying to propel a metal robot around. The most relevant use case for the extra speed voltage control gives is very low friction, high speed flywheels, where the extra 10-15% velocity can enable infrequent long range shots.

Right. @BattleCh1cken stated that Okapilib is no longer maintained. You stated that Okapilib is no longer maintained. Okapilib’s repo states that Okapilib is no longer maintained. Where is the disagreement here?

As noted on the front page of the PROS 4 docs:

Note

This website is for PROS 4 beta documentation and is still a heavy WIP. Expect to see bugs and rolling fixes to them. Please report any bugs to our discord.

The clawbot tutorial you’ve linked to is clearly broken and a WiP. It’s not fair to judge the docs on this page alone. Let’s take a look at an example from the docs pages that most students will be referencing regularly, the API docs:


The example given here is more than enough to understand how to use the function in question.

What is unnecessarily verbose about this example? I think it is a good example that also tries to demonstrate good coding practices such as the utilization of constants, and even displays the returned value so that students can see how the value displayed reacts to the potentiometer being turned. Would I write my code exactly the same way? Maybe not, but I think as an example usage for the function, this code is perfectly adequate.

You are misunderstanding PROS’s target audience here. The goal of the documentation is to document how to use the PROS API. The goal is not to teach students C++ from scratch. From the PROS 4 documentation:

Learning C/C++ is essential for using PROS.

That being said, anecdotally, I came into the 2018-2019 competition year with zero C++ experience. Through trial and error, and through reading the PROS docs, with very little outside C++ reference, I was able to start my C++ learning and program my robot in C++ for that year. So, despite it not being the goal of the PROS docs, the PROS docs were sufficient to teach me enough C++ to get going with programming my robot. And for the record, so were the Okapi docs and tutorials, which again I was able to utilize to get going with Okapi despite little C++ knowledge prior. So, I disagree with your assertion that the PROS documentation is extremely unfriendly to newcomers.

The code you’re pulling from here was in an API reference, not a tutorial. It does not make sense to have slightly different “beginner” and “advanced” examples for every function in the API reference. And again, teaching C++ from scratch is not the goal here so simply demonstrating good C++ practices in examples is more than enough.

This is an outrageous assertion, and is unbelievably insulting to the over 10 years of efforts from countless students and contributors to the PROS project. You can make statements about how one programming environment is easier to use than another, or how you prefer VEXCode over PROS, but to assert that the PROS team goes out of their way to make their project difficult for students to learn and use is an egregious overstep, and I think you owe the entire PROS team an apology for this immediately.

Every student here has those resources. Here you go: https://www.learncpp.com/

You don’t need to know advanced C++ to use PROS. You can get by with an incredibly basic understanding of variables, functions, and control structures which can be gleaned from the first few tutorials on that page. I know this because I and many other students I know were able to do just that.


Connor, you are free to guide students to use VEXCode when they ask for such guidance on this forum. You are free to list the reasons why you think VEXCode is better. It is not ok to attack the character of the PROS developers and maintainers. That is not what this competition is about, and it only serves to demotivate those who are doing their best to make things better for the students who compete in this competition. I hope you reflect on this and issue an apology to the entire PROS team promptly.