Reusable Items and Sharing (Collaboration)

The following Feature Request is a long overdue outline I have of having Reusable Items in Appsheet.

It is part of a response in part @tony request:

This is just the initial outline. I will elaborate further in the future as and when I work on my Apps where it will trigger further thoughts.

1. What would be Reused and then Shared?

The basic concept of reuse could be based on table which is reused (for example the Person Table with all the details of a Person like Name, Email, Phone) where its structure is the same and it uses some Slices, Views, Actions, and Workflows that are common to all or some applications. Where there is reuse of some of these in an application, its inclusion should be optional, i.e. enabled to disabled.

Another concept of reuse of based on Expressions where Functions could be declared that could return a certain result, or simply undertake series of execute a set of expression statements. For example, Security Access which determines access based on expressions that evaluate Policy (sections of or whole applications), Organizational Rank, Group Allocations (Selected or as a Project), Individual Exclusions/Inclusions against that of a Person’s Identity.

Some Items like Data Slices, Views, Report could also have Parameters. An example of a parameter could relate to time periods, numeric/fiscal ranges, ranking/priority, categories, etc. Currently you have to create a separate Slice with all its attributes just to have time period for 7 days then make another one for 14 days. So a Slice could be declared as reusable and a new one could simply inherit all it characteristics (if there is any benefit in predefining it, e.g. Indexing and Sorting). Alternatively, it could just be dynamic. (Refer to Section ‘Implementation of a Reusable Item – Dynamic or Copied’ below.)

A Reusable Item perhaps might make reference to column in User Settings. The Reusable Items could instead have its own settings that perform like a Global Variable does in programming languages.

A Group of Reusable Items, particularly those based on a Table, could be defined as a Module, hence Modular Design.

Items that are reusable can that be shared, as described further in the next section.

2. Sharing Items (and Collaboration)

A reusable item could be shared in a library or gallery in these ways of collaboration:

• Between nominated applications
• Between nominated developer users
• Publicly for any developer

2.1 Between Nominated Applications
Currently, I reuse data sources with their tables between applications. For example: the PERSON Table is reused in different applications.

2.2 Between Nominated Developer Users
These might form within an organization or amount multiple organizations into a Team or a Work Group.

2.3 Publicly for any Developer
These would be available for any Developer to use. It could be similar to how Demo Apps work, that allow anyone to see and copy an application.

3. Implementation of a Reusable Item – Dynamic or Copied

A Reusable Item can be used in an Application either Dynamically or Copied.

3.1 Dynamic
The Reusable Item would in included via reference, much like a program library in a conventional programing environment, like #include in C Programing or Objects Libraries in C#/C++.

3.2 Copied
A Reusable Item could be copied as to be an adaptation of it. It would copy all of its contents into an application, rather than referring to them.

4. Versioning and Release Control

All items shall be versioned and published as releases as a form of control. This would avoid regressive problems of changes occurring that might be ahead of how its implemented in other applications. For example, if a Column is renamed or added in the Data Table, it could create an error that prevents other applications from operating.

Just for some reference, this topic has been raised in some way over these forum posting in the past 2 years.

It actually stated first in this blog post:

where it mentioned “Modular design—ability to create, share, and re-use app “modules””

as I asked about some time ago in this post:

Then its turned up occasionally in these posts.

I think the feature would be highly beneficial to experience developers and those whose business is largely based on Appsheet Consulting. But I can see beginners quickly being able to use modules and items of it to rapidly build more complex applications, impressing their users and decision makers in their respective organisation. This actually leads to another topic I might elaboate on sometime with organising Modules into an overall Framework.

Thanks for the interesting summary @aucforum. That’s super helpful.

What’s your motivation for this? Are you often building different apps with lots of overlapping functionality? Or is it more for collaboration e.g. sharing app components with other people?

Currently I am organizing my own Application Framework where some Apps are or contain modular parts.

A simple list so far is:

App Name Description
Person Details Tracker Basic Person Table Management which will be able to have its data used by other related Appsheet Applications.
Knowledge Base Editing Application This Knowledge Base App contains information in different formats like FAQ, Web Links, etc. Additional Formats will be made in the future.
Knowledge Base Browser App This Knowledge Base Browser App contains information to READ ONLY in different formats like FAQ, Web Links, etc. Additional Formats will be made in the future. It is only intended for end users, and not for Authors.
Issue Tracking Application Issue Tracking Application
Task Tracking Application Basic Tracking of tasks, for any purpose. Could include Projects, School work, etc.
Communications Tracker Communications Tracking of episodes of contact, for example: Phone Calls, Email, Letters/Parcels, Chat Messenger Sessions etc.
Project Profile Administration and Maintenance This application administers the creation and maintenance of Project Profiles as used throughout the many Appsheet Apps under my framework.
Appsheet Application Documenter "This application assists in the documenting of the various components used within an Appsheet Application like: - Slices - Views - Actions - Workflows etc.
Common Template Administration “Common Templates of a single item or set of items as used in different Appsheet Applications in the Framework are Administered here These templates could be used in Issues, Tasks, Comms (Emails, Episodes), etc.”
Configuration Administration Configuration Administration of Appsheet Apps for areas like Access Policy, Security Access Matrix, Lookup Codes Table, Email Templates, etc.
Document Tracking for various official documents.

The all reuse the same tables, in the background which is mostly in separate google spreadsheets as well as Google Documents for the mail merge emails sent in the workflow (crude reporting). With that, the need for some of the columns, slices, Views, Actions, Workflows, and a myriad of expressions to be reusable or copyable should be obvious. For example, nearly every one of these apps uses the People Table

With this Framework Approach, I can standardize many parts of a derived solution.

It was inspired by previous applications I made which contained so many tables, and data that the performance was increasingly poor and complex to maintain and develop to the point of being impractical.

When I make a new application, I have a template application that contains some of the key tables and items like:

Template One Table
Template Two Table
Local Variables Table
Access Policy Table
Person Table

I incrementally add more to it as it evolves. I look to add a Project Table soon and some sort of Organisation Table and Categories Table too, as those are common parts of nearly every application I would create for some substantial productive purpose.

The Template One and Template Two Tables are generic as a place holder, where I rename them as needed and already Slices, Views, Actions and Workflows ready-made that I only need to change the data source and then rename them is a few places.

I have several manual steps I use to copy the template app and its underlying folders, and then edit the derived application to become unique to the intended purpose.

3 Likes

Actually, just another thought, with reuse and apps, might there be an additional mechanism for Appsheet developers to sell these as subscription or one off services? Appsheet could have its own ‘shop’ for third party developers like Google Play, iTunes, Atlassian Marketplace https://marketplace.atlassian.com/ etc?

@tony How is this coming along?

You know… Just curious… :wink:

Hi @aucforum, no updates on this yet.