Github user bzz commented on the issue: https://github.com/apache/zeppelin/pull/1277 First of all - I appreciate you patience and attention to details and your code looks great. There are few design aspects of it I wanted to discuss with you here From the diff tab: > +116 â36 Options This approach, namely, extracting `RevisionId` looks interesting, but in this particular case it brings 80 new LOC, add extra class and uses generics, parameterized types, `instance of` and a wildcard. If I try to understand, what are the benefits of `Something<?>` compared to `Something`, given that `Something` is not some kind of collection, but I'm having hard time doing it. I think there are none, and Java Language Specification, section [4.8 Raw Types](https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.8) support my guess >Raw types are closely related to wildcards. Both are based on existential types. Raw types can be thought of as wildcards whose type rules are deliberately unsound, to accommodate interaction with legacy code. Historically, raw types preceded wildcards; ----- I think we are on the way of coming up with a better design here together, so let's try to follow Occam's razor design principle and think in term of API. First of all, here is current problem, how I see: we are talking about design of the "Notebook Repository subsystem or API" that abstracts (hides all implementation details of) the process of getting an information about notebooks and it's lineage from the persistent storage. This subsystem provides a _public and uniform API_ for all it's clients to get the a notebooks, together with their history (modifications\snapshots). `NotebookRepo` is part of it, it defines the semantics of the storage (list, get, etc), `Revision` is another part of it that represents a point in time, selected and annotated by the user. We want `NotebookRepo` semantics to be aware of of such entities. In terms of API design, first question to ask is always the same - "who are the clients"? In our case there are: - `NotebookServer.java` - `Notebook.java` If we agree on this general terms, I'll be happy to go on, and discuss possible ways to solve this problem. Please, et me know what you think!
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---