Espruino target audience?

Posted on
  • What ultimately is the grand vision for the Espruino project? Is it ultimately the hope that Espruino will be adopted by professionals and used in a lot of consumer products? Or is it intended to be more of an intro-to-embedded devices product?

    First of all, I hope it's the former. And it's incredibly impressive what @Gordon has been able to build here. I get the impression that he's single-handedly building the entire embedded JS platform, which is f****g amazing. Something I could never do, I'm just a simple JS developer and inventor.

    But certain aspects of the project lead me to wonder if the latter might be a bit true, or if there's a little less focus on one over the other, than there probably should be. For example, the graphical editor seems to me like more of a nice-to-have than a mission-critical sort of feature. And to a lesser extent, the web IDE also. It's really great that I can paste some code into a box, hit run, and see it just works. That's awesome. But once I've decided to start building my product, with Espruino at the heart of it, I'm not going to be working in the web IDE. I use Sublime Text, and the web IDE doesn't have any of the productivity features I use. Performing a copy-paste every time I want to run my code is nuts. I'm confused why there didn't already exist a CLI tool to solve this. True, there is a CLI Espruino tool, but none of the needed features were included.

    My point is this: I would have expected the most important features of the web IDE to be available from CLI before a graphical editor was made, if the focus is on professionals. I think that having a focus on professionals will be important to the success of Espruino in general.

    There's a couple other items I'd like to draw attention to.

    I've been playing with MQTT and my impression is that this interface isn't as much of a priority as other issues. For an IoT platform product, this seems like an important thing to not only support but have in a very robust state. I would think that MQTT + encryption would be very important for professional applications.

    I do realize of course that there's zillions of applications for Espruino's, and people building robots will probably care a lot about motor controller stuff before they care about MQTT. And this actually goes to my point, which is that Gordon is taking on sooooo much, I think it's really important to not build certain things, like a graphical editor. The cost of having a graphical editor is not just building it, but then supporting it over time. Case in point, in this thread:­298305/#comment13410511

    It's because the Web IDE was originally made as a website where each file executed in the same scope, and adds itself to the global 'Espruino' variable - I can't just 'require()' everything as-is. Ideally I'd rewrite every file to handle both loading styles, but I don't have the time to do that while also checking it still works fine as a Chrome App, NWjs app, and on the Espruino website.

    Gordon, I'm concerned that you've stretched yourself too thin. I would like to offer the friendly suggestion that you even go so far as to drop support for some things, just so you can focus on the truly important areas. Aside from features like this/that whatever for MQTT/BLE whatever, I think unit tests should be in place and with complete code coverage. I use Istanbul and recommend it. I haven't looked at the core Espruino code and don't know if it has tests, but it looks like the Espruino IDE and CLI doesn't have tests.

    The thing I'm building is a medical product, and so scrutiny is going to be especially high. JS already has a bad rap (which isn't deserved), but should detractors take a very close look at Espruino under the hood, I worry that the criticisms will be a long list. I suspect people will make blanket criticisms that the system is not robust enough for professional use.

    The value of having JS at the heart of the product is the added agility, so it makes great sense to use Espruino as much as possible. Also, the ability to build the product and services all in one language is again a major asset. So my strong preference is to continue using Espruino even in my end product. But overall robustness is a real concern for me.

    The web IDE has been buggy lately, and I don't know what's going on. Occasionally the output pane becomes unresponsive, and I have to restart the editor. Then this other issue, I just saw this mystery error tonight:

    Uncaught Error: String too big to convert to float
     at line 1 col 6341

    ^ not in my code. No idea where this is coming from.

  • Ideally, I'd like Espruino to be used more professionally. I'd love to see it in a few geeky consumer products and exposed to the user - but I think that's unlikely :)

    My problem is my work is driven by where I make money.

    Companies do use Espruino, but on the whole they contribute very little back. They'll (maybe) buy one or two Espruino boards and ask for support on the forum, but will then stick the Espruino firmware on their own boards for production which means I don't make anything. Nobody licenses Espruino and very few companies have ever paid for support - which makes it a very bad deal for me.

    So I have two types of customer:

    • Personal/hobbist user: More laid back, buys one or two boards, asks the odd question (probably with full code) and is happy when answered, posts up what they've done which is great for publicity, and they also help other users.
    • Commercial user: Often under time pressure, buys one or two boards but not more, asks a lot of questions, usually with no code and rarely posts what they're doing because it's some secret part of a product. Rarely helps others.

    You can see why the personal one - right now - is a lot better for me and Espruino as a whole, so they're who I'm most interested in.

    If commercial customers actually made me money - for instance they used Espruino boards in their products or paid for support - then I would definitely put more effort into that side of things.

    That looks like it could change with Puck.js, but in the last few years I can only think of one company that made a big purchase of Espruino boards, but I know of several that are using the software on their custom hardware in commercial products.

    The web IDE has been buggy lately

    If you find anything that could help with that I'd be very interested to know - like what OS and if there are any log messages/errors in the console.

    Very little has changed with the Web IDE itself in the last few months, so if there is some issue it could be related to a Chrome update.

    Uncaught Error: String too big to convert to float

    Are you using a custom build? that error would appear to be coming because of something in process.env (I suppose there's a small possibility that the git hash in that version just happened to be all numeric).

    Gordon, I'm concerned that you've stretched yourself too thin. I would like to offer the friendly suggestion that you even go so far as to drop support for some things

    I am stretched too thin - but I have a feeling you're suggesting I drop support for things that the majority of my users use and focus on what a small number of people want - which is the exact opposite of what I should be doing.

    I'm not stupid - if the majority of people really wanted the CLI over the Web IDE then I'd be spending more time on that - but it seems like they don't, and most of the rest find the current CLI works well for their needs.

    If you really want support for some feature for your company then get in touch and get them to pay me to implement it. Or if your company has placed an order for hundreds of boards then absolutely - I'm willing to go out of my way to make sure things work smoothly.

    ... and yes, there are a lot of tests for the main Espruino. The IDE/CLI end up being a lot more painful to write useful tests for though - I'm not convinced that'd be a particularly good use of my time.

  • Well, I have been concerned about how Espruino will be profitable for you when marketing to professional users. I have a startup and no funding, pre-revenue, but if you have a support package at the right price for us, I'm happy to buy.

    What code I have written, I've shared. Much of what you're developing is too technical for me to contribute to, but I have been a participant where possible.

    You mention the interest in having the Espruino in the product being exposed for end users to access. That's a part of my goals as well, for what I'm building.

    Will follow up in private message. Thanks for the lengthy and thoughtful response.

  • I'll reply properly in email, but...

    If you're going to be using Espruino boards in your product and exposing Espruino to the end-user, that's amazing! I think in that case it's basically a win/win position and I'm happy to help promote your product however I can.

    Just to add one thing I didn't really say: Espruino is designed first and foremost to make embedded development easy. If most people can get started and use it fine but 10% of people find the IDE a bit 'wet' (but are skilled enough to work around it) then that's a good compromise IMO.

    In an ideal world we wouldn't have to compromise, but sadly I am quite restricted by what I can work on at the moment.

  • @Gordon @CriscoCrusader

    There are discussions here that could lead to decisions could impact many users here -If possible can you keep this discussion public, or at least publish what outcomes arise?

  • I think most likely this'll be to do with how stuff works with @CriscoCrusader's business in which case it's only fair to keep things private.

    But totally - any big changes to direction for Espruino will get discussed here. I don't see any huge changes coming soon, but either way I'm not about to abandon everyone that's helped get Espruino to where it is at the moment - hopefully how Espruino's developed over the last few years has shown that :)

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview

Espruino target audience?

Posted by Avatar for CriscoCrusader @CriscoCrusader