git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC/GSoC] Introduction
@ 2016-03-12  6:59 Sidhant Sharma
  2016-03-13 15:50 ` Lars Schneider
  0 siblings, 1 reply; 24+ messages in thread
From: Sidhant Sharma @ 2016-03-12  6:59 UTC (permalink / raw)
  To: Git Mailing List

Hi everyone!

I am Sidhant Sharma, from Delhi, India. I'm a third year Software Engineering
student at Delhi Technological University. I am looking to contribute to
Git via GSoC 2016. I have also worked on one of the microprojects [1]. I've
been using git for nearly two years now, and continue to be surprised by the
vast number of features this powerful DVCS possesses. I want to contribute to
Git because it has become a daily-use tool for me and it feels exciting to
be a part of the community that makes effective collaborative development
possible.

I would like to work on the project titled 'Git Beginner mode', and have been
reading up the discussions that took place regarding this [2]. The reason I wish
to take this project in particular is that when I initially started out with
Git, and was still discovering how things really worked, I sometimes felt the
need for some sort of safety-latch to keep me from making destructive and/or
irreversible changes. So, this project gives me the opportunity to implement
something on these lines for the future beginners. I believe a lot of discussion
on the idea is due. I'm reading up on the commands that were mentioned on the
project page to better understand what the project entails, and trying to design
a solution for this, without making git harder to use or getting in the user's
learning. I would really appreciate your comments, suggestions and critique on
this.

Thanks and regards,
Sidhant Sharma

[1]: http://thread.gmane.org/gmane.comp.version-control.git/288035
[2]: http://thread.gmane.org/gmane.comp.version-control.git/285893/focus=286613

^ permalink raw reply	[flat|nested] 24+ messages in thread
* Re: [RFC/GSoC] Introduction
@ 2016-03-22 17:51 Philip Oakley
  0 siblings, 0 replies; 24+ messages in thread
From: Philip Oakley @ 2016-03-22 17:51 UTC (permalink / raw)
  To: Lars Schneider, Junio C Hamano; +Cc: Sidhant Sharma, Git Mailing List

From: "Philip Oakley" <philipoakley@iee.org> Sent: March 14, 2016 9:08 PM
> 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.

>
> 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
>>
>

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2016-03-22 19:29 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-12  6:59 [RFC/GSoC] Introduction Sidhant Sharma
2016-03-13 15:50 ` Lars Schneider
2016-03-13 18:33   ` Sidhant Sharma
2016-03-13 21:19     ` Kevin Daudt
2016-03-14  5:25       ` Sidhant Sharma
2016-03-14  6:15         ` Jacob Keller
2016-03-14  7:01       ` Junio C Hamano
2016-03-13 23:28     ` Jacob Keller
2016-03-14  5:25       ` Sidhant Sharma
2016-03-14  6:14         ` Jacob Keller
2016-03-14 16:00           ` Sidhant Sharma
2016-03-14  6:57   ` Junio C Hamano
2016-03-14  8:16     ` Lars Schneider
2016-03-14 15:56       ` Sidhant Sharma
2016-03-20 20:17         ` Matthieu Moy
2016-03-14 17:25       ` Junio C Hamano
2016-03-20 20:28         ` Matthieu Moy
2016-03-14 21:08       ` Philip Oakley
2016-03-17 14:52   ` Sidhant Sharma
2016-03-20 15:39     ` Lars Schneider
2016-03-20 15:51       ` Sidhant Sharma
2016-03-20 16:08         ` Lars Schneider
2016-03-20 16:22           ` Sidhant Sharma
  -- strict thread matches above, loose matches on Subject: below --
2016-03-22 17:51 Philip Oakley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).