# Project and Project Management Design

**URL:** <https://discourse.kitware.com/t/project-and-project-management-design/333>\
**Category:** Design\
**Created:** [November 1, 2019, 4:55pm UTC](https://discourse.kitware.com/t/project-and-project-management-design/333 "2019-11-01T16:55:22Z")\
**Posts on this page:** 4\
**Page:** 2

<div class="post-metadata">

**Author:** ![johnt](https://discourse.kitware.com/user_avatar/discourse.kitware.com/johnt/32/147_2.png) [@johnt](https://discourse.kitware.com/u/johnt)\
**Post date:** [November 7, 2019, 3:31pm UTC](https://discourse.kitware.com/t/project-and-project-management-design/333/23 "2019-11-07T15:31:12Z")

</div>

@dcthomp Hmmm, I might need to recalibrate.

> [@dcthomp](#):
>
> I have not been thinking of `resource::Resource` that way… to me, it is just a “quantum of independent persistence”

The notion of persistence is what I have been ascribing to resource::PersistentObject.

> [@dcthomp](#):
>
> I am not a fan of using C++ classes for administrative or ontological purposes

- I **am** a big fan of designing public interfaces to be intuitive, or at least consistent with end users’ mental model.
- I am **not** a big fan of reusing existing classes for convenience (alhough, yes, I do it…)

---

<div class="post-metadata">

**Author:** ![dcthomp](https://discourse.kitware.com/user_avatar/discourse.kitware.com/dcthomp/32/10_2.png) [@dcthomp](https://discourse.kitware.com/u/dcthomp)\
**Post date:** [November 7, 2019, 4:02pm UTC](https://discourse.kitware.com/t/project-and-project-management-design/333/24 "2019-11-07T16:02:14Z")

</div>

> [@johnt](#):
>
> The notion of persistence is what I have been ascribing to resource::PersistentObject.

Agreed. But PersistentObject doesn’t specify how persistence is achieved, only the means by which it may be persistently addressed (UUID). Resource _does_ say how persistence is achieved: in a “location()” (i.e., at a URL). Component also specifies how it attains persistence: via its parent Resource.

> [@johnt](#):
>
> - I **am** a big fan of designing public interfaces to be intuitive, or at least consistent with end users’ mental model.

I agree about intuitive, but am not so sure about consistency with end users. As a population, end users have lots of different ideas coming in… they can’t all be right. What is important is to convey our organizational principle, which we choose for efficiency, to them. If there are pieces that are difficult to use but necessary for efficiency, that is an indication that a higher-level API is needed, not that the low-level API needs change.

---

<div class="post-metadata">

**Author:** ![jacob.vaverka](https://discourse.kitware.com/user_avatar/discourse.kitware.com/jacob.vaverka/32/334_2.png) [@jacob.vaverka](https://discourse.kitware.com/u/jacob.vaverka)\
**Post date:** [November 12, 2019, 9:11pm UTC](https://discourse.kitware.com/t/project-and-project-management-design/333/25 "2019-11-12T21:11:30Z")

</div>

We discussed the latter- change log for user changes to the project.  
Initially I was thinking the user might edit, but something auto-generated may be useful as well.

---

<div class="post-metadata">

**Author:** ![Bob\_Obara](https://discourse.kitware.com/user_avatar/discourse.kitware.com/bob_obara/32/37_2.png) [@Bob\_Obara](https://discourse.kitware.com/u/Bob_Obara)\
**Post date:** [November 13, 2019, 12:11am UTC](https://discourse.kitware.com/t/project-and-project-management-design/333/26 "2019-11-13T00:11:39Z")

</div>

I added the requirement - right now its to allow the user to enter why the project is being saved but could be refined later.

[Previous page](https://discourse.kitware.com/t/project-and-project-management-design/333.md?page=1)
