Skip to content
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

Inspiration from Mayhem? #144

Open
dylans opened this issue Feb 8, 2017 · 1 comment
Open

Inspiration from Mayhem? #144

dylans opened this issue Feb 8, 2017 · 1 comment

Comments

@dylans
Copy link
Member

dylans commented Feb 8, 2017

While we've taken a very different approach to application architecture than we were first planning with Mayhem ( https://github.com/sitepen/mayhem ), there are a few things it did well that we may want to consider addressing somewhere in Dojo 2 (some/most are likely already addressed or not relevant, but trying to make sure we're not ignoring good ideas we had that should exist in a future version of dojo/app perhaps):

  • Testing through dependency injection and mocking... for example, with a single configuration line in an app, you could switch the entire app from using real data sources to a mock data source, e.g. https://github.com/unifiedinbox/openinbox/blob/master/src/app/main.ts#L2 )
  • Security (user auth, login, logout, isAuthenticated, checkAccess, other information about a user, and some form of RBAC)
  • Routing ( I believe our router in dojo 2 is more than sufficient)
  • Configuration overrides/inheritance (the approach for how to extend/override good defaults such as the router was pretty elegant)
  • Data modeling (business logic, use of models to define structure of data in stores, as well as data validation and persistence)
  • Constructors (all parameters for all constructors were a single kwArgs object, the idea being that Constructors could always be extended in a backwards-compatible manner, since new properties could simply be added to the list of accepted properties without a signature change)
  • Event handlers... everything that is event driven returns a handler with a remove method, and then APIs exist to mass remove event handlers
  • Consistent object destruction (e.g. all objects were destroyed by calling object.destroy, which would handle any cleanup needed)
  • Standardized paths within applications for certain modules, e.g. app/models, app/routes, app/widgets, etc. (basically provide good guidelines for consistent app development)
  • Application creation: instantiate an application object with custom configuration. Main purposes of the application object were data binding, overall application error handling/diagnostics, i18n, router configuration (navigation and state management), event scheduling, ui container, and user authentication and authorization (which would allow the app to determine things like which widgets could be displayed)
  • Common run method for all things to start them
  • View manager to switch between html, native, and other things like svg or webvr while sharing common APIs and interfaces (I think this is achievable with how we've designed Dojo 2, but obviously not put to practice yet)
  • Somewhat of a DSL for templating and defining application views, html with various commands... I think we have this covered, just differently
  • Pointer events support
@dylans dylans added this to the 2017.03 milestone Mar 6, 2017
@dylans dylans modified the milestones: 2017.04, 2017.03 Mar 25, 2017
@dylans dylans modified the milestones: 2017.04, 2017.05 Apr 29, 2017
@dylans dylans modified the milestones: 2017.06, 2017.05 May 14, 2017
@sebilasse
Copy link
Contributor

sebilasse commented May 27, 2017

@dylans Regarding

Security (user auth, login, logout, isAuthenticated, checkAccess, other information about a user, and some form of RBAC)

What I did the last month (in TS and with help of dojo2)
• user auth, login, logout

  • OAuth1
  • OAuth2
  • GPGAuth
  • MailAuth
  • IndieAuth (incl. several enhancements) [for flow see https://indieauth.com]
  • SMSAuth
  • OpenId

• isAuthenticated, checkAccess
next step after creating visual components

• other information about a user

  • SiteParser
  • MicroformatsParser (based on the brilliant Glenn Jones' stuff)
  • SILO Parser (vendor specific things)

• RBAC
this is currently actively discussed in the indieweb community ...

Tell me if should send something.

@eheasley eheasley modified the milestones: 2017.06, 2017.07 Jun 6, 2017
@dylans dylans modified the milestones: 2017.07, 2017.08 Jul 29, 2017
@kitsonk kitsonk modified the milestones: 2017.08, 2017.09 Sep 4, 2017
@dylans dylans modified the milestones: 2017.09, 2017.10 Oct 10, 2017
@kitsonk kitsonk removed this from the 2017.10 milestone Oct 30, 2017
@dylans dylans added this to the 2018.01 milestone Dec 22, 2017
@dylans dylans modified the milestones: 2018.01, 2018.02 Feb 2, 2018
@dylans dylans removed this from the 2018.02 milestone Feb 28, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants