6.0.0-git
2024-03-19
Last Modified 2018-09-26 by Guest

New App Design Proposals for H6

This is, at least for now, a list of talking points, not a list of documented decisions or suggestions
This is not about refactoring existing apps with thousands of LOCs but about understanding how to have a modern, lightweight start from scratch for new ideas.

Quality

Which commandline checks should any new app/code pass? horde-components qc (all or subset?)
Which level of an app's architecture should strictly be covered by unit/integration tests?
- All outgoing http requests (typical and known edge cases)
- All entry points for incoming http requests (typical and known edge cases)
- Any non-trivial actual computation/transformation of input data at library level (no need to test factored-out library code at app level though)

Server side Architecture

Inter-App and External Interfaces

Use horde registry->call API for inter-app, horde-internal calls or use callAppMethod?

Use routes and per-resource/page controllers by default instead of actual paths?
If so, we should provide some example how to go about it

TODO: Horde 5's rampage.php currently cannot handle unauthenticated requests.
Would be handy both for REST and page controllers (for non-loggedin). rpc.php has this. services/ajax.php looks like it has this.

TODO: Substitute for PageOutput:
The Horde Rampage Controller wants responses as strings or streams in the response object, but the handy core PageOutput class echoes headers and footers to stdout. A controller should have easy access to some substitute solution for header, topbar, sidebar, addscriptfiles, footer. The existing PageOutput should not be broken for existing apps.

PHP Namespaces

Use php namespaces for new libraries and apps?

PHP versions/features

New apps should be allowed to require php7, even if built against horde5?

UI / ajax / js

Avoid Imple in new apps?

This is something michael once hinted when I tried to figure what imple actually is, how it works

Rich UIs

Use Horde_Ajax_Application and HordeCore.doAction? This is what we currently do. However, At least a few instances of using controllers instead exist

Allow or even suggest some default modern javascript framework/building blocks like React?
Currently, we embrace jquery-mobile for mobile-friendly touch UIs and the very ancient prototypejs for all other UIs.

JS Coding Standards

Horde Coding standards currently include no guidance on how to format or structure js code of horde apps. Adopt some existing guideline?

Which kind of UI testing or JS Unit Testing should be preferred? (type, mocha)?

Default Development Platform

Not to limit anybody or impose restriction, but there should be something to suggest for getting a new horde test system up on any laptop in 5 minutes or max 10 commandlines.