rob at bomello dot com
For those unfamiliar, Product Lifecycle Management (PLM) is software used to track the lifecycle of a product (and it's parts) from design, through to manufacture and distribution.
My team are software engineers from hardware backgrounds, and we've built Bomello (link: https://bomello.com/) by borrowing systems and concepts from the software world, where development practice is light-years ahead of hardware.
One of our key analogies has been to Github - which shares some similar purpose to PLM. Like Github, PLMs are the centralized data store where engineers input their work, so that rest of the company can deploy it into the hands of users.
We see the current landscape of PLMs as ripe for disruption. The market is highly fragmented, and polarized. Older players (such as Arena), work well to develop structured development processes, but are overly complicated and often require a dedicated engineer to administer. Newer entrants focus on flexibility, or introducing brand new technology such as AI. On this side, workflows and process take a back seat - which in my mind should be the core of PLM.
What we've built focuses on workflows, centered around a detailed review process with side-by-side comparison of incoming changes. We guide development process towards industry best practice, using modern UX inspired from software dev.
I’ve been a long time fan of HN, but this is my first time starting a company. It’s been just as stressful and exciting as expected! I would really appreciate any feedback, so let me know if these ideas resonate.
A note on PDM:
Product data management (PDM) is a different class of software, but key to PLM (and is often included). PDMs are focused mostly on the engineering users, synchronizing their work such that it can later be reviewed and released into the PLM. Some parallels could be drawn between PDMs and git, although functionally they are very different. We currently aim to be PDM agnostic, as they are typically tied to users’ CAD choice and deeply integrated. However, we have not ruled out building our own PDM in the near future.
I want to skip over the static typing benefits argument, because I think it is well understood that static typing is a good thing and if we could bless JavaScript with a built-in and robust typing system then I don't think many people would be against that. My issue is with the amount of extra work it places on developers, much of it the "dumb" kind of work which can eat up hours and doesn't deliver all that much value.
i) Like a framework, you are at the whim of TS devs as it gets updated (edited)
For example, a new package you install can require a new TypesScript version. Once installed, you then may need to update your source code. This can place quite a high tax on the developer, where perhaps a 10 minute change becomes hours long.
ii) Libraries are badly documented
Most libraries do not document their types, or have no examples using TypeScript. Some worst offenders: Apollo, Protobufjs. The type definitions exported by these libraries can be large and complex, and the error messages emitted by TypeScript are so long and cryptic the result is often a drawn out process of trial and error along with trawling through source files.
iii) Error messages are hard to follow
Errors are long and don't provide enough detail. They will explain a type mismatch referencing many types you may not have ever seen, and are not documented anywhere. Except for simple errors, many of them are very hard to follow to a remedy.
iv) It requires yet more transpilation
Transpilation takes time, and always adds a burden to developers. I didn't mind so much with ES6 etc because eventually many functions were included in a broad set of browsers. There doesn't seem to be much progress including TypeScript in a browser, and feels like these complicated transpilation steps could be with us for a long time.
I could probably add more to this list, but my point is that I just can't see that TypeScript is worth all this time investment and making progress so slow sometimes. Are there others that come to this conclusion? I mainly see positive posts about TypeScript.
edit: I referred to TypeScript as a framework which it isn't. However it feels similar to me in that you are at the whim of TypeScript developers and how they decide to progress with the language.