gitcloud
durable-php
gitcloud | durable-php | |
---|---|---|
1 | 5 | |
12 | 4 | |
- | - | |
4.2 | 9.5 | |
8 days ago | 3 days ago | |
TypeScript | PHP | |
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
gitcloud
-
Authorization is still a nightmare for engineers
> However: you seem to target developers. Why do you force me to leave my IDE and use your "rules editor"? Can I not write all those things in my IDE, with all the support it brings, and integrate this into my CICD flow? (yes, there is the .polar file, but why force me to jump through hoops?)
Hey valenterry! Oso CTO here. You can absolutely write policies locally and integrate this with CI/CD. We have vscode extension for the former, and CI tools for running local dev environments and CI for running this locally or in CI or whatever.
The UI is mostly nice for getting started development experience, e.g. it integrates directly with Oso Cloud without needing to configure credentials.
> Then, why did you create a new DSL and not a merely a (de-)serializable datastructure (which will indeed look like a dsl)? One, that is powerful enough to represent the capabilities you need. Then, I could in fact use any language (library) of my choice and create the rules from this language, which just has to create the datastructure.
We have a post on this coming soon! The short version is that Polar is a logic language based on Prolog/Datalog/miniKanren. And logic languages are a particularly good fit for representing the branching conditional logic you often see in authorization configurations.
And it made it easier for us to do custom work like add inline policy tests.
> Apart from that, I really like the `yes, if` idea! Would be nice to hear a bit more about that (unfortunately, the article pretty much ends there). Such as: how to deal with actions that change things and can (or must) potentially be run before the authorization is completed and such.
We typically recommend authorizing in two places: at the start of a request, and then when fetching data.
e.g. in our demo app, authorizing "can a user create an issue" involves authorizing a "create_issue" action against the repository itself: https://github.com/osohq/gitcloud/blob/sam/list-filtering/se...
Whereas anything listing issues calls the `list_local` method and does the `yes, if` style approach.
durable-php
-
Authorization is still a nightmare for engineers
That's a really clean implementation. And the shares are used to resolve authorization here [1], right?
Two things that we're solving for at Oso is: making it easier for multiple teams to collaborate on permissions (which we solve by having a declarative language), and solving the list filtering problem (as talked about in the post).
If you don't need either of those two things and are happy with a DIY approach, what you've shared would work great IMO. If you packaged that up as a standalone solution, I could see a lot of people getting value from it!
[1] https://github.com/bottledcode/durable-php/blob/3ad509fcdbb3...
-
Ask HN: What are some unpopular technologies you wish people knew more about?
Heh. https://github.com/bottledcode/durable-php is a semi-faithful php port of Orleans, borrowing some ideas from similar things too. I’ve actually been working on some really neat FFI things for this the past few weeks.
It’s fun.
-
Your coolest Packagist project that no one uses?
Durable php: https://github.com/bottledcode/durable-php based off of C# durable functions.
-
Thoughts on event sourcing: Replaying events
The way I've successfully used event sourcing was to think of it like a WAL where you are basically building up a HashMap. (This is how DurablePHP works -- https://github.com/bottledcode/durable-php -- if you are interested) Replaying should result in the exact same HashMap every single time, any side-effects only happen once.
What are some alternatives?
bridgekeeper - Django permissions, but with QuerySets
Resolve - A simple PSR-11 compliant dependency injector.
Encrypted - Encryption cast for Eloquent
ConcurrencyHelper - ConcurrencyHelper is a library for easily and efficiently running any callable via multiple parallel PHP instances.
ConsolePainter - BEAUTIFUL Console Colors via a Fluent Interface.
class-finder - Utility classes to help discover other classes/namespaces
MultiPhreading - PHP Multi Process Threading, Shared Memory Berkley Keystore, Message Queue system.
metadata - Metadata management library in PHP
shell-command - A better abstraction for running processes from PHP
IaafPoints - PHP library to calculate IAAF scoring points of athletics and IAAF scoring points for combined events.
form-mapper-bundle
strict-form-mapper-bundle - Go strict