loopbackio/loopback-next

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

@dhmlau I'd be happy to work on a graphQL extension

@mpicard , thanks! I've created this issue to track any discussion.
#656

Hey @dhmlau I would like to contribute on the number 2 of the list

  1. Transports/protocols
    WebSocket
    MQTT
    gRPC (HTTP2 & ProtoBuffer3)
VMois commented

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

VMois commented

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:

@dhmlau @jonathan-casarrubias @akashjarad hi, I am interested in extension mqtt could I make some contribution?

@negrero , definitely! We've created this issue #710 with some info. Currently we're heads down in the coming release, there might not be much activities from our side yet, but feel free to continue the discussion in there.

Hey @dhmlau I would like to contribute on extension for Socket.io / WebSockets

@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!

@dhmlau @ssh24 @b-admike you I would like to work on the API Explorer. where should I start? is there any work in progress?

I would like to work on the API Explorer. where should I start? is there any work in progress?

@m3hari Nice! Adding support for API explorer is a bit tricky. Let's move this discussion to #749 please.

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.

@bajtos @dhmlau Has anyone started with Offline first synchronization which was mentioned by @bajtos in #512 ? I think that would be a good start.

@dhmlau If newbies are also accepted, I would really love to contribute to 5.Built-in Models . Thanks.

@privateOmega

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?

@bajtos @raymondfeng

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.

elv1s commented

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.

Hello @bajtos , I would like to contribute on an extension for Soft Deletes referred here. Can you guide me where/how to start ?

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.

stale commented

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.

stale commented

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.