New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calling for Contributors on LB Extensions #647

Open
dhmlau opened this Issue Oct 13, 2017 · 34 comments

Comments

Projects
None yet
@dhmlau
Contributor

dhmlau commented Oct 13, 2017

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 dhmlau changed the title from Calling for Extension Developers to Calling for Contributors on LB Extensions Oct 13, 2017

@mpicard

This comment has been minimized.

Member

mpicard commented Oct 17, 2017

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

@dhmlau

This comment has been minimized.

Contributor

dhmlau commented Oct 17, 2017

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

@jonathan-casarrubias

This comment has been minimized.

jonathan-casarrubias commented Oct 20, 2017

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

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

This comment has been minimized.

VMois commented Oct 20, 2017

Hey @dhmlau and @jonathan-casarrubias. If it's possible I want to help with number 2 of the wish list.

@dhmlau

This comment has been minimized.

Contributor

dhmlau commented Oct 20, 2017

@jonathan-casarrubias, @VMois , Thanks for your interests! Any particular one you'd like to work on? MQTT? gRPC?

cc @raymondfeng

@VMois

This comment has been minimized.

VMois commented Oct 20, 2017

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

@jonathan-casarrubias

This comment has been minimized.

jonathan-casarrubias commented Oct 23, 2017

+1 on gRPC as first priority

@jonathan-casarrubias

This comment has been minimized.

jonathan-casarrubias commented Oct 25, 2017

@dhmlau What would be the next steps for this?

@dhmlau

This comment has been minimized.

Contributor

dhmlau commented Oct 25, 2017

@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

@akashjarad

This comment has been minimized.

akashjarad commented Nov 1, 2017

@dhmlau @jonathan-casarrubias i would like to work on MQTT extensions.

@bajtos

This comment has been minimized.

Member

bajtos commented Nov 8, 2017

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

@Negrero

This comment has been minimized.

Negrero commented Nov 10, 2017

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

@dhmlau

This comment has been minimized.

Contributor

dhmlau commented Nov 10, 2017

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

@kattsushi

This comment has been minimized.

kattsushi commented Nov 15, 2017

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

@jonathan-casarrubias

This comment has been minimized.

jonathan-casarrubias commented Nov 15, 2017

@Negrero @kattsushi I think you guys can inspire your self by reviewing the REST and gRPC Components

@kjdelisle

This comment has been minimized.

Contributor

kjdelisle commented Nov 15, 2017

@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

@jonathan-casarrubias

This comment has been minimized.

jonathan-casarrubias commented Nov 15, 2017

@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

@kattsushi

This comment has been minimized.

kattsushi commented Nov 15, 2017

@jonathan-casarrubias sure! i will check out thx!

@m3hari

This comment has been minimized.

Contributor

m3hari commented Nov 17, 2017

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

@bajtos

This comment has been minimized.

Member

bajtos commented Nov 21, 2017

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.

@kattsushi

This comment has been minimized.

kattsushi commented Dec 5, 2017

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!

@bajtos

This comment has been minimized.

Member

bajtos commented Dec 8, 2017

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.

@privateOmega

This comment has been minimized.

privateOmega commented Jan 11, 2018

@dhmlau I would like to contribute to the project.

@dhmlau

This comment has been minimized.

Contributor

dhmlau commented Jan 16, 2018

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

@privateOmega

This comment has been minimized.

privateOmega commented Jan 16, 2018

@dhmlau Mongodb connector sounds nice, if that's a good one for a beginner to start with.

@bajtos

This comment has been minimized.

Member

bajtos commented Jan 18, 2018

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

@privateOmega

This comment has been minimized.

privateOmega commented Jan 18, 2018

@bajtos Thanks for the pointers. Will look into those.

@privateOmega

This comment has been minimized.

privateOmega commented Jan 18, 2018

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

@mustafa-yilmaz

This comment has been minimized.

mustafa-yilmaz commented Feb 4, 2018

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

@bajtos

This comment has been minimized.

Member

bajtos commented Feb 6, 2018

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

@mustafa-yilmaz

This comment has been minimized.

mustafa-yilmaz commented Feb 8, 2018

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

@raymondfeng

This comment has been minimized.

Member

raymondfeng commented Feb 8, 2018

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

@dhmlau dhmlau removed the non-DP3 label Aug 23, 2018

@elv1s

This comment has been minimized.

Member

elv1s commented Sep 26, 2018

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!

@bajtos

This comment has been minimized.

Member

bajtos commented Oct 5, 2018

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment