threads / rfc / 41784

Re: [RFC/GSoC] Introduction

Subject: Re: [RFC/GSoC] Introduction

## tl;dr

One message between Mar 22, 2016 and Mar 22, 2016.

replies: 0people: 1as markdown or json

Philip Oakley· Mar 22, 2016, 19:23 UTC · lore
From: "Philip Oakley" <philipoakley@iee.org> Sent: March 14, 2016 9:08 PM
Show 63 quoted lines
> From: "Lars Schneider" <larsxschneider@gmail.com>
>>
>> On 14 Mar 2016, at 07:57, Junio C Hamano <gitster@pobox.com> wrote:
>>
>>> Lars Schneider <larsxschneider@gmail.com> writes:
>>>
>>>> I thought a while about this requirement and I wonder if a wrapper
>>>> called
>>>> 'ggit' (guarded Git) could be a solution. The wrapper would pass all
>>>> command line arguments to 'git' and check for potentially destructive
>>>> commands. If such a command is detected then the user would see a
>>>> warning.
>>>
>>> I recall back in the days when people said that Hg's command set was
>>> so much more pleasant to use that some people thought about building
>>> Hg's command line UI on top of low level implementation of the Git's
>>> data structure.  Even before that time, there was an effort "Cogito"
>>> to build an alternate UI on top of Git core.  If "ggit" can be made
>>> reasonably feature complete in such a way that it lets beginners do
>>> all what they need to do, omitting many advanced/hairy features core
>>> Git may let users use (i.e. making trade-off between power and risk
>>> of misuse differently from core Git), that may be a reasonable way
>>> to offer a "beginner mode".
>>>
>>> The beauty of such an approach is that as long as "ggit" correctly
>>> talks the same on-wire protocol when interacting with other people's
>>> repositories, nobody needs to even know or care that you are using
>>> "ggit" exclusively.  Two systems can talk without problems.
>>>
>>> If "ggit" is made too limited, there is an issue.  Beginners may at
>>> some point need to transition to the real thing to fully exploit the
>>> power of Git, and they may need to unlearn "ggit" and learn Git.
>>
>> I think a "ggit" wrapper should not introduce any new commands or new
>> parameters. Everything should be passed unmodified to Git. The wrapper
>> would only add additional warnings such as "You are about to do X which
>> will permanently destroy Y. Do you want to continue?". Therefore
>> a transition from "ggit" to "git" would not require any learning effort.
>>
>> Maybe "ggit" could also be interpreted as "guided Git" (sounds more
>> friendly than "guarded Git"). I have the impression that many Git
>> beginners make mistakes because they don't have a mental model of Git,
>> yet. A "guided" Git version could explain the commands a bit more
>> detailed as they use Git (e.g. with ASCII graph examples).
>
> +1 on "guided" as a softer more (beginner) friendly term.
>
>>        I know
>> that's what man pages are for but I've encountered many users
>> (especially on Windows) that are not aware of man pages.
>
> In previous discussion it has been said that that (teaching and
> explaining) is not the purpose of man pages. Rather, the man pages are for
> reference for those who already have a reasonable idea of what they are
> doing, and use the man page to check on details.
>
> Whether the man pages should have more examples (or a makefile option to
> include them) may be part of the beginner mode mix, and may come out of
> (or go into) the guidance examples.
>
> The Git data model is very powerful and it does take a lot of 'unlearning'
> of old expectations (which is very hard) before the capabilities of the
> git model become well established in the users mind.
>    For example, remote tracking branches are not remote but local, and are
> a reverse polish description (a local branch which keeps track of a
> remote's branch, from the last time you looked).

This just came up on the $gmane/289454 thread "When does git check for branch-X being uptodate with origin/branch-X?" (21 Mar '16).

In that case, the issue was that the 'tracking' is not active, instead it's a passive status that can become out of date, resulting in confusion about the true status. This also is a issue because of the lack of a common, in a broad world view, set of words for the problem.

Perhaps a 'have you fetched recently?' could be added for the beginner mode.
Show 43 quoted lines
>
> Different people get different parts of the model in different orders and
> different rates. Identifying the many issues (in model understanding) may
> be a start for identifying which command/options should be targeted.
>
>>
>>
>>> This approach, if it wants to become successful in helping users,
>>> would take quite a lot of thinking and work to avoid omitting too
>>> much to necessitate users to migrate to Git.  But I can very well
>>> imagine that a new "Cogito 2" project (I am not saying that the UI
>>> Cogito tried to achieve were superiour or anything of that sort--I
>>> just needed a name, and picked one name that came to my mind) may
>>> get done by those who interact rarely with the core Git community
>>> and may live as one of many independent and viable third-party
>>> projects you find on GitHub.
>>>
>>> There however are two questions I do not offhand have good answers
>>> to: (1) if that kind of effort is of suitable size for GSoC, and (2)
>>> if it is suitable to be supported by the Git project proper.
>>
>> Good questions. I have no previous experience with GSoC Git projects
>> and therefore I am not qualified for an answer. However, my gut feeling
>> would be that a proof of concept implementation of a "ggit" wrapper
>> that does not add any new commands and only adds warnings for destructive
>> commands could be in the GSoC scope. However, Sidhant must be aware of
>> the fact that this is a controversial topic and therefore any future work
>> on this topic might be never merged into Git.
>>
>> I also thought about (2). The obvious advantage of having something like
>> "ggit" as part of Git core is that it would be shipped with the standard
>> Git distribution. That would especially help beginners. However,
>> maintenance is a very strong counter argument. Maybe "ggit" could
>> start as a separate project and if it picks up then Git core can still
>> decide to merge it?
>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe git" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>

← back to recent threads