Skip to content

Latest commit

 

History

History
486 lines (342 loc) · 17.5 KB

ROADMAP.md

File metadata and controls

486 lines (342 loc) · 17.5 KB

2020 Goals and Focus

Goal#1 - Enable as many LoopBack 3 users to migrate to LoopBack 4 as possible

With LoopBack 3 going end-of-life at the end of 2020, we are continuing to focus on the following areas:

  • finish the migration guide to help LB3 users to migrate their applications to LB4
  • offer some level of tooling support to make the migration easier
  • fill in feature parity gaps by either implementing the features in LB4 or recommending a solution using existing libraries
  • Integrate LoopBack 4 into IBM API Connect

Goal#2 - Keep adopting latest technologies to stay relevant

While enhancing our core code base, we'd like to continue to explore the possibility of using and/or integrating latest technologies with LoopBack 4.

Some of the areas we'd like to explore, but not limited to:

  • messaging and pub/sub event style, e.g. Kafka, MQTT
  • cloud native integration
  • native support on GraphQL
  • modernize the connector infrastructure and code base

Goal#3: Nurture our community and encourage more contributions

Community contributions are vital to us. It not only accelerates our development, but also helps building deep LoopBack knowledge in the community.

We would like to encourage community contributions by make available to the community a list of GH issues that we want to finish in a short term by using the help wanted and 2020Qx labels.


Q4 2020 Roadmap

We published a blog earlier to invite our community to enrich LoopBack and its community together. We continue to encourage more participation and contributions from our users by sharing our plans on some of the areas.


Q3 2020 Roadmap

Scope

Documentation improvement

Details to be discussed in #5113

Feature parity

Integration with other technologies/libraries

  • TypeORM integration, #4853
  • Kafka integration, #1925

Bugs, developer experience, internal tooling

Details to be discussed in #5669 and linked issues.

  • mocha parallel testing
  • identify and investigate tests taking a longer time

Switch from CLA to DCO

  • first iteration to consider: loopback-next, loopback.io and loopback-datasource-juggler.

Q2 2020 Roadmap

Overview

  • Finish migration guide for both general runtime and authentication & authorization.
  • Implement the feature parity tasks that are highly requested by users
  • Finish the APIC/LB integration
  • Continue with bugs and developer experience improvements

Scope

Migration guide

Features / Feature Parity with high user votes

API Connect/LB integration

  • Make sure there is documentation how one can import OpenAPIv3 from LoopBack and import into API Connect. Documentation could be in loopback.io or API Connect Knowledge Center
  • Update APIC toolkit to include LoopBack 4
  • Import API story:
    • OpenAPI enhancer service with APIC OpenAPI enhancer extension
    • Article to IBM Developer site
    • Eventually test with shopping app #4498

Tech debt / infrastructure

  • Replace "request" with something else #2672
  • Investigate the possibility to reduce build time, e.g. Use TypeScript project reference with 3.8, using yarn/pnpm instead of npm.
  • Investigate the possibility to reduce test time, e.g. run mocha tests in parallel.

Documentation Enhancement

Includes migrating Useful LB3 Documentation to LB4.

  • Docs: Add "Working with Data" section #2527
  • Tutorial on file upload: with example repo and how to customize for your own use case.
  • Running and debuggin apps
    • debug string #4845
    • error handling - how to configure http response to configure error. how to report error from controller (see strong-error-handler) #4846
  • project layout reference https://loopback.io/doc/en/lb3/Project-layout-reference.html #4847
  • (stretch goal) consider the possible rearrangement in sidebar items on security advisories, contributing to LB, LTS to LB4 site

LB4 adoption

  • Articles/materials that can help more users adopting LoopBack 4

    • write an article about what LB can offer on top of Express #4852
    • Write an article/docs on "from API to UI: LoopBack + Angular" - using client generator #4849
    • write an article about LB + TypeORM/Sequelize/Mongoose/Prisma. #4853 for TypeORM
  • Building reusable workshop material - possibly for NodeConf.EU, CASCON, etc.


Q1 2020 Roadmap

Overview

  • Migration: it will continue to be our focus, including filling up the details to the migration guide and adding tooling to make migration easier.
  • Tackle issues labelled as bug or developer experience
  • Issue cleanup: take some time to triage open issues and possibly some smaller enhancements that we never get the time to do.

Scope

Migration

  • Migration guide #453
    • continue the work in Q4 2019 for migrating:
      • boot scripts
      • model mixins
      • remoting hooks
  • Tooling:
    • improve existing commands like import-lb3-models
    • add new commands (e.g. import datasources).

Authentication

API Connect / LoopBack 4 Integration

  • Spike on getting APIs created from LB4 imported into APIC, #4115

Create models & REST APIs dynamically at runtime

  • Dynamic binding/rebinding of controllers after app start #433
  • How to build models, repositories and controllers dynamically at runtime #4296
  • Docs for exposing REST API of a Model with no custom classes #2740 (stretch goal)

Open Issues with bug or developer experience labels

  • Would like to put more time in tackling those. Will plan it as part of the monthly milestone planning.

Stretch Goals

From model definition to REST API with no custom repository/controller classes #2036

  • Add CrudRestApiBuilder to @loopback/rest-crud #3737
  • Example app showing CrudRestApiBuilder #3738

Robust handling of ObjectID type for MongoDB #3720

  • Spike: robust handling of ObjectID type for MongoDB, #3456

Shopping example app

  • clean up authentication and authorization

Q4 2019 Roadmap

Overview

In Q4 2019, here are the stories we would like to focus on:

  • wrap up on authentication and authorization stories
  • continue with Inclusion of Related Models epic
  • add more support for declarative support - From model definition to REST API with no custom repository/controller classes
  • revisit the migration story targeting to have a migration guide

Scope

Authentication

  • Token based authentication in API Explorer (Spike done in Q3)
  • Refactoring, #1996

Authorization

  • Update authorization tutorial #3694
  • Add authorization to shopping example, #3695

Inclusion of related models

Finish the MVP scope as tracked by Epic #1352

  • Reject create/update requests when data contains navigational properties #3439
  • Add inclusion resolvers to lb4 relation CLI #3451
  • Verify relation type in resolve{Relation}Metadata #3440
  • Run repository tests for PostgreSQL #3436
  • Run repository tests for Cloudant #3437
  • Blog post: announce Inclusion of related models #3452

See the post-MVP Epic for the list of stories out of scope of the initial release: #3585

From model definition to REST API with no custom repository/controller classes

The Epic: #2036

  • Improve defineCrudRestController to create a named controller class #3732
  • Add defineCrudRepositoryClass - a helper to create a named repository class #3733
  • Model API booter & builder #3736
  • Add CrudRestApiBuilder to @loopback/rest-crud #3737
  • Example app showing CrudRestApiBuilder #3738

Stretch goals:

  • From relation definition to REST API with auto-generated repository/controller classes #2483
  • From datasource config to Service REST API with no proxy/controller classes #3717

Migration guide

The Epic: #453

  • Spike 1: General runtime - see #3718
  • Spike 2: Authentication & authorization - see #3719
  • Prioritize & plan follow-up issues identified in the spikes

ObjectID Coercion

The Epic: #3720

  • Model.toObject() should preserve prototypes (e.g. Date and ObjectID values) #3607
  • Spike #3456

Production deployment/logging/monitoring, #1054

  • Blog post showing the microservice version of shopping example and mention what's the gaps, #3715

Test/Enable Node.js 12 support for connectors - #3072

  • loopback-connector-kv-redis
  • loopback-connector-grpc

Preparation of CASCON workshop and poster

Infrastructure

Stretch Goals

  • Review extensions that are upvoted by lots of people.   #512
  • Support ENUM type, #3033

Q3 Roadmap

Overview


In Q3, there are a few groups of tasks we'd like to work on:

  • Continue with the stories from Q2: Authentication, Authorization, Inclusion of Related models
  • Feature parity gap: Declarative support
  • Internal tooling/infrastructure: support Node.js 12 in juggler & connectors, reduce build time, etc.
  • Juggler-next: some groundwork to prepare us to work on juggler-next, e.g. spike on how the code resides affect our build process

Scope


Authentication

  • Token based authentication in API Explorer. Spike
  • Stretch goal: enable class level @authenticate decorator: #2460

Authorization

  • Complete the Add authorization component PR: loopbackio/loopback.io#857
  • Common layer for authentication & authorization #2900
  • Add authorization to example-shopping repo

Inclusion of Related Models #1352

  • awaiting to @bajtos' spike to create the tasks

From model definition to REST API with no custom repository/controller classes (Declarative Support) #2036

Support of Node.js 12 #3072

Internal tooling - to address build time

  • Spike: Investigate setting up Windows CI workflow for connectors using Azure Pipelines, #3161

Documentation improvement

  • Tasks created according to this proposal: #2925

Miscellaneous

Bug fixes / Developer Experience Improvements

Juggler next

  • Improve current juggler v4 to allow connectors to implement DAO/KVAO methods as async functions returning a promise (not accepting a callback).
  • Rework loopback-connector from ES5 codebase to ES2017 (class keyword, async functions). This is a breaking change for connectors consuming this module, but should be done in backwards-compatible way from the point of view of LB4 applications.
  • Upgrade most (if not all) of our connectors to use the new major version of loopback-connector, leverage class inheritance and async functions.

Stretch Goals


Juggler next

  • Convert base repo (e.g. loopback-connector) and more popular connectors to TypeScript and to use async/await

Feature parity

  • Operation hooks. Spike
  • REST layer improvement #1452
    • controller cannot control the header and content type. use case: file download.
  • Validation
    • Advanced validation - e.g. email validation - not supported in json schema.  AJV allows to support certain keywords. Spike.
    • AJV only validating in request body but not validating parameters, queries
    • validation in juggler