Calling for Contributors on LB Extensions
dhmlau opened this issue ยท 39 comments
As you might know already, we're wrapping up on the LoopBack4 Core Beta release. We are now calling out to our LB community users (especially @strongloop/loopback-next) to develop LB extensions!
How it works
Tell us
Let us know which extension you'd like to build. Here is the wish list voted by the community: #512.
Examples of LB extensions:
- Authentication: https://github.com/strongloop/loopback-next/tree/master/packages/authentication
- Log extension: https://github.com/strongloop/loopback4-example-log-extension (currently in dev branch)
Build it
One of the LB project maintainers will be assigned to you to walk you through the whole journey of creating an extension from the beginning till the end.
Get recognized
We'll broadcast your work in our web site and social media!
For more information about LoopBack 4, please refer to: http://loopback.io/doc/en/lb4.
Extension | Descriptions | Developers | LB4 Maintainer |
---|---|---|---|
GraphQL | Component to provide GraphQL Endpoint for Models. #656 | @virkt25 , @mpicard, @beeman, Help Welcome | Taranveer (@virkt25) |
gRPC | #675 | @jonathan-casarrubias, @VMois | @raymondfeng or @bajtos |
API Explorer | #559 | @ssh24 | @b-admike |
MQTT | MQTT transport #710 | @akashjarad, @negrero | TBD |
References
- Extension Starter: https://github.com/strongloop/loopback4-extension-starter
Hey @dhmlau I would like to contribute on the number 2 of the list
- Transports/protocols
WebSocket
MQTT
gRPC (HTTP2 & ProtoBuffer3)
Hey @dhmlau and @jonathan-casarrubias. If it's possible I want to help with number 2 of the wish list.
@jonathan-casarrubias, @VMois , Thanks for your interests! Any particular one you'd like to work on? MQTT? gRPC?
cc @raymondfeng
My proposal is to start work on gRPC. Why? It adds an ability to create fast and reliable distributive systems. What do you think about it @jonathan-casarrubias?
cc @dhmlau @raymondfeng
+1 on gRPC as first priority
@dhmlau What would be the next steps for this?
@jonathan-casarrubias @VMois , I just created an issue to track the gRPC extension. #675.
@bajtos has done a spike before, you might want to take a look at this: #582
@dhmlau @jonathan-casarrubias i would like to work on MQTT extensions.
@akashjarad awesome! I added you to the table at the top, created https://github.com/strongloop/loopback4-extension-mqtt and gave you write permissions to that repository.
I am afraid we don't have the documentation for server/transport authors ready yet, but see the following resources for help:
- https://github.com/strongloop/loopback4-extension-starter for basic project setup
- loopbackio/loopback4-extension-grpc#8 for an example of a custom transport
- https://github.com/strongloop/loopback-next/tree/master/packages/rest for a pretty complete implementation of REST transport
@dhmlau @jonathan-casarrubias @akashjarad hi, I am interested in extension mqtt could I make some contribution?
@negrero @kattsushi I think you guys can inspire your self by reviewing the REST and gRPC Components
@jonathan-casarrubias Don't forget that there's now a simple toy example of how to make your own server here: https://github.com/strongloop/loopback4-example-rpc-server
@kjdelisle that is cool, that would made things easier when I started the gRPC one, but I'm glad I was able to get into the same page by reverse engineering the core and the rest
I think that is a great example as well, well done
@jonathan-casarrubias sure! i will check out thx!
hi @dhmlau @bajtos @jonathan-casarrubias howdy guys!, i've been following this issue #119 and i would like to collaborate in this feature from beginning with an extension that provides feat to some controller or method in loopback-next maybe with Socket.io or WebSocket, im trying to figure out yet how works, but already i started working on it.
Cheers!
i've been following this issue #119 and i would like to collaborate in this feature from beginning with an extension that provides feat to some controller or method in loopback-next maybe with Socket.io or WebSocket, im trying to figure out yet how works, but already i started working on it.
@kattsushi thank you for chiming in, could you please cross-post your comment in #119? I think @jskrzypek may be interested to join your effort too.
@dhmlau I would like to contribute to the project.
@privateOmega , thanks for your interest. Anything in particular that you're interested in for extensions? You can also look at the wish list in here for inspiration.
@dhmlau Mongodb connector sounds nice, if that's a good one for a beginner to start with.
@privateOmega Our current plan is to keep using the existing loopback-connector-mongodb. You can check its issue tracker to see if any of the open issues catch your attention. There are also MongoDB-related issues reported in the main LoopBack repository (mongo and mongodb), many of them will be probably relevant to loopback-next too.
@bajtos Thanks for the pointers. Will look into those.
@dhmlau If newbies are also accepted, I would really love to contribute to 5.Built-in Models . Thanks.
Has anyone started with Offline first synchronization which was mentioned by @bajtos in #512 ? I think that would be a good start.
I am not sure if we have built enough foundation yet to support Offline first synchronization in LoopBack 4, but I guess there is no harm in experimenting in this area. Could you please open a new issue to track the work and discussion around this feature?
If newbies are also accepted, I would really love to contribute to 5.Built-in Models . Thanks.
We are welcoming all contributions! Which built-in models are you interested in most? I see three more or less independent categories there:
- AccessToken as the core model for authentication and authorization
- Application to enable features like OAuth scopes, push notification, etc.
- User/Team/Organization for ACL-based authorization
@raymondfeng what's your vision for these built-in models? What would be the best first model to start working one?
Which built-in models are you interested in most?
If I am 100% free to choose, it would be the "application model" but I would prefer to be guided for the most appropriate start point.
@mustafa-yilmaz Personally I would like see models to help identity and authorization:
- ClientApplication: represents the client app (modeled after oAuth2)
- User/Team/Organization: hierarchical user management (modeled after github entities)
- Role: abstraction for a group of users
- AccessToken: represents claims and permissions
- Scope: abstraction for a group of protected resources
One key is to define the minimal number of properties for each model so that the core authentication/authorization can work. Other properties should be extended by applications or mixins.
LB4 extensions can extend controllers, but is there an analogous way to extend models? I'm specifically looking to add a encrypt: true property to models in LB4? Similar to:
strongloop/loopback#1260
Thanks!
LB4 extensions can extend controllers, but is there an analogous way to extend models? I'm specifically looking to add a encrypt: true property to models in LB4? Similar to:
strongloop/loopback#1260
In LB4, models are mostly behavior-less object holding data. CRUD manipulations are provided by repositories.
To persist certain properties in an encrypted form, you can create a custom EntityCrudRepository
implementation that will modify the data sent to/received from the backing PersistedModel
instance. See DefaultCrudRepository#toEntity. I can imagine LB4 can add fromEntity
too, so that classes inheriting from DefaultCrudRepository have a nice extension point where to modify both serialization and deserialization.
The solution described above is based on what we have now, it is not necessarily the best design. To be honest, we haven't considered this extensibility aspect yet.
I would like to contribute on an extension for Soft Deletes referred here. Can you guide me where/how to start ?
@samarpanB lovely! Let me check with the rest of the team what would be the best place where to host the extension code. I'll do my best to get back to you by the end of this week.
@bajtos I have already created this extension and its available as a separate npm package. Here it is - https://github.com/sourcefuse/loopback4-soft-delete. Let me know if you want this to be moved into some centralized location for loopback community.
This issue has been marked stale because it has not seen activity within six months. If you believe this to be in error, please contact one of the code owners, listed in the CODEOWNERS
file at the top-level of this repository. This issue will be closed within 30 days of being stale.
This issue has been closed due to continued inactivity. Thank you for your understanding. If you believe this to be in error, please contact one of the code owners, listed in the CODEOWNERS
file at the top-level of this repository.