My glib take to every CRM like this: If you don't ship with a programming layer you're DOA. Salesforce thrives off of Apex and friends. You _need_ to let people program your CRMs if you want to go after SFDC. Or, more specifically, you need to _host_ people's programs so they don't have operational questions.
Salesforce gets the ubiquity the same way that Wordpress does: randos can copy some code fragments off of a website and stick it into a file/textbox, and get new functionality.
So... Twenty, hire one person whose job it is to layer AWS Lambda over your system :)
I think it is easier said that done. The GTM completely changes of a product like this. Now you have to build API, DSL and eco-system to support it. I absolutely agree that your take. But building an eco-system is hard.
You don't need a DSL if you, for example, "just" use Javascript. You need an API anyways. You do need to do some operational fudging around of course.
I'm going to also counter with something super important: you build out stuff like this, and suddenly you can handle your own feature requests faster. User wants X to happen after Y? Write a tiny event script that they install into their env. They need some bespoke field? You have custom models, and now your events reply to that.
In the fractal of requirement differences that is sales pipelines, not doing this just feels like causing yourself a bunch of dev pain.
So just re-use your own internal apis with better access control? What else?
Man, if only SaaS would do just this instead of reinventing the wheel with their brain-dead scripting languages and limited APIs where they remove useful information and links between data.
IME, this is how an enterprise-contender product should generally be built when it wants to touch many domains across the business. Starting with a reasonably rigorous access control model enables deeper business integration--and this is a product that, to be successful, can't live without that.
I agree with this.
From a technical perspective, how would one structure a program like this? Where the main developers also use the same 'engine' to develop the product itself, while also exposing the same engine to the third parties?
The first such case I have seen was Maya (the 3d software) when it first came out use a custom scripting language called MEL(Maya Embedded Language) to develop the entire user interface and corresponding actual entity manipulations. Third party plugin developers also use the same MEL.
I thought wow, and that is still impressive today.
I work with a CRM that allows users to add additional functionality by uploading definitions in XML "spec" files.
The XML specs are a combo of metadata and code and define all functionality in the system including SQL tables, forms for adding/editing data, query nodes for the internal query system, arbitrary business processes etc. They can include SQL stored procedures to run or call out to bundled C# code, and they can be accompanied by HTML templates that generate UI elements where appropriate (e.g. user facing forms).
There are a lot of moving parts and the documentation is a bit patchy but it's a really ingenious system for adding modular functionality, particularly in a CRM setting. Pretty much all of the "official" functionality is built using this spec system.
But would not that be a maintenance nightmare with code with xml and lack of version control.
Also how does one restrict to a particular tenant
This is a developer's answer to a business problem. Scriptability added to a non-developer's tool is usually just enough rope to hang them on IME, and often ends up in a whole arsenal of footguns.
They could somehow whitelabel and embed Windmill.
Yes, we(Windmill)'d be a kick-ass combo. We're users of twenty ourselves. As both open-source projects, a third option that I'm often recommending is having such great integration in both products such that their users can independently chose to use and install Windmill (self-host or cloud) and have it power all of the orchestration and arbitrary-code needs of the third service without the need for a formal whitelabel.
If they could inject their data model into the Windmill IDE so autocomplete worked, that would be...very good.
Edit: also - just to say this now, because I always say it, but having a way to embed this stuff into normal software development flows, with Git / code review / CI / test automation / Docker (maybe) / different environments would be very helpful.
I don't know if you do or not, but my main problem with anything like this is the makers are really keen to show me how easy it is to put stuff into production with 3 clicks, and that's the last thing I want. If I went back into business systems, I'd want a great tool that lets me support a large business with a tiny software team, so the business doesn't have to try and replace software people with business analysts because you need too big a software team to run it cost-effectively.
It wouldn't even be that hard since we have our own layer on top of monaco to resolve types that could dynamically fetch it from Twenty.
You're supposed to wait for the CTO interview.
SFDC for the uninitiated?
Salesforce sales cloud, the core crm app. As opposed to other apps like marketing cloud (sfmc) and others.
Certainly not SDLC.
That's what I read it as the first time through. How annoying.
"Salesforce dot com". "SF" would be a little hard to differentiate.
Most businesses are not big enterprises that need a programming layer. You can focus on that later on when you actually found some traction and move up-market. I don't think starting with enterprise features is "DOA", it's just smart prioritization.
You don't want to go through enterprise sales cycles when you are just starting your company.
Your assumption is that having a programming layer in a CRM is only for big businesses. But that's not true at all.
Right - presumably the target market are people wanting something other than Excel or Google Sheets, which they likely already use programmatically not just for data entry. Is that right?
I've worked with big and small businesses that use salesforce and they all have some kind of programming layer. Small businesses tend to buy plugins or pay some contracting firm to write customizations.
Hey, just seeing this thread now. Agreed! We've started a year ago and have done probably just 10% of what is needed to really get to Salesforce. We need (1) a flexible data model, (2) a flexible layout, (3) code execution. We've done (1) but have yet to do (2) and (3) this year. Next step of the plan is to let people build and share apps that leverage those 3 blocks, that's where open source will really shine!
Can you elaborate on what "a flexible layout" means in this context? Is this data layout, i.e. serialization format(s)? UI layouts for displaying values in the data model? Something else?
(We too are in the "let people execute their code on our servers" space; providing a flexible data model seemed to have been key)
I work for a Salesforce company (Heroku) so I’ve used their CRM interface enough that I think I know what they are talking about.
You can customize views and reports. To the point you can make it do stuff like be a kanban board or blog. It’s really flexible. The “build a portfolio” is actually using the CRM (IIRC). https://trailhead.salesforce.com/content/learn/trails/build-...
Yes
Programming And Workflows are keys
What is the difference between Salesforce and low code platforms then?
I run a CRM platform for many years. And while this is true, that if you want to go after a subsection of SalesForce type customers, you do need a programming layer. However, that is only a specific section of the market. There are vast amount of users out there that do not need that and will never will. They need a CRM. Not a Platform-that-is-also-a-CRM.
We offer 100% API access, and customisation from the data layer to the UI (very very flexible), but I'd be reluctant to invest time in adding an actual programming layer like APEX on top of it. I don't think I'd want to even go to that level of "enterprise" customers and everything else that comes with it.
Edit: just because I've seen people plug their products here as well, I'll add mine: https://cogmento.com