Thanks, Kevron, Ming and Ian, I really appreciate all of the different perspectives. I'm still looking for more, if anyone has more comments! This turned into a bit of an essay, so I'll break it up into a few sections.
Everything to Everyone
I think that given this is an open source, volunteer project, we have to avoid trying to be everything to everyone. When I was full-time at Ford working on OpenXC, I was a bit more confident that we could make the car a good the first programming experience a new developers. I spent a lot of time documenting the installation and setup, and a lot of my on-site training was for things like installing and getting familiar with the Android tools and explaining CAN.
I'll admit that was sometimes exhausting. I don't think there's anyone with enough volunteer time or energy to continue with that effort. I think the docs should start to defer a lot more to the rest of the Internet.
While we don't want to discourage anyone, I don't think that OpenXC should be most people's first experience with programming. If you've never used Android, the command line or Git before, this is probably not the right place to start. We're working to get the Android library updated to work with the new IDE from Google (Android Studio), and at the same time I think I'll trim down the amount of Android setup docs on the OpenXC site to make it more manageable.
Standards
Kevron, you brought up some great points about the merits of the draft standards and the other projects out there like your AMB. Ideally we do standardize around a data format used throughout the industry. In almost every case I would defer to actual industry members.
However, from an outsider's perspective (i.e. mine), GENIVI and the W3C are obtuse. Where's the user-facing documentation for the GENIVI Vehicle Interface or the W3C standard you mentioned? I haven't seen any of the automakers really embrace GENIVI's efforts either, so I don't know if that's a winning path.
Unfortunately I don't think there is very much interest in opening up vehicle data from the OEMs. I spent almost 2 years evangelizing open vehicle data as a Ford engineer and met a lot of people in the industry - I have very few concrete results to show for it. That's not to say someone else can't be successful.
Take a look at Tesla, perhaps the most forward-thinking automaker when it comes to software. A huge part of their car's software supports OTA updates, they have a mobile app that integrates with vehicle functionality, the car has an always-on network connection, and they even do active network monitoring to protect their customers from malicious hacking.
Even with all of those positive signs, there's no documented data format for their CAN or Ethernet networks, they don't publish or support their web-based API (it's only somewhat known because it's been reverse engineered), and there's no user-facing data port in the car. If they don't have enough incentive to provide a data interface to their customers, I don't have much hope that VW, FCA, GM or Ford will either.
Lack of Data
Ian, this gets to your point about a lack of good examples of what you can do besides read a few variables. Honestly, that's all you can reliably do for all cars out there on the road. You might be able to find some one-off examples of someone that's been able to reverse engineer a message to roll up their windows or pop the trunk, but it's hard to scale that because there is no guarantee it works for anyone else.
Because of that, Kevron, I totally agree that this space is inherently fragment. I think that's true because we don't have blessing or support by the automakers. Only a tiny part of data in our cars is standardized and legally required, and it's uninteresting to the almost everyone except regulators (I'm talking about OBD-II). Without having any more standardized data, we can say some custom data field might work, but because of the vast array of cars out there, we can't provide very good support. This group is littered with people saying something doesn't work on their particular car, and there's just not much anyone can help with. Sometimes I feel like I'm trying to help someone fix a washing machine I've never seen from 8,000 miles away.
Take a look at
Automatic - they use OBD-II and I think even partnered with a few automakers to get some extended non-standard data, and still all they can do with the car is calculate your MPG, decode the check engine light and monitor your speed. If that's all a well-funded company with over 50 employees can do, I think we're fooling ourselves thinking an open source project can be better. most of Automatic's innovations are centered around the smartphone, and just use the Link device attached to your for a little bit of context.
Vehicle Interface Hardware
I like the ideas of AMB a lot, but the hardware is a limiting factor as you mentioned. Intel's Edison has been mentioned a number of times, but one of the advantages of OpenXC that kickstarted it in the early days was having a vehicle interface that fit snugly into the OBD-II port. I haven't seen an Edison board or anything similar in such a form factor. A large percentage of people using OpenXC require something like the existing VIs - no cable, it must be powered by the car, etc.
I don't doubt that some awesome new hardware is possible, but we don't have a regularly contributing electrical or hardware engineer that could design and manufacture such a thing. I've been very hesitant to extend the VI firmware to support any more platforms because there isn't really a critical mass of people around a single, capable CAN interface. They seem to fall into a few groups:
- Expensive and proprietary. No interface for custom code.
- Inexpensive, but of poor quality and poor performance and few features - see the OBD-II dongles on eBay.
- Reasonably priced, but not widely available. I'll include the OpenXC reference VI here because while it's open source, Ford is the only known company to every make them.
Open source hardware would be cool, but it's also not a requirement for me. The CrossChasm C5 is the best, most available VI supported by OpenXC right now, and it's closed source hardware. I don't think the open source hardware community has quite figured out the incentives for releasing something that costs so much money to make (see Makerbot), but that's another conversation. I have a new
CANBus Triple that might be another good option if I can get it compatible with the OpenXC message format, but again, it's just one guy with a successful Kickstarter and isn't super widely available.
Summary
This leaves me feeling more like OpenXC should be oriented more towards security researchers and confident hackers, instead of pro-sumer level car owners and tinkerers. Some helpful pointers towards possibilities for data would be nice, but these people can also find our own way.
(Personally, this is an occasional weekend project and spending that time dealing with standards bodies doesn't sound like much fun. I'm not the only voice to speak for OpenXC, so I'm not ruling it out, but I don't think it would happen without direct industry support.)
Chris