Hi Jiri,
> 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.
>
> On Wed, Dec 16, 2015 at 4:09 PM, Per L?wgren <per.lowgren(a)gmail.com>
wrote:
>
> > Hello,
> >
> > I reply to all of your posts in one message. Hope that's ok.
> >
> > Basically, the terminology Djynn use is:
> > * workspace: a set of projects
> >
>
> 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.
>
>
> > * project: a set of files, organised into a directory tree, that may or
> > may not be opened
> >
>
> 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?
>
>
> > * session: a set of opened documents in the editor
> >
>
> This is how it's in Geany too, there's just a single session per project -
> on project opening your previous session is restored.
>
>
> >
> > In Geany, a project is the configuration of the project, including
editing
> > and building.
> >
>
> Since ProjectOrganizer is an extension of Geany project, there's no
> distinction between Geany project and ProjectOrganizer project - they are
> one.
>
>
> 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.
> >
>
> ProjectOrganizer does basically nothing with sessions and uses Geany's
> session management.
>
>
> >
> >
> > > Sounds like reasonable usage, I think you can just open Geany pull
> > request
> > > to make these public. To make a function public, you just need to:
> > >
> > > 1. Prefix the implementation with GEANY_API_SYMBOL.
> > > 2. Add some user-visible API documentation with a docstring (see other
> > API
> > > functions in the code to have an idea how it should look)
> > > 3. Move the function declarations above GEANY_PRIVATE in the header.
> > >
> > > That's about it.
> >
> > That would work on my computer, but not on Launchpad, or for anyone
else.
> >
>
> 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.
>
> The Project Organizer is an interesting plugin, they are similar, but
works
> > very differently.
> >
>
> I don't think it's so different, IMO the only big extra things in Djynn
are
> the workspace management and session management.
>
> If we can agree on a common "vision", I'd happily contribute to that.
> >
>
> 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.
>
>
> > 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,
> >
>
> 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.
>
> 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.
> >
>
> 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.
>
> To sum up the differences:
>
> * Djynn can have multiple workspaces, ProjectOrganizer just uses Geany's
> single "workspace" (basically the "recent projects" list).
>
> 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.
>
> 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.
>
> * ProjectOrganizer's project has a single session (like Geany) while Djynn
> can have multiple.
>
> I don't know if I'd ever use more sessions per project so I'm not planning
> to add it to ProjectOrganizer.
>
> Again, this is quite independent of the ProjectOrganizer functionality and
> could be done in a separate plugin.
>
> * There's a single project file/definition in ProjectOrganizer, if I
> understand correctly there are two in Djynn.
>
> I find the ProjectOrganizer way better in this case.
>
> * 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.
>
> More or less similar.
>
> * 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.
>
> 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.
>
> Do you think the "vision" of ProjectOrganizer is somehow compatible with
> your vision of Djynn or is its minimalistic approach too limiting for you?
>
> Cheers,
>
> Jiri
>