Introduction
![](media/lib/matt-icons_folder-white-300px.png)
Folders are a metaphor for data access.
A folder tree is an organizational concept.
![](media/lib/1269294461-300px.png)
SDK
FoldersJS provides a software toolkit for client, server and peering relationships using a common set of features.
Basics
Folders are containers with a name and set of properties that can be opened to list further sub-folders and files. The standards in web browsers are still evolving, relating to Files and File Systems. In the alpha version of this software, all files present a file type and content type. With the HTML5 standard, a file could be considered a Blob.
Client
Client commands
- ls This command will list the contents of a folder.
- cat This command will read a file entry until it has been read completely or is canceled.
- write This command will attempt to write data to a file entry.
Client attributes
- server This attribute is set when an embedded server is available for use.
- features This attribute is used to hint what features a server supports.
Client utilities
-
stub
This utility acts as a server with test data for use during development and automated testing.
-
union
This utility presents several servers as sub-folders.
-
sync
This utility lists two sub-folders and presents methods to copy missing files from one folder to the other.
Server
Best Practices
Folders packages should follow these practices:
- Support back-pressure for reasonable memory usage
- Compatibility with common clients of the protocol
- Present human-readable results as Markdown
- Present machine readable objects as JSON
- Launchable and controllable from the folders-cli project
Peering Protocols
Folders modules will often include full client and server sets for accessibility across existing software.
A proof of concept for peering is included in the main project
HTTP Server-Sent Events are a means of quickly sending and processing small amounts of data in web browsers.
tweetnacl is a well-known library used to box and unbox messages when transmitting over insecure channels.
folders-http provides a proof of concept for web browsers to interface with the full toolkit
Projects
Currently in alpha state, these projects explore compatibility with common services. This projects are included in the Folders CLI development toolkit.
- FTP: once ubiqituous on the Internet for uploading and downloading files, the FTP protocol is still widely used in academia and business. (folders-ftp)
- SSH: providing encryption, the SSH ecosystem includes the spiritual successor to FTP, dubbed SFTP and a host of other networking features for the transfer of data and execution of commands in a reliable and trusted manner. (folders-ssh)
- HTTP: the most common protocol for end-users, HTTP is a robust mechanism for transfering data and is most often used to serve websites. Data transferred over HTTP is often interpreted by a web browser or software service. The Folders HTTP project provides various client-server protocols currently in experimental state. (folders-http)
- S3: created by Amazon Web Services (AWS), this protocol is now widely supported by cloud providers for the storage and retrieval of objects over the HTTP protocol. (folders-s3)
- WebHDFS: from the Hadoop project, this protocol is served over HTTP and provides Hadoop ecosystem software efficient access to files and folders for big data processing. Hadoop projects may support the S3 protocol as well. (folders-hdfs)
- LDAP: used by many corporations as part of their infrastructure, LDAP services maintain information about users and service accounts and the access to resources that they may be granted. (folders-ldap)
- Hive: created by Facebook, Hive is now commonly used in the big data ecosystem as a means for analyzing and transforming structured data sets. (folders-hive)
- Presto: created by Facebook, Presto provides connections to multiple data systems (including Hive) for in-memory analysis and transformation of data sets (folders-presto)