Why doesn't VEX make their software free or open source?

I have always wondered why VEX’s software isn’t free (as in freedom) or open source when solutions like PROS are being maintained. Especially when software like VEXcode V5, IQ, etc. are already free (as in $0). There isn’t any incentive when it comes to money.

I could understand why they wouldn’t open the code to the firmware/brain software as they probably don’t want people making their own robots and selling them (although this could be averted with the right license).

I think that making their software free/open source would be a great benefit to both them and the VEX community as a whole. It could let the users contribute and customize the software for their needs. Not only that, but I think that it could give VEX a position as one of the best “open source innovators” potentially boosting their popularity and or revenue.

So why doesn’t VEX license their software under a license like the GPL(v3), MIT, Apache, or etc.?

5 Likes

Welcome to VEXforum

Plenty of reasons for companies not to release source code in terms of business value vs additional cost to support structure answering questions about the source code that was released. More importantly, majority of the VEX user community does not really care, nor could contribute (realize that VEX software is used by kids in elementary and secondary classes and clubs who are just learning).

Mine is just a single perspective - one who was there at beginning of Free Software Foundation’s genesis RMS free software manifesto, to part of organizations that assure that intellectual property was protected (yes, that includes MIT) by assuring public disclosure was not made prematurely, lest lose rights in international territories…

In this case, not a strong demand nor benefit business case for releasing all source code.

Furthermore, this is an odd first post to make half hour after joining the forum.

3 Likes

I was just very curious.

But, I still think that they have everything to gain by releasing the source code to the users of their programs. It could be many young programmers’ introduction to free/open source software.

Not only that, but there are many users that refuse to or can’t use VEX’s software due to it being proprietary, for one reason or another.

1 Like

As someone who prefers FOSS software, I just defaulted to PROS which among other things, is FOSS* and (more importantly for me) supports Linux.

I’d guess that the number of Vex-using Programmers who are aware of the ‘real world’ of coding and then have a license preference, and dont already prefer PROS (with it’s standard toolchain and editor-neutral CLI) over Vexcode is tiny. And since PROS exists, Vex employees probably have priorities other than catering to that small group.

I’d also bet that zero students using Blocks know what software licenses are.

*

PROS can’t be compiled without the proprietary SDK

4 Likes

A free/open source SDK would also be very nice to have. Because without it, a working version of PROS would be considered proprietary.
propritary

I absolutely agree with you here. It would be a great teaching tool to see, considering you can actually use it. They are already the head of the game: there is no competition really. They have nothing to lose with making it open source, as you said. I know I have been wanting an open source vexcode for a while. While I may not be the Giga chad of the vex forums, that title would go to @jpearman, I give my stamp of approval lol

I’d like to see all of the API’s released and usable to external people. I think that the RobotMesh Studio is a far superior product, it’s got the ability to do return values from functions, something I do all the time in my code. The VEX products lack this.

And the closed API for VEXIQ-V2 means I now have to either deal with split teams, older ones still using RobotMesh or pulling everyone to the VEX code.

I get that the core system is part of the safety system (when in doubt turning the robot off) But I also think that open API’s would be better. I have a lot of very smart high school roboteers and University students that could contribute code.

I’m not sure why there should be a block on adults coding key infrastructure, because that is what is going on now. I’d love to have my skilled javascript programmers adding into the blockly interface to expand the options.

6 Likes

You wouldn’t happen to have any power over decision making like this, right?

Sadly no. I’ve made some efforts in the past. but VEX has made it clear they are keeping all of this in house.

3 Likes

Hello! I’m Adam from 12350B Gear Grinders. As some who’s in middle school doing vex robotics I would like for the SDK to be public the only source files I could see is the header files which only tell you basic information like what arguments functions take in.

But not much else; Also I feel like yeah, it would be a great learning experience for many people. One of the arguments is that vex is made for kids in school but I’m in middle school about to go to 7th grade and I know Java, Some C++, HTML, CSS, JS, and Some basic C# I learned programming very early and I feel like not all kids are completely oblivious about programming. One other argument is that it would cost extra money for the company to answer questions about the source code but, we are literally talking on a forum right now and again the community could figure it out and help other people on the forum.

The only real reason vex might not release the source code is because people could hack it and get unfair advantages in matches.

Also I know it’s not very impressive but:

3 Likes

Looked at your code on GitHub. I like it, though we have a different style of coding. You use header files, which I abuse in every single application EXCEPT vex where I have everything in one disorganized file lol, so that’s good practice. I would say for the battery capacity to have an else statement saying “maybe you should charge it”, just for consistency. Also, I’m no computer scientist, but I don’t think it’s a good idea to have something as specific as 83.14159265359, even just for readability. 83.14 is fine. I do have to say though, I love the compactness of your code, its use of the Standard Library, and the fact that you use vex::task, overall good programming.

1 Like

Thanks, I’m new to C++ and I’m trying to do my best with the coding. I originally learned Java so I guess its not a massive jump. Also I’m trying to make the code as good as possible so my team members don’t blame LITTERALLY EVERYTHING on my coding. Which GitHub did you look at? The Gear Grinders one or my personal one because I updated the Gear Grinders one last night. In the April folder 4-23-2022.

1 Like

The gear grinders one. You’ve evolved from the cursed language which should just die already to a true chad language. Burn Java in hell :sparkles::sparkles::sparkles::sparkles:. Btw, try to focus on one language at a time, doing JavaScript CSS HTML might be possible on its own, but lord Jesus c++ is a whole other demon. It’s simple, and then it’s not. If you want to learn a lot of c++ I recommended the c++ playlist by the cherno on YouTube, it’s been my go to for a while.

1 Like

I do HTML, CSS , and JavaScript on the side for a website.

How many lines of code do you have in the file?!?!

1 Like

You can actually see the header files for vexcode. I don’t know how to do it on other operating systems, but at least on windows you can go to C:\Program Files (x86)\VEX Robotics\VEXcode Pro V5\sdk\vexv5\include for all of the vexcode header files. 99% of the stuff in there can be found by just looking at the documentation, but it can still be fun to read through. (Also don’t change any of the files because it’ll just break vexcode)

2 Likes

Yeah, That’s what I was talking about it’s pretty fun to look through. Gives you some info too.

like 600 total or something idk.

For MacOS go to /Applications/VEXcode Pro V5.app/Contents/Resources/sdk/vexv5/include.

1 Like

Bro I have 15 different files, one for each autonomous, one for each of the motors (claw, arm, drivetrain, etc), and one for the buttons and main. For each of the motors I have a namespace (arm::, claw::, drive::, turn::, etc).

I think I have too much obsession with organization.