\documentclass{article}
\usepackage{ulem}
\pagestyle{headings}
\begin{document}
\part{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\newline
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.

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

\section{Server side Architecture}
\subsection{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? \newline
If so, we should provide some example how to go about it

TODO: Horde 5's rampage.php currently cannot handle unauthenticated requests. \newline
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\footnote{http://example.com/index.php?page=PageOutput}: \newline
The Horde Rampage Controller wants responses as strings or streams in the response object, but the handy core PageOutput\footnote{http://example.com/index.php?page=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\footnote{http://example.com/index.php?page=PageOutput} should not be broken for existing apps.

\subsection{PHP Namespaces}
Use php namespaces for new libraries and apps?

\subsection{PHP versions/features}
New apps should be allowed to require php7, even if built against horde5?

\section{UI / ajax / js}
\subsection{Avoid Imple in new apps?}
This is something michael once hinted when I tried to figure what imple actually is, how it works

\subsection{Rich UIs}
Use Horde\_Ajax\_Application and HordeCore\footnote{http://example.com/index.php?page=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?\newline
Currently, we embrace jquery-mobile for mobile-friendly touch UIs and the very ancient prototypejs for all other UIs.

\subsection{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)?

\subsection{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.

\end{document}
