Hi,
I would like to help contribute to the Native Client project - expose new filesystems to nacl_io.
My current status is that I took a look of the technical overview of Native Client, and the nacl_io library but I have not dived into the technical details of the Native Client technology, how to get the code built, etc.
I am a newcomer of working on a open-source project.
I am not very sure what information, such as what my technical skill set I have, why I would like to contribute the Native Client project, how much time a week I have for the Native Client project, etc I should provide.
Could you please get in touch with me to get me started?
Thanks,
Patrick
Ben,
I actually want a project that is technically tough. I would like to apply for software developer jobs at large software firms such as Google/Microsoft/Amazon/etc in the future. I think a project that is seeking contributors, has a code base with high-quality code, is active, and has active members with high technical skills is going to be helpful.
I am going to look at webports to get started.
I am not considering making a proposal for GSOC, Google Summer of Code.
Thanks,
Patrick
Ben,
The cause for adding a filesystem to nacl_io,is for your developers. It would be great to have new filesystems to mount in the NaCl Dev Env: https://developer.chrome.com/native-client/nacldev, as written here.
While searching for the cause, I saw another post that described the approaches of adding a filesystem
I look to be able to start to work on the technical side from the described approaches, could you please reply right now, which file systems, Google Drive, Githib, and Dropbox, are good to be mounted?
Could you please reply if I should sign Google Individual Contributor License Agreement now?
Could you please reply an issue should be created for tracking? If yes, which bug database Chromium or Native Client needs to be opened for tracking?
In case there are any things in your reply I miss to get back any of that, please let me know.
Thanks,
Patrick
Ben,
The cause for adding a filesystem to nacl_io,is for your developers. It would be great to have new filesystems to mount in the NaCl Dev Env: https://developer.chrome.com/native-client/nacldev, as written here.
While searching for the cause, I saw another post that described the approaches of adding a filesystem
I look to be able to start to work on the technical side from the described approaches, could you please reply right now, which file systems, Google Drive, Githib, and Dropbox, are good to be mounted?
Could you please reply an issue should be created for tracking? If yes, which bug database Chromium or Native Client needs to be opened for tracking?
On Monday, April 18, 2016 at 5:36:46 PM UTC-7, Patrick Chan wrote:Ben,
The cause for adding a filesystem to nacl_io,is for your developers. It would be great to have new filesystems to mount in the NaCl Dev Env: https://developer.chrome.com/native-client/nacldev, as written here.
While searching for the cause, I saw another post that described the approaches of adding a filesystem
I look to be able to start to work on the technical side from the described approaches, could you please reply right now, which file systems, Google Drive, Githib, and Dropbox, are good to be mounted?
Any of those would be useful, feel free to choose the one that you're most interested in.
On Wednesday, April 20, 2016 at 2:52:48 AM UTC+9, Ben Smith wrote:On Monday, April 18, 2016 at 5:36:46 PM UTC-7, Patrick Chan wrote:Ben,
The cause for adding a filesystem to nacl_io,is for your developers. It would be great to have new filesystems to mount in the NaCl Dev Env: https://developer.chrome.com/native-client/nacldev, as written here.
While searching for the cause, I saw another post that described the approaches of adding a filesystem
I look to be able to start to work on the technical side from the described approaches, could you please reply right now, which file systems, Google Drive, Githib, and Dropbox, are good to be mounted?
Any of those would be useful, feel free to choose the one that you're most interested in.After double checking which file systems have already been mounted in native-client-discuss, some file systems may have been already mounted. I am going to verify with each person who wanted to mount a file system so duplicate work is not done.
Ben, I would like to seek another help. I attempt to let the mounted file system to Google Drive be able to perform the file operations and directory operations listed in nacl_io_demo. My code for handling the mounted file system to Google Drive is put under nacl_sdk/pepper_49/src/nacl_io/ and in a file nacl_sdk/pepper_49/src/nacl_io/googledrivefs/googledrivefs.cc. A class GoogleDriveFs that extends Filesystem is defined in googledrivefs.cc. When fopen(<filename>, “r”) is called in a directory /dir in nacl_sdk/pepper_49/examples/demo/nacl_io_demo/handlers.c, GoogleDriveFs::OpenWithMode(const Path& path, int open_flags, mode_t mode, ScopedNode* out_node) in googledrivefs.cc is run with the passed arguments: path contains /dir/<filename> open_flags is 0 mode is 0 The same arguments are passed when opendir(<dirname>) is called in a directory /dir in nacl_sdk/pepper_49/examples/demo/nacl_io_demo/handlers.c, which runs GoogleDriveFs::OpenWithMode(const Path& path, int open_flags, mode_t mode, ScopedNode* out_node) in googledrivefs.cc with the passed arguments: path contains /dir/<dirname> open_flags is 0 mode is 0 The information from OpenWithMode is not sufficient to see if a user would like to open a file or a directory. When Google Drive has a directory that has the same name a user is opening a file with, OpenWithMode does not know whether to return an error for the absence of a file or to return PP_OK. Could you please tell me what you think is practical for resolving? Thanks, Patrick
Ben,
Around 06/01/2016, you helped resolve my question about OpenWithMode not having enough information to see if a user is opening a file or a directory on the Native Client project - expose new filesystems to nacl_io.
Afterward, I kept coding and now the code has been completed. I would like to check with you on my implementation of the code.
The implementation is simple. I quickly get a simple implementation done to see if a simple implementation is enough for the use of your developers and submitting a patch. I need to complete the open source project as soon as possible. I would like to put the open source project in my resume when applying for jobs so to show that I am able to do a project with an engineer in a large software company.
The implementation contains some code from this piece of code and that piece of code from other codes. I sometimes was writing the code but the code had been shown before.
I attached the zip file with the code based on nacl_sdk/pepper_49
googledrivefs.cc – please put at src/nacl_io/googledrivefs/googledrivefs.cc
googledrivefs.h – please put at include/nacl_io/googledrivefs/googledrivefs.h
Makefile – please put at src/nacl_io/Makefile
kernel_proxy.cc – please put at src/nacl_io/kernel_proxy.cc
node.h - please put at include/nacl_io/node.h
googledrivefs_demo – please put at examples/demo/googledrivefs_demo
googledrivefs_demo/examples.js contains 2 variables CLIENT_ID and CLIENT_SECRET, that have to be set from the client ID and client secret made from Google Developers Console.
Could you please reply what you think is expected in the code but is not found in the code?
I don't know about certain implementation details and would like to ask for your comments.
The access time, modified time, and creation time are set as 0 in my implementation of GetStat().
I based the code on HttpFsNode setting all 3 types of times to 0.
Google Drive has sharedWithMeTime, viewedByMeTime, and modified time to set the access time and modified time of a file, but creation time cannot be requested.
Could you please reply what you think about setting all 3 types of times to 0?
stat.st_mode is not set in my implementation of GetStat().
I based the code on HttpFsNode not setting stat.st_mode in HttpFsNode::GetStat().
Could you please reply what you think about my implementation of not setting stat.st_mode?
stat.st_nlink is not set in my implementation of GetStat().
I based the code on Html5FsNode not setting stat.st_nlink in Html5FsNode::GetStat().
Could you please reply what you think about my implementation of not setting stat.st_nlink?
Each function call of GoogleDriveFsNode::Write() writes to Google Drive, but compared to writing to a buffer in GoogleDriveFsNode::Write() and writing to Google Drive on Node::Destroy(), it may be slow.
Could you please reply what you think about my implementation of GoogleDriveFsNode::Write()?
When there are too many directory entries in Google Drive, in GoogleDriveFsNode::GetDents(), Google Drive API response is large. When a buffer stores the entire response in GoogleDriveFsNode::GetDents(), an out-of-memory exception is thrown. I commented a TODO in the code. The TODO is a task to do in the future. My current implementation handles only a small number of directory entries.
Could you please reply if this is OK not to deal with too many directory entries at this moment?
GoogleDriveFsNode::Remove(), GoogleDriveFsNode::Rename(), and GoogleDriveFsNode::Unlink() are not supported.
I coded just enough to minimize the time before getting comments from you.
Could you please reply what you think about my not supporting the 3 functions?
Thanks,
Patrick