<div dir="ltr">Hi Per,<div><br></div><div>I have written some notes below how Djynn's project management differs from ProjectOrganizer and some rationale for why I went that way. In my opinion the core functionality is quite similar.<br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Dec 16, 2015 at 4:09 PM, Per Löwgren <span dir="ltr"><<a href="mailto:per.lowgren@gmail.com" target="_blank">per.lowgren@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>I reply to all of your posts in one message. Hope that's ok.<br><br><div>Basically, the terminology Djynn use is:</div><div>* workspace: a set of projects</div></div></div></blockquote><div><br></div><div>There's nothing like that in ProjectOrganizer - as I didn't want to duplicate functionality which is already in Geany, I just kept things simple in this respect so switching between projects is done using Geany's standard project opening functionality and recent projects. Maybe we could increase the number of the shown recent projects so it's easier to open projects for people with many projects.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>* project: a set of files, organised into a directory tree, that may or may not be opened</div></div></div></blockquote><div><br></div><div>This is the same in ProjectOrganizer. Moreover, ProjectOrganizer stores its config into the standard Geany project file so there's a single project file. I believe there are two project files in your case the Djynn one and the Geany one and this "two-project" thing makes things a bit confusing for users. Did you know you can store your config options into the Geany project file using the API?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>* session: a set of opened documents in the editor</div></div></div></blockquote><div><br></div><div>This is how it's in Geany too, there's just a single session per project - on project opening your previous session is restored.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div><br></div><div>In Geany, a project is the configuration of the project, including editing and building.</div></div></div></blockquote><div><br></div><div>Since ProjectOrganizer is an extension of Geany project, there's no distinction between Geany project and ProjectOrganizer project - they are one.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>In answer to your question: The session manager; it switches between sessions, and stores many sessions. When switching between sessions, all opened documents are stored in the present session's file; then all opened documents are closed; then the documents in the next session are opened.</div></div></blockquote><div><br></div><div>ProjectOrganizer does basically nothing with sessions and uses Geany's session management.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><br></div><div><div><br></div><div>> Sounds like reasonable usage, I think you can just open Geany pull request<br>> to make these public. To make a function public, you just need to:<br>><br>> 1. Prefix the implementation with GEANY_API_SYMBOL.<br>> 2. Add some user-visible API documentation with a docstring (see other API<br>> functions in the code to have an idea how it should look)<br>> 3. Move the function declarations above GEANY_PRIVATE in the header.<br>><br>> That's about it.<br><br></div><div>That would work on my computer, but not on Launchpad, or for anyone else.</div></div></div></blockquote><div><br></div><div>Here I meant you could make a pull request to Geany so it can be merged to Geany and available for everyone in the next release.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>The Project Organizer is an interesting plugin, they are similar, but works very differently. </div></div></blockquote><div><br></div><div>I don't think it's so different, IMO the only big extra things in Djynn are the workspace management and session management.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>If we can agree on a common "vision", I'd happily contribute to that. </div></div></blockquote><div><br></div><div><div>I can describe the vision of PorjectOrganizer. What I tried to make was a file-aware Geany project (Geany itself doesn't know about the files, it just stores base directory, build options and some common settings for project) in a minimalistic way and reuse as much as possible from Geany itself without duplicating functionality.</div></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>Djynn has regex pattern add files on a per directory basis, i.e. you can add a directory and tell to search files according to pattern, and recurse into subfolders, </div></div></blockquote><div><br></div><div>There's a single glob file pattern list per project in ProjectOrganizer defined in project properties. The advantage of a glob pattern over regex is that Geany uses it too and it can be passed to the Find in Files dialog so a pattern defined at a single place in the project config is used for everything.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>but you can still have fixed files added too; e.g. you can add files from the project source directory, and also add `~/.config/project/file.conf` etc.</div></div></blockquote><div><br></div><div>You can attach an arbitrary number of "external directories" to a project in ProjectOrganizer and have their files displayed in the sidebar (and get them indexed with the tag manager if needed). It's just not per file but per directory.</div><div><br></div><div>To sum up the differences:</div><div><br></div><div>* Djynn can have multiple workspaces, ProjectOrganizer just uses Geany's single "workspace" (basically the "recent projects" list). </div><div><br></div><div>For me this is sufficient, I find the workspace concept a bit too heavyweight for an editor like Geany. Switching between recent projects using Geany's built-in functionality is nice and simple.</div><div><br></div><div>However, if the project open/close methods are added to the API, some workspace manager plugin could be made and it could even coexist with the ProjectOrganizer plugin.</div><div><br></div><div>* ProjectOrganizer's project has a single session (like Geany) while Djynn can have multiple.<br></div><div><br></div><div>I don't know if I'd ever use more sessions per project so I'm not planning to add it to ProjectOrganizer.</div><div><br></div><div>Again, this is quite independent of the ProjectOrganizer functionality and could be done in a separate plugin.</div><div><br></div><div>* There's a single project file/definition in ProjectOrganizer, if I understand correctly there are two in Djynn.</div><div><br></div><div>I find the ProjectOrganizer way better in this case.</div><div><br></div><div>* Files belonging to a project are defined similarly in both plugins (glob patterns vs regex), there's a possibility to add files external to the project directory in both plugins.</div><div><br></div><div>More or less similar.</div><div><br></div><div>* In Djynn there is the possibility to add individual files, the tree can be reorganized by drag and drop. There's no such thing in ProjectOrganizer which basically mirrors the file system structure.</div><div><br></div><div>Contrary to Djynn, ProjectOrganizer is designed to work for huge projects with thousands of files. When working on such big projects with many collaborators, files and directories get renamed, deleted, added quite often and what you manually add to the project gets invalid in this case. Updating the project every time you make "git pull" is very annoying. For this reason there's no configuration describing how the tree should look or what files are in the project - just a directory (plus the external directories) and a glob pattern. I know this might be limiting a bit for you but I'd really like to keep it this way.</div><div><br></div><div>Do you think the "vision" of ProjectOrganizer is somehow compatible with your vision of Djynn or is its minimalistic approach too limiting for you?</div><div><br></div><div>Cheers,</div><div><br></div><div>Jiri</div></div></div></div></div>