Binal Log - VIDA-NYU/reprozip GitHub Wiki
On Fridays, please devote at least a half hour to reflect on the work you've done over the previous week. Please use this format:
Date
What you've done during the week
- (can be a bulleted list or as detailed as you want).
Week 1
- Learned more about ReproZip by going through overview video and overall documentation.
- Picked up unpacking examples - digits-sklearn-OpenCV and bus-vis, applied them using the terminal as well as the GUI interface, to better understand GUI requirements.
- Started working with packing for digits-sklearn-OpenCV and bus-vis using demo VMs and got a hands-on on steps involved in packing and what could be added to the packing GUI.
- While testing the demo VM, reported one of the broken demo VM with the name "dev".
- Made a draft of the step by step processes that should be involved in the packing GUI. Broke them down into 3 basic steps - 1. Tracing 2.Editing Configuration files 3.Packing.
- Researched about the Tkinter and pyQT. Since, although pyQT offers a wide range of widgets and customizations, it is massive and has dependency issues.
- In the Friday meeting, discussed the draft for Reprozip Packing GUI and noted down the changes to be done.
Week 2
- Prepared a Mock-up of the GUI with proto.io and discussed the Mock-Up with the team
- Noted added features like - having a browse button so as to specify the executable, showing the size of the RPZ file before and after packing, adding customizations options such as renaming input/output files, adding/removing files.
- Made some more changes to the mock-up, so as to make it most convenient for a user to use Packing GUI without any hassle.
- Finalised on using Tkinter for the Packing GUI for Reprozip
- Revised the mock-up and it can be seen at - https://pr.to/SZ441V/
- Went through Tkinter docs and tutorials to get a better idea
- Started working on the first window for the first step - Trace.
Week 3
- Added buttons to Browse and Trace with an entry box to specify a name for the Current Run.
- Linked Browse to enable the user to set the working directory
- While providing an entry to run a command would work for python scripts when we want to run an application like running a web server setting a default program to run wouldn't work.
- Discussed the problem and finalized to have a native Linux terminal.
- With this, also decided to have an entry to accept arguments for command line arguments from the user, so that it's easy to keep a track.
Week 4
- Started working on the second window, to add more runs.
- Added a list box to display the existing runs and button to add another run.
- Initially, had a little bug with the variable storing the run name, since we are destroying the previous window, it was destroyed as well.
- Finished the add run window.
- Created the next window showing, the trace is successful and providing options to edit the configuration file - rename input/output files and add/remove files.
- Began work on the next frame to rename input/output file.
- Reading from the config file generated by the trace, fetched the input and output files in a list box and added the functionality to rename it and replace it in the config file, so that the final packing step uses the updated names for input and output files.
Week 5
- Submitted the code for review.
- Started working on the next window - add/remove files.
- As discussed, add and remove files would be easier for a user if provided a treeview with the files present already selected and then according to his preference he can select/deselect files to add/remove.
- Implemented tree view with the file system, however, faced a challenge adding in check-button to the treeview. Tkinter doesn't allow to embed widgets inside a widget, which made it difficult to have a check button inside the tree view.
- To overcome the problem, since treeview has an option to add a tag to a node which could be image, text or id as well. Used the image tag, which according to the status of the particular node, displays the tagged image- checked, unchecked or tri-state.
- Also, if pre-computing the whole tree at once, the application took very long since reading the whole config file and adding it became costly.
Week 6
- Discussed the computation shortcomings in the Monday meeting.
- As per the discussion, tried to implement tree view as in a QT. First reading a particular node and its children, if the user further clicks on a subdirectory, passing it as a parent and computing its children and if they are already in the config file or not.
- The above method worked out to be less expensive in terms of computation and worked well.
- Added addition and deletion of files functionality to the treeview upon users click on a file.
- This brought up another challenge, if a user removes the files from the packages, our code would remove it from the config file. However, if he later adds it in again, it would be added to the other_files and not packages.
- In order to inspect the above, tried doing the same with the GUI and later on ran the reprozip pack. The packing step didn't put the file back to packages and it was present in other_files.
- Discussed the same in Friday meeting
Week 7
- Finished with the treeview, children nodes to be selected before still remains an issue.
- Meanwhile, started working on the last window - Pack Window.
- So that the user can provide his choice of name to the packed RPZ file. Added entry box to do the same.
- On clicking the pack button, we run the pack command for reprozip and pack the package with all the edited files and configurations.
- Made the Trace successfull label, which will first check if the package actually exists and then appear otherwise show a warning message saying, Something went wrong!.
Week 8
- Up until now, developed the GUI on Mac OS, so to check if everything is compatible with Linux systems. Ran and tested the GUI.
- Found few issues because of the change in operating systems in terms of layout management and due to switch in python version.
- Fixed the layout issue using the Grid Manager, so as to have a proper division of widgets across all platforms.
- Fixed the version changes so that it is compatible with both.
- Resubmitted the code for review.
Week 9
- Started working on the next step, integrating a terminal to the GUI so that user can see the results and in the case of programs like running a web server communicate directly with the terminal.
- Thanks to Remi, used some part of reprounzip interface code for integrating to a native Linux terminal.
- Added few more widgets for selecting the working directory and the script and placed a browse button for selecting both.
- Initially, the terminal was not working, reproted an error - stdin - DEVNULL, made a few changes in accordance to python 2.7 changing the stdin as pipe and the way arguments were passed so as to incorporate a list of arguments passed by the user.
- Now, we can successfully pass arguments to the entry box and on clicking on the trace button, the command is executed and native Linux terminal shows up.
- Was not very sure about the other selections to offer on the First Window, so discussed the same at the Friday meeting and decided to have an option for setting an option for selecting which command needed to run like python 3 or maybe some specific environment.
Week 10
- As discussed in the Friday meeting, started working on the first frame - Trace Window, by adding in command/executable that the user wants to run after naming the script.
- Successfully, added the Label widget and the browse button to select the command/executable.
- The team suggested, it would be better if we also give users an option to directly type the command, since sometimes it gets tedious to go through the same path. Made a few changes, and added an entry box.
- Also, made a change in the EditConfigurationWindow, instead of writing changes every time a user modifies the input and output files, wrote it at once after the frame is changed.
- While testing the gui, came across one bug, if the user already has a .reprozip-trace folder in the current working directory, the konsole in linux when run "reprozip trace" asks if they want to delete, append or continue, discussed the same in the weekly meeting.
Week 11
- With the team, concluded that its best, to offer a kind of warning box as the user opens the Gui if a .reprozip-trace already exists and of he wants to delete it or append to it.
- Added the warning box with the Delete and Append button. Also, linked the Append button directly to the Add Run Window, since user would be adding a run.
- Also, to increase the efficiency, initialized a file object in the master window, so that it can collect data across all the frames and once the pack button is pressed, dumped the changes to the yaml file.
- While working on Pack window, added a precautionary measure, to pre-check if the user provided RPZ package named file already exists in the working directory. If in case, that happens, we show them a warning message saying, Package with the same name already exists.