New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New take on project export: now a zip file is generated which can be imported also #1209
base: main
Are you sure you want to change the base?
Conversation
…ion into projectExport
If you have ZIP supported now, then I see no point offering the user to expor the folder structure. That's confusing. If user would like to peek, s/he can unzip the file. |
@MarcinOrlowski : I do not offer the user to export the folder structure, the user needs to select the folder where the zip-file is going to be created. Inside the zip-file there is: |
@MarcinOrlowski : Do you have time to review the PR's with milestone V3.7.0? |
Yes, I will try. |
I do not like the current behavior. No app acts that way so, as per my comment #1213 (comment) please consider using other name suffix. I proposed @maehne @davidhutchens @R3dst0ne 3rd opinion please? |
Exporting a project should work like saving a regular ˋ.circˋ file, i.e., the file chooser should let the user enter the name for the project and ensure adding a distinctive file extension. We don’t need to limit ourselves to just three letters for the project file extension. The times of 8+3 letter file names to ensure MS-DOS compatibility are thankfully over since 25+ years. How about |
I have a few comments to make considering where this seems to be going. The idea of a le-package makes sense and would often make it easier to distribute things to students. We don't even use a 3-character extension in .circ, so using more is not an issue. Having an Export command that produces an le-package suggests we ought to have an Import command that reads one. That was not really necessary when this was just producing a directory and opening the main .circ pulled in everything needed. Making the current approach to packaging be the default may have some issues. It works great for a lot of use cases. But there are others that don't fit as well. Let me try to describe what I mean. I have a large project that I used in teaching how a pipelined CPU works. It has a collection of parts in one .circ. I built a series of pipelines, adding features for each one. For example, one adds data forwarding, another adds pipeline stalls. Each of these uses the same parts .circ. Having different parts .circ files included with each save would have been difficult while building the series since modifications to the pipelines sometimes required modifications to parts. Keeping a single up-to-date parts .circ file meant I could easily back-test to keep all in sync. When I built the .circ that provides caches, memory and I/O devices, I used the last in the series of pipelined CPUs in it. I also built a CPU that wasn't pipelined, but was actually microprogrammed (yes, that takes us back a few decades). But the pretty thing was that I could include both in the .circ file but only one of them was in use at a time. They were pin-compatible so it was easy to delete one and replace it with the other. This gave a lesson about maintaining an ISA over different implementations. Anyway, the save mechanism in Export throws away the "unused" .circ file rendering the quick replacement impossible. I may not have seen the right way to use the packaged files, but this was all very easy when I controlled the directory structure and loaded .circ files. My point is we need to think broadly about use cases before moving to a packaged save as the standard one. Thinking about this, I wonder if it would be appropriate to give a list of unused but loaded things that are about the be removed in the Export, and give the user the option of including them anyway. That doesn't fully address all the above, but might fix the "unused" implementation issue. The downside is it complicates the export process for the user. |
@MarcinOrlowski , @davidhutchens , @maehne : Looking the discussions I agree that point c) above could be replaced by a project-import action, and in this case also the Than concerning to move completely to the zip-format as default, this I think is also doable (we already have an automatic "scratch-pad" on disc, namely the workspace of the fpga-commander), but in this case stripping should be disabled (see use case of @davidhutchens ). I'll try to work a bit on it, but it will not be in V3.7.0. I'll turn this PR into draft. For the file extension I'm open |
Would that (partially) solve the confusion if the menu item read |
Just a kind reminder that if we aim for building best edu tool, we should be aware not only of teachers, but mainly the students. We should ensure that we offer not only the tools to complete the class but the can also save/export/submit they work with ease. That's why I really appreciate @BFH-ktt1 take on export feature to make sharing complete project easier. BTW: I just realized that it might be helpful to have project's meta data (like, "owner", "title", "subject", "keywords", "description") to let people better personalize their files. It again, would be useful for students too. |
In this case we should also associate the |
Ignore the System.out.println message, will be replaced
This can be set up while creating installation packages. See |
manifest file. The manifest file is in Markdown format and shows formatted. Current limitation: links do not open in a webbrowser: TODO
@MarcinOrlowski : I addressed the two points discussed. I know that the manifest reader is not the most beautiful thing that there is, and that also not all files are listed in the manifest. This I will "cleanup" in a new PR. For the moment I just want to get this in and push V3.7.1 out. Can you agree on the current state? |
Thanks for the changes but the bundle loader still needs some work to make it user usable. Here are spotted issues:
For now you are unable to reuse user specified folder because there are leftovers from previous load. Also:
Could you at least address 1 (i.e. via |
Sorry, I do not agree at all with your points 1-3, as: a) Any changes to the project will not be stored in the project bundle (it is not the default file-format for logisim). I can agree to 4) and 5) and directly open it. |
I am not against your intent, but I do not like the current implementation, which IMHO is against common practices and informal standards thus being potentially counter-intuitive for end user. Approving it as it works now, would (again, IMHO) significantly increase technical debt and I think we already have enough :) If we assume that So again, I am OK with the PR once 1/3 in question are addressed for the reason given above. And to avoid protracted stand-off in this matter, I think we need additional opinions: @davidhutchens @maehne |
@MarcinOrlowski : the solution to the problem is very easy, I rename the function to |
Would be great for this to be a solution or workaround but it is not. Please consider the following scenario as the example:
Please note that |
@MarcinOrlowski : Sorry to say, but your discussion is contradictory as Hence I agree completely with you that I hope you understand my rambling |
First, I do not consider this thread as rumbling. For me it a discussion heading for the best possible solution. And let me remind, that there's nothing that prevents you from saying "FY Marcin, I am merging", yet we still not there :) which let's me believe we share the same fundamental goals in this project. BTW: if you look back this massive thread you will notice that this discussion is what we should have before any implementation works even started. That approach would save lot of time wasted on implementation reworked later. I believe we have this discussed at some point that no PR should come without having ticket discussed first and this is a living example why we really shall enforce this policy. Anyway, even you name menu item I do not want to go into excessive discussion here as it costed us both too much time already, so to sum it up: I do not consider current bundle support is "user ready". I expressed my view, concerns and expectations above. I got no clue how to solve the current stand-off right. I will try to think it over once more as, again, I like the feature. I just do not think it should be released in current state. Let me again summon @davidhutchens @maehne for help. |
…ion into projectExport
…ion into projectExport
…ion into projectExport
@MarcinOrlowski : Would you agree with this PR when I disable for the moment the |
I think I can accept merging even in current form under the condition import is not available. Not sure I'd push 3.7.1 with export feature enabled, but that another question, and I can also agree to it iff there's legitimate interest or needs for having it released for any reasons. Please create a ticket for import feature with |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved under discussed conditions.
…ion into projectExport
@BFH-ktt1 what the faith of this one? |
@MarcinOrlowski : WIP, for the moment I have very limited time, will take it up later on |
…ion into projectExport
No description provided.