Sam and Michael were both brief employees at WorkOS in 2020 where they contributed to our product and were privy to our full codebase, strategy, and roadmap. (We are very transparent internally.)
Both of them were let go from the company. Sam then decided to start working on this open source clone of WorkOS. There are striking similarities in the API structure and architecture of Osso, enough to clearly not be coincidence. Our lawyers sent him a cease and desist but he has persisted working on the project.
This is an unfortunate situation and it’s disappointing to see Sam misrepresent the origins of the Osso project. (He even took WorkOS off his LinkedIn.)
Personally I’m a big fan of open source and open source based business models. (I was responsible for open sourcing Nylas Mail and the underlying Nylas Sync Engine while I was CEO there.) But this form of blatantly ripping someone else’s work and passing it off as your own just isn’t right.
We’re prepared to pursue legal action against Osso if needed, but honestly we’ve just been too focused on growing WorkOS. Today WorkOS is already powering enterprise SSO for a bunch of big companies and also many startups/SMBs and growing quickly. We’re also SOC 2 Type 2 certified and super well funded (unannounced rounds) with a fantastic team.
So I’m posting this mostly to call-out bad behavior and to stand up for our team’s hard work. They deserve it.
More background on WorkOS for those curious:
- WorkOS “Show HN” launch (March 2020): https://news.ycombinator.com/item?id=22607402
- Our recent Fall Release (Nov 2020): https://youtu.be/JP-9wVoqy4A
- “Crossing the Enterprise Chasm” (August 2019): https://youtu.be/IR2QZQrzoiA
- WorkOS API Docs: https://workos.com/docs
This product reminded of your show HN quite honestly but I just couldn't remember the name.
Rooting for WorkOS.
See Drew DeVault's article: https://drewdevault.com/2021/01/20/FOSS-is-to-surrender-your...
It's not. At the bottom of the README you then state:
"While not technically an open source license..."
It's flat out not an open source license. And I think its disingenuous to have "open source" right in the first paragraph of the README.
I think you should change any mention of Open Source to "Source Available", to avoid this confusion.
The fact that the acronym OSS is in the company name is probably not helping.
EDIT: I went ahead and created a PR :)
I've thought about making a nonprofit called the Grape Initiative which would release a definition of "Grape" that only includes purple grapes. If people want to refer to green grapes well then I guess they will just have to say green grapes! When I think about grapes I always think about purple ones, makes sense to me!
I'm not sure that's a very generous interpretation.
In our industry these terms have very specific meanings. Just like other words in Physics, Law, or Medicine have very specific meanings to those in the field, but not to outsiders.
When we say Open Source, we use a two-word description to describe a much broader idea. Likewise when we say Free/Libre Software, we describe software licensed under specific conditions. Its obvious for us in this field why Google Chrome is not Free Software, but not so much for the average person.
>> OSS should be an umbrella phrase that covers the multitude of interpretations like source available, FOSS, FLOSS, etc.
I understand where you're coming from, but unfortunately OSS already has a strict definition. I agree there is a need for a more correct categorization, but it should be strictly and nomenclaturally separate from Open Source, to show that it is a much more restrictive license.
That is absolute nonsense. The people behind OSI worked long and hard to find a term that could be instead instead of Free Software, which they considered to have unfortunate connotations. This is something some disagree with, but that was their cause regardless. Their due diligence of the term took great trouble to make sure it had not any undocumented previous use.
Of course the words had occasionally been used together, but not as a term. That would have undermined their legal strategy altogether. They then failed to secure the trademarks they wanted, but not because the term had any documented previous use.
You may disagree with the outcome, you may disagree with the OSI altogether, but it is wrong to misrepresent history.
Nonetheless, you're right, words are hard, and this isn't a new argument about the suitability of the term "open source". RMS makes a similar point about the term in this rather old essay: https://www.gnu.org/philosophy/open-source-misses-the-point....
We currently use the BSL license, created by MariaDB and used by companies like Sentry. We do think Osso is open source by common understanding and view the BSL as a fair model that places no restrictions on good actors - the license is intended to protect us from copycats profiting off our work, while allowing anyone that needs to integrate SAML into an app they’re building free reign. You’re free to use Osso as a widget, but you can’t use it to start a widget factory.
"Source available" seems like a fair compromise, thanks for the suggestion.
FWIW, We're big fans of Sentry's explanation of the BSL license - https://sentry.io/_/open-source/
The common understanding of open source is that source code is available, redistribution free, and derivative works are allowed.
MariaDB specifically states that BSL isn't open source:
> "We have not certified BSL as complying to the Open Source Definition by the Open Source Initiative (OSI). However, all source code is available from the start and most of the OSI criteria are met. As long as the software is used within the usage limitations, it’s free to use at no cost."
Open source = no usage limitations.
So you intentionally made false statements about your product, which you knew ahead of time were false and if believed might conceivably make people more likely to buy it? That's normally called fraud.
The long winded justification doesn't matter. You're under no moral obligation to make your product open source. You are under a moral (and probably legal but ianal) not to do bait and switches.
In the mean time the free version lets me learn and experience the full product.
Osso is open-source software for integrating SAML SSO with any web application. It provides an Admin UI to onboard your customers, generates custom documentation to configure your app in a customer's Identity Provider (IDP), handles SAML authentication against IDPs and provides your app normalized JSON profiles as part of an OAuth 2.0 code grant authorization flow.
We started working on Osso together as a way to keep in touch and distract ourselves from, well, *gestures broadly at everything*. We chose to work on something that each of us came up against during our careers: supporting SAML SSO. Between the three of us, we've built internal tools where SAML was required by IT and struggled to sell SaaS products that didn't offer SAML SSO to enterprises who required it. We've also been users of various IDPs, limiting us from accessing the apps we wanted at work when they only included SAML SSO on the way-too-expensive Enterprise plan.
Every successful SaaS company builds SAML SSO eventually but it's never a top priority and nobody takes time to really understand it. If your customers want SAML, it's a great problem to have but chances are there are thousands of other things on your list. Most teams end up kicking it down the road, which can lead to lost sales opportunities. Companies end up piecing something together that kind of works but creates technical debt or support burden, or they spend thousands of dollars on Auth0 or AWS Cognito, but still lack customer docs or a streamlined flow for SAML onboarding.
So we're trying to simplify things for SaaS companies to make SAML SSO a more accessible option. We took existing open-source software and added the last 10% to make integrating a scalable, sellable, and serviceable SAML SSO solution as easy as possible. All the code is available on Github for you to run on your own, but we also offer a SaaS solution where we'll manage an Osso instance for you.
Osso:
• Treats SAML like OAuth - connect your app to an Osso instance via OAuth, and Osso will handle the SAML authentication and return normalized JSON profiles
• Enables first class support for Azure Active Directory, Okta, OneLogin, Ping, Google, and Salesforce, yet works with any IDP that supports SAML 2.0
• Features an Admin UI for customer support / success teams to onboard and support customers
• Provides a convenient interface for technical teams to create and roll OAuth clients and their secrets
• Generates custom PDFs for step-by-step onboarding for each of your customers
If you're interested in learning more, start here:
— Our docs [https://ossoapp.com/docs/quick-start]
— Github repos [https://github.com/enterprise-oss]
— Quick video walk-through of Osso [https://youtu.be/Jps3eeZGOr0]
— Demo instance [https://demo.ossoapp.com]
The back end is a few modular Ruby/Rack apps including a GraphQL API and an OAuth 2.0 server, while the front end is a React app written in Typescript. We use a modular and package driven approach, allowing you to customize your Osso instance with theming or middleware, or pick and choose parts of the stack to use, while getting critical updates through our Ruby gems and npm packages. We offer client libraries for Ruby (omniauth-osso) and NodeJS (passport-osso), and are working on React components you can use to interact with your Osso instance, like a login component and a widget to allow your customers to configure SAML themselves.
We really appreciate the HN community and the discussion that takes place here, so we hope you'll provide honest feedback on Osso. What's missing? What should we do differently? Anything you'd take away? We look forward to reading and responding to your comments, but if you want to speak with us directly you can also email us at hello@ossoapp.com.
Thank you! Sam, Sam, and Michael
Is our intent with the license enough for you to consider it appropriate for us to call this open source?
I built something out with Cognito for my current team. I don't like it much, but we're definitely not spending thousands of dollars on it. Have you heard horror stories about its pricing?
From the AWS pricing page (https://aws.amazon.com/cognito/pricing/), you get 50 MAUs with SAML free and then it's $0.015 per user. We haven't had any issues with this - yet.
I do think your solution sounds nicer, but I'm really not sure looking at your pricing that it's cheaper.
The pricing here is definitely more applicable to Auth0 :)
But for us, charging per user makes predicting the cost of your SAML provider difficult, and everyone seems to do this. We charge per customer account instead - if one of your customers has 50 MAUs it wont cost you more than a customer that has 10. And you won't need to pay us more is your software is a daily driver vs. something thats used lee frequently.
A useful framework for thinking about SAML vs OAuth from an engineer's perspective is to think of OAuth as class based, while SAML is instance based.
When you set up a new OAuth provider such as Github you typically grab a Client ID and Secret, specify your redirect URIs, and once your integration is complete any Github user can sign in with a Sign in with Github button.
But with SAML, you need to perform configuration with each customer's Identity Provider instance. As you pull on this thread you start to see where the challenge with SAML lies. SAML as a protocol isn't super complicated, and tons of OSS already exists to perform authentication. But you need to create and persist configuration data for each of your customers, which suggests needing a UI to perform this onboarding. You need to help your customer configure your app in their IDP, so you'll want to create documentation. And you need to adjust your sign in flow - you can't just stick a Sign in With Okta button, you need to ascertain from the user which IDP they use for authentication.
Osso though handles all of the "instance based" challenges, and allows your app to use OAuth to communicate with your Osso instance.
How battle tested is this with real companies and different IDPs?
In any case, congrats on the launch and will definitely be taking a closer look.
We have to really manually test real IDPs, and we do whenever we release new software, but we also run e2e cypress tests against a Mock IDP we built, so SP -> Osso -> Mock IDP -> Osso -> SP, you can see these in our Buildkite CI - https://buildkite.com/enterpriseoss/osso
I've been struggling for a long time now trying to find a good IdP I can use to integrate with my existing user database.
https://github.com/enterprise-oss/sinatra-ruby-idp https://www.keycloak.org/ https://www.gluu.org/
Now my question is how safe/secure is your XML parsing? Because that’s been a source of vulnerabilities in other libraries.