This is an excellent framework to validate a low-code/ full-stack frameworks as ERPs are complex beasts. I would like to also add( especially for opensource low-code frameworks ):
#6 Can it generate pdf and excel reports
#7 Does it support scheduled jobs/tasks
#8 Can you choose to execute logic in the backend ( this does not seem to be the case for retool etc which only support frontend js )
#9 Can I extend with my own js, css and backend libraries
#10 Is it horizontally scalable and stateless
#11 Drag and drop ui builder that is not hard-coded to a single css framework and that generates code that can be modified.
I have not yet found any low-code framework that fits into these benchmarks
Absolutely agree with this point. At the company I work for whenever we create reports its always done twice or thrice -
a browser version, a pdf that is printable and an excel version for business users to download and play with.
Waseem seems to have moved onto the accounting/finance world now as the CEO of Pilot. This seems to me to be an even bigger jump than kernel dev to chat software.
The variation is amazing!
It’s 100% about wanting to work with a great team on a big problem. It’s not that the domain doesn’t matter, it’s that it just matters less than you think (for me, anyway.)
Having worked on the SMB billing and accounting space for 2 years in India - its a really really tough space to monetise profitably. The market size seems huge from the outside but its a tough nut to crack.
The space is also hyper-competitive now with khatabooks, dukaan etc spending 100s of crores with no revenue.
Its seems like what you are building is a mini-ERP for SMBs in India. If you are touching AP, AR - do you have tally integration? Pretty much every SMBs auditors will ask for it.
Wow - the 4 stages of product development seems quite spot on from my experience working on b2b enterprise software products.
No doubt that the Finance team is generally the most powerful entity in shaping a companies direction both internally as well as in your clients organisation. Finance teams love control, are (mostly) completely risk-averse and change averse. The same can also be said about badly run IT teams.
I have seen product/automation implementations being deployed seamlessly in all departments from operations to procurement but completely fail due to the finance teams. In extreme cases I have seen finance teams have so much power that they even override the CEOs decisions to make implementations fail if they feel that they are loosing control or do not like the new process workflow that the implementation brings in.
For digital transformation projects the implementation team needs to speak the language of finance, operations as well as IT. Otherwise the chances of the implementation really succeeding is close to nil.
JVM or python just for the ecosystem.
kafka, debezium, workflow engines(camunda), ORMs etc - java libraries might not be as nice to use as ruby gems but some are really rock solid for your use-case.
But that being said, anything really - rails/node etc most would work just fine for your use-case
I didn't find debezium production ready when I tried it about a year ago. If I recall, no cascading deletes and it can't handle 0000-00-00 dates due to "some java limitation" (maybe in the kafka producer? I honestly forget) and when a dev on my team made a PR to the debezium project it was not merged because the team felt it was outside of scope for debezium. Also, because of implementation details, it will never do cascades.
End result was a lot of wasted effort. It worked for one team who didn't have those requirements and even then they spent more time than they should have and then ripped out debezium and went with standard mysql replication as it doesn't require the entire kafka stack.
My experience with it reaffirmed my standard technique of data migration of write to both and move reads over when ready.
Great article. The table composed by psychologist May Seagoe fits the description of some of my friends and colleagues who I perceive as gifted perfectly.
We have written several microservices primarily for websockets in Elixir. They are great with literal zero maintenance costs..but how do Elixir developers handle the following when going all in:
1. Long running workflows - there do not seem to be popular frameworks like camunda, jbpm, temporal or cadence for elixir
2. Integration libraries - similar to apache camel
3. Inbuilt scripting engines to run user scripts like nashorn, graaljs or groovy
We really enjoy working with rails and would like to go all in into elixir. But the ecosystem of available frameworks seems to always come in the way and makes us choose spring boot or rails.
Pre-emptive caveat: I do not know much about the three things you mention. THAT SAID, I'm familiar with Erlang, and moderately familiar with Elixir, so wanted to still give you some areas to explore.
For #3, you probably would need to NIF out to something. You can also execute an uncompiled script of Erlang using escript, but that, obviously, is not something you'd expect most users to learn (and not sure you can execute it in a running Erlang context, rather than from an external shell). You can also evaluate a string, and/or compile and load new Erlang code from a running Erlang program, but these are suuuuuper dangerous if it's user supplied.
For #1, I've never seen anything, but if you just need something that allows you to change out or customize logic on the fly you can do so in a pretty straightforward manner. Because it's a functional language, you can do stuff like have a stateful process template that you can swap out on the fly, i.e., submit a list of function identifiers a la [read_data/1, transform/1, write_data/1], and now whenever you call run(data), it spins up a new actor that effectively calls write(transform(read_data(data))). Technically you can even provide new code snippets (using one of the mechanisms from #1, or, if opening up an Erlang shell to the running instance, supplying it directly as a lambda), but you'll need to be mindful about persistence. I am not that well versed with workflow engines, but that partly comes from the fact that I haven't really seen the point given how easy many languages make it to create and customize workflows without having to learn special semantics.
I am not at all familiar with apache camel, but I think your concerns here aren't easily addressed; certainly, the library support for Erlang/Elixir isn't anywhere close to the JVM. But I -will- mention that sometimes writing the integration(s) you need to enable using a different technology are worth it.
For #3 in general the advice is a NIF or a Port to an engine (polar is a good example) or to use Luerl
For #2 i know nothing about this kind of stuff
For #1 it depends a lot. Something like Oban can be enough, or Ulf Wiger's Job or Broadway. These tends to be more ad hoc and extracted to independent services. It depends a lot of what kind of constraints you have for these workflows. There are lot of options but they are all more specific to use case and constraints than these broad projects that try to do it all.
The other comments make good points, but here's a few more:
> 1. Long running workflows - there do not seem to be popular frameworks like camunda, jbpm, temporal or cadence for elixir
Oban seems good for job processing. Otherwise Elixir builds on Erlang's OTP. That means you can also use ets, mnesia, or even Rick's distributed dynamo application runners.
> 2. Integration libraries - similar to apache camel
Nothing quite like this, but you can make use of Flow or GenStage for data pipelines.
> 3. Inbuilt scripting engines to run user scripts like nashorn, graaljs or groovy
There's a nice Lua implementation 'Luerl' IIRC. Also as others mentioned you can do a NIF. In particular Rust & Rustler would provide lots of scripting language runtime.
Are you onboarding suppliers on your platform with their own supplier portal for collaboration/chat? Or is only catalog data?
Does the RFI, RFQ etc processes happen within the system or outside?
How does your sourcing software integrate with existing supplier selection modules, contracts lifecycle management modules ( for compliance, audit etc) like SAP or Oracle that might already be deployed by the customer?
Is this similar to SAP ariba or coupa but with catalogs predefined?
As of today, we are not onboarding suppliers onto our platform. We work with a variety of data sources to generate accurate and helpful insights, even without onboarding suppliers.
Users can decide whether they want to run RFX processes from their systems or ours.
Yes, we can integrate with existing procurement solutions like SAP or Oracle as we are complementary to them.
No, we are not similar to SAP Ariba or Coupa. Ariba covers the whole procurement value chain while Coupa focuses on spend management. We focus on sourcing - the highest value driver in the procurement value chain.
#6 Can it generate pdf and excel reports
#7 Does it support scheduled jobs/tasks
#8 Can you choose to execute logic in the backend ( this does not seem to be the case for retool etc which only support frontend js )
#9 Can I extend with my own js, css and backend libraries
#10 Is it horizontally scalable and stateless
#11 Drag and drop ui builder that is not hard-coded to a single css framework and that generates code that can be modified.
I have not yet found any low-code framework that fits into these benchmarks