Seeking Guidance on "Assets Library" Project Implementation for MIT App Inventor

Hii everyone,

I’m working on two proposals for GSoC, I’ve chosen the "Assets Library" project as my second option. I’m currently writing the implementation section and would really appreciate your feedback to confirm if I’m on the right track. Please take a look at my implementation mindset and let me know your thoughts!

Project Overview:
As mentioned in the project description, this project aims to enhance the app development experience in MIT App Inventor by allowing users to upload and organize sets of assets (like images and sounds) into a central library. These assets can then be easily imported into different projects, saving time and effort, especially for users working on multiple apps.

My Implementation Mindset:
Here’s how I’m thinking of implementing this:

  1. Central Asset Library:
  • Create a new section in the interface called "My Assets" for managing a personal asset library, placed inside the Palette section of the Designer.
  • Allow users to upload files at once, organize them into folders, and manage them.
  1. Importing Assets to Projects:
  • Add checkboxes so users can select individual assets, folders, or whatever they want to import.
  • Include a "Import" button (via a 3-dot menu) that, when clicked, opens a new interface listing things like delete,rename,import etc.
  • After clicking on "Import" we will show a pop in which list of projects where user want to import the Assets and provide checkboxes in this interface too, so users can select one or more projects to import the assets into.
  • After clicking "OK," the selected assets are pasted to the respective projects.

Questions for the Community:

  • Am I on the right path?
  • Does placing "My Assets" in the Palette section make sense, or should I consider a standalone section elsewhere in the interface?
  • How should I handle cases where an asset being imported has the same name as one already in a project (e.g., rename it automatically or prompt the user)?
  • Are there any performance concerns I should think about, like handling users with lots of assets or projects?

I’d greatly appreciate any guidance, suggestions, or feedback to help me refine this plan. Thank you so much for your time and support!
@ewpatton @Jeffrey_Schiller

1 Like

This one is a bit of a tricky one since we need to consider a few different aspects. For example, if we have a central asset repository for the user and they use that asset in a project, is the asset copied or is it by reference? If by reference, do we want to have copy-on-write semantics so that if the central asset is updated it doesn't change projects that reference the old version, or does updating the central asset update it for all projects linked to it?

As for the UI, I imagine we'd want to start by refactoring the project list into a more generic class for listing resources, and then have the existing project list and the new asset list system extend that, since most of the logic will be the same. We'd have to think about where that appears in the grand scheme of things.

We may also want to be careful about the idea of asset folders, in particular because our current Media section has no concept of it so we might have to flatten the hierarchy to make it work. If we do allow folders, we'd need to disallow the folder name of external_comps as well since that's reserved for extensions.

Think about these things and make sure to incorporate some of it into your project proposal and/or include a section on things to be decided during the project design phase.

3 Likes

Dear @DivynashuNYK,
jour job is very challenging and nice. In addition to everything that @ewpatton has already said, may I suggest you to keep in mind the restrictions to files/folders accessibility that are, year by year, increasing, and therefore the possibility that the access to a "common library" could be foolished by such restrictions in future releases of the OS ?
All the best !

1 Like