Hello. I write down about applications of Chrome OS File System Provider implementation I developed here.
Last year, I developed and published the application called “Chrome MySQL Admin”. This application provides you the UI to manage your MySQL server. In this application, I implemented certain feature. It is to connect to the MySQL server with SSH2 protocol. For instance, the Port Forwarding feature was implemented in the application. That is, users can connect to his/her MySQL server via firewall/ssh2 server. This feature was implemented with libssh2, of course, as NaCl module.
The Chrome MySQL Admin is hosted on Github: https://github.com/yoichiro/chrome_mysql_admin
One day of this January, I knew the existance of the ChromeOS File System Provider API. I translated the API reference to Japanese: here to study the usage of the API set. It was Beta yet at the time.
So, I also knew that the SSHFS was already existed for Linux/Mac. Specifically, the implementation of the SSHFS uses the SFTP protocol internally.In other words, the SSHFS is a wrapper of SFTP. That is, if I can write the code to communicate between my application and SSH2 server with SFTP, I can develop/provide the file system like as same as the SSHFS. The libssh2 library has some functions to use SFTP protocol. Finally, I guessed that I will be able to develop the File System Provider implementation for SFTP.
I ordered my Chromebook to develop the File System Provider implementation, and got it! (of course, I checked “Get it today”)
Fortunately, Dropbox is providing enough APIs for implementing the File System Provider. I finally could complete developing the implementation for Dropbox. Also, I could study the behavior of File System Provider API via developing of the implementation.
As the first implementation for SFTP, I applied the multi-thread architecture. That is, when this application calls certain API, this application establishes the connection, handshakes, calls API and closes the connection. By this logic, multiple API calls are executed async. However, the handshaking cost was very large than my image. I modified the logic. That is, I implemented a queue to store the API call request. Each request will be executed sequentially, and the connection handshaked is shared by all requests. As the result, the application behavior became stable.
First, the SFTP implementation ( SFTP File System) has been released. Second, the Microsoft OneDrive implementation ( File System for OneDrive) has been released. I could develop the OneDrive implementation easily, because I already have the code set for Dropbox. Last, the Dropbox implementation ( File System for Dropbox) has been released. And, I’m improving their implementations continuously to increase the performance and fix a bug…
In Japan, Chromebook is not spreaded. But, I believe that Chromebook has many possibilities in Japan as well. And, I’m already spending a long time in Chromebook than my MacBook Air. The file system provider api provides many users many usage we don’t know yet, I guess. I intend to contribute a lot of things for Chromebook world!
If you are interested in each implementation, please visit each Github repository from the following URLs:
Also, if you want to develop a new implementation, you should read the following page first:
Oh, do you have a Chromebook? No? If no, you should buy some Chromebook right now!