Great hardware. The software? meh

Of course I do not mean to hurt anyone’s feelings with this post, but
blunt honesty literally guarantees that will happen. So be it. You can
TLDR this, but I actually care if Formlabs succeeds, I know this is a
perspective you need to understand, and all of this is true.


The Preform software is not good enough for the kind of Company I
think Formlabs aspires to be. It certainly is not anywhere close to
the caliber of the Machine itself, which I believe is absolutely
excellent, both from an Industrial Design and an Engineering
standpoint. Preform, on the other hand, is all about ‘looking’ slick,
but functionally it’s a train wreck.

Where to begin…

Reporting individual ‘bugs’ is pointless, because the entire
application is completely flawed. Sometimes it’s simpler, more
efficient, and more cost-effective to simply admit a program is a
failure, cut your losses, and just start over from scratch. This is
definitely one of those situations, because ‘fixing’ all of it’s flaws
requires a completely new program. The Form1+ was designed for
Inventors, sophisticated Artists, and Engineers. The application that
drives it needs to embrace and reflect that fact.

Here are just a few of the reasons Preform needs to go:


It’s ugly, overly simplistic, not configurable, wastes screen real
estate, fails miserably at it’s most important core tasks, and it’s
incredibly slow. More developer time was spent making the build volume
box ‘zoom in’ when the app is opened, than making useful features that
actually help users get work done. It’s like they read 'How to write
intuitive GUIs", and then did the exact opposite. It’s more about the
developers getting their rocks off on what they perceive as ‘cool’,
rather than wriing a program for users that’s intuitive, fast,
utilizes the skills and paradigms user’s already know from multiple
CAD program interfaces, and has the functionality that users actually
need to leverage the excellent Form1 effectively. e.g. They failed.

  • Why is the rendering and movement so horribly slow? Load a model in
    meshlab and manipulate it. Then load it in Preform. Everything is an
    order of magnitude slower in Preform. Why?

  • The ‘flyout’ view widget is incredibly useless. It’s behavior is
    non-intuitive, and it’s use is frustrating. For instance, when you
    mouse-over it, it moves away from your mouse so you need to move the
    mouse again to get to it. Once you do manage to keep it still, the
    buttons do strange things. For instance, the left and right arrow
    buttons do the exact same thing, but spin in different
    directions. Each can spin the model all the way around, so you kinda
    only need one. However, there’s no indication of which side you’re
    looking at. Top and bottom arrow buttons though, for some unknowable
    reason hit a wall, and it’s impossible to rotate the model
    completely all the way around. A slightly off-brown button state
    alerts you to this - if ineffectively.

    This is a core functionality problem that is also present when
    dragging with the mouse. Again, more developer time wasted on
    someone’s twisted idea of ‘slickness’ that unfortunately codifies a
    core functional limitation that actually impedes getting stuff
    done. Not being able to rotate the model completely in every
    direction is simply not acceptable in this type of program. Writing
    a poorly conceived custom GUI element that thinks that’s OK, is
    inexcusable. How about making the software rotate my model? That’d
    be time well spent. And have you ever heard of Orthographic and
    Isometric projection? A top, front, right side, and iso buttons
    would be great instead. That, and how about taking into account the
    actual active model bounding box size, and zoom the view
    automatically to ‘fit’ the model. Now that would be useful.

  • The ‘Status’ bar is always wasting 3/4" of screen. Problem is,
    nothing in it is very statusy. And why so huge? Ah, it has big
    buttons in it. Hmm, is it a dialog or a status bar. Identity crisis
    apparently. Again, very amaturish design. None of this data is even
    useful until I hit ‘print’ anyway. Show it to me then.

  • The ‘tool bar’ on the left. Massive icons that waste space. But to
    use it, a quazi-modal dialog pops up right in your face - and likely
    right in your way too. But you can’t move it. You have to work
    ‘around’ the GUI elements, rather than them augmenting your

  • Mouse movement of the model is terrible and painfully slow. The
    scroll wheel does not zoom at a reasonable rate, and changing this
    in Windows has no effect at all (not to mention you should not have
    to change it there anyway, but I was desparate). The user should be
    able to assign which button does what, and exactly how rotating the
    wheel zooms in or out - both in direction and rate.

  • No preferences dialog to set anything (like above mouse behavior),
    or model color, or shading/wireframe, or default file locations,

  • Sliders are way too sensitive and practically unusable. Why no
    direct numerical entry as well?

  • There is no XYZ widget in the corner of the screen to help you
    understand the orientation of the model. Virtually every CAD program
    in the world has this. Think there’s a reason?

  • Why are there no indicators of hinge and front always?

  • There’s no useful common zoom controls, like active model bounding
    box, or extents, or percentage, or drawing a window, or…

  • Constant shading and unshading of the model on mouseover is annoying
    and pointless.

  • Every software update automatically loads the butterfly clip when
    the app starts up. WTF?

  • Basically, a ton of time was wasted implementing useless or slick or
    downright crappy ‘features’, and almost zero time spent on making a
    useful tool. Grade: F.


Supports. Don’t get me going. Well, I guess I already am, so here’s
both barrels:

  • The heavy gusseted stick with the ball and wedge point is overly
    simplistic, clunky, and wastes a lot of very expensive resin. That,
    and it’s hit or miss if it works at all.

  • If you can calculate that the model is poorly supported in a
    location, and you can write code to color that location red, then
    why not simply figure out how to support it right in the first
    place? This is a complete copout. If it’s too hard for you, then
    maybe you’re not up to the task, and maybe you should not really be
    working at Formlabs.

  • When manually trying to correct the red areas you bailed on, why
    does the addition of some supports inexplicably use a round rod with
    a point that penetrates through the top of my model? And why does it
    give no indication it’s using a round vs. a clunky support until I
    click to add it? What logic could it possibly be using to decide to
    use one or the other? And why can’t it show me ahead of time? I have
    been driven to almost throwing and breaking things by this shit.

  • Why do I have no control over what tip the support uses?

  • Why does this stupid tip become my cursor when placing the support,
    and why does it flip all around spastically, making aligning it
    literally impossible?

  • Why, when I do manage to get it aligned, by moving my mouse one
    micron at a time, and waiting for the graphics to catch up, does the
    support get put in a completely different place anyway?

  • Why, on a small feature that needs a support, do you make that
    clunky support tip go right through my model, destroying the

  • Why does a big clunky tip hit a flat face of the model at bizarre
    angle, embedding only a corner of it into the model?

  • Why, on many added supports, is the ball and wedge not even attached
    to the support post that stops just below it. Waste all of the
    resin, with none of the benefit! And leave a mark on the part
    too. WhooHoo!

  • Why do many autogenerated support tips stop just short of even
    touching the model at all?!

  • Why can’t I place a support behind another support? Supports get in
    the way and there’s no way to ‘hide’ them so I can place a new one
    where I need to without deleting already good supports, and then
    re-adding them back in later!

  • Why do you need to automatically update the support ‘integrity’
    after every single add or delete? Wait, I know the answer - so you
    can color the model. How about you let me push a button to do that.

  • It seems like existing posts in the way determine where I can add
    new supports, as if you’ve become emotionally attached to the posts
    you’ve already built, and don’t want to move or hide them. How about
    hiding all existing supports, but make a colored spot where they
    touch on the model. Then I can add new supports easily where I need
    them, (which appear as a simple dot as well), and when I’m done, I
    press the new button to check integrity you’re going to add, and you
    can regen all posts to use the least amount of resin and provide the
    best support.

  • Why can’t I drag supports around, or raise and lower them when they
    encroach on a feature? Add and delete are nowhere near enough control.

  • Why can’t I manipulate supports when in slicer view - when I can
    actually see exactly where I need to put them?

  • Why is pgup and pgdn a single slice anyway? Shouldn’t up and down
    arrow be that, with pgup and pgdn being many slices (like, ahem, a
    page of many slices)? Whatever.

  • I already gave you absolutely free a much better support geometry
    paradigm to implement that would likely solve many of these
    issues. Use it.

  • Basically everything about the supports in Preform sucks. From how
    clunky they are, to how wrong the algorithm for placement is, to the
    the bad math used to calculate placement height, to how crappy the
    interface for ‘fixing’ them is, to the marks they leave on the

… I could go on for hours, but why do I need to design usable
software for the 3d printer I just spent over $3k on? So many software
design decisions have been made incorrectly on the Preform project
they’re not even countable. Bottom line: it’s extremely unlikely
that the current developers are up to the task of writing the correct
front-end for the Form1. Everything they have done thus far screams

Please, for all of your users sake, and for the future of Formlabs,
replace Preform and the entire software dev team with it. Start clean
and build a truly multi-platform front end that is in the same class
as the Machine - Absolutely Excellent.

I think you should seriously consider the OpenSource route with the
software while you’re cleaning house. You will attract a lot more
ideas and help. You’re selling hardware and giving the software away
anyway. Why not avail yourselves of the huge worldwide maker/hacker
community that will undoubtedly help you write better code, and at
least help you focus on better features? You’ll own and control the
repo, but can accept the patches and bug fixes you want. I really
can’t see how that’s not a big win-win for you and your users.

I fear a failure to take bold positive action now could seriously
impact your future viability. The printer kicks ass, but the software
is already getting a bad reputation. Since it’s closed source, and
this software must be used to run the printer, this could be a
deciding factor for many people to simply buy another device. Of
course, you will never hear about those decisions.


Here is an idea for you

Go work for formlabs and see if you can do better.

1 Like

Thanks for the lengthy write-up, Chris — though it’s hard not to have our feelings bruised a bit, it’s definitely more important to have frank, honest feedback. We’re always working to improve PreForm and though we’re pretty proud of what we’ve done so far, there’s definitely a lot of room for improvement.

For the record, I know that our software team has been taking a look at your post, so your thoughts have reached the right people–though they may be a bit miffed by your tone!

At any rate, I’m glad you love the machine, and I hope you’ll stick with us as we continue to build the best printer we possibly can.

Because this thread is a bit of a monster, I’m going to close it. I’m happy to continue the conversation in a more focused thread, perhaps dwelling on say, the top-three features that the community would like to see improved/implemented.

1 Like