Description
[UPDATE: This discussion began as Project/File UI design but various issues pushed us to consider many other factors simultaneously. Once design of certain elements is deemed final, separate issues will be created to house each element individually]
Here are some notes from our initial discussion on file navigation:
File Navigation
Let’s create a list of common scenarios:
- New Project (No files)
- Minimal project (1 file)
- Sandbox project (multiple independent files)
- Complex project (multiple files w/ entry point)
Questions to ask ourselves:
What’s good and bad about the way we’ve done things in the past?
People are struggling with how to add updated files for a given library… They include libraries inappropriately.
The names are different on every platform.. C drive on windows.. you don’t see the drive name but you see the user folder on mac/linux (mobile). Some platforms hide the nature of the storage of the medium. You don’t know where it is.. kind of like iCloud / cloud storage.
Simplify the way we manage files (hide the storage medium) but retain the ability to create sub directories within the project.
Most of the time our projects are stored in a given folder. Some files in addition to the executable source code.
Project selection — then project directory specific file system. Have the ability to export/import source for personal backups / sharing with others.
We do have a need to allow you to open up or view files from other projects.
- Challenge: Open files from other projects — jump between projects. We can’t have multiple projects open at once like we do in common IDEs as the ChromeOS or web app will only allow one project at a time.
- Fast project switching.. how will we tackle that?
- Perhaps we move to an autosave sort of platform.
- No version control at this point.. maybe down the road. Eventually we’d like every file to have it’s own history. A little database of revisions.
- Keep in mind we may be adding version control sounds
- Simplicity with flexibility. Obfuscate any complexity from the user under the hood.
- Some people are such bad housekeepers at managing their files that they trip over things.
- With parallax we hope that we can prevent folks from making their own file system mistakes such as:
- Making backups of source code in whatever way that they want.
- Make copies of file.. Program1.txt, Program2.txt, Program2_final.txt, etc..
- The file is it’s own entity. We want the user to never feel they need to make a backup of it. Whenever you refer to the system.
- Ultimately we want to make it so that every file has a unique ID.. with an alias. The system would manage the file itself.
- Fuzzy text search for file name.
- There are no objects or classes in the current iteration but there are routines you could call.
What needs are different from the user’s of the parallax IDE?
How might we handle this design challenge on a small screen vs. a large screen?
- More automatic storage.
- removing some of the file system complexities.
- Hide the difference across platforms.
- We need to keep it familiar across platforms.
- Address file drawer.
- Project switching.
- Directory creation.
- File creation.
- Moving file / renaming.
- Deleting a file.
- Mobile first.
In the Future:
8. Dependency Management.
Self managed — including a library. Third party and parallax based. Can we automate this process?
Stay away from dropping zip files onto the file drawer.
Version conflicts — automatic repository system. Has to retain a database of sorts so that this file is referenced (i.e. Gemfile or Podfile)
Send examples on Cocoapods, NPM, RubyGems.