[SoC] egit: pre-proposal, problem recognition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Git Team,

I'm a student interested participating in egit/jgit project for this year GSoC. Here I'm trying to investigate what can and need to be done for egit plugin and jgit library -> I'm asking you kindly for some comments or answers. That's somehow pre-proposal, as I'd like to know on which part should I do more research before preparing more detailed proposal.

[my git-awareness status]
To this time, I've used mainly SVN as version control. Last days were my first days with git, and I'm excited :) I've been doing some intensive learning: now I feel quite confident as a git user, also have done overview of git's internals (.git/ structure, data structures: DAG of objects, branches, tags, index etc.) and workflow of main operations. I've also downloaded and tested egit plugin on my Eclipse instance, and looked over jgit and egit code (nice!).
[/my git-awareness status]

Let's start from some clean-up:
http://git.or.cz/gitwiki/EclipsePluginWishlist - isn't this site a little outdated? It appears that tasks: Commit, Switch Branch (without dirty workspace/merge support) are already done, aren't they? Some operations look for me as rather straight-forward to implement - not appropriate for a whole GSoC project (or do I underestimate?). Namely: Create/Delete Branch, Create/Delete Tag, Gitignore, Checkout(?). GSoC2008 site states, that most wanted tasks are (that's reasonable) Push and Merge implementation. Fetch operation also looks to be not implemented yet? Do you agree that is also one of most important operation not yet supported? It seems that Pull and Clone are tasks for future, because of Merge or Fetch dependencies.

So what can I do:
I think that 1-2 from 3 main jgit+egit tasks (Push, Fetch, Merge) appear to be well-sized for a GSoC project. IMO, there is also need for a lot of smaller improvements in egit itself: preferences, preference page, user-friendliness related: more icons and information, help in dialogs, wizards, menus etc. I'm thinking of taking 1 main task - implementing first jgit part, then egit part. And if I finish it before time, I could work on set of such smaller improvements in egit itself, to make it easier/nicer for user. I'm particulary interested in protocol implementation (Fetch or Push operation) as main-task, but Merge also looks interesting. What is more, I perceive Merge and Fetch operations as most wanted, because being on project critical-path, blocking implementation of other tasks. Merge seems also to be used very often itself.

Current implementation status:
There is currently no Eclipse (GUI, workspace logic) code directly for each of main tasks. What about jgit? I haven't looked at details of implementation yet (sorry, I'm starting), but... For Fetch or Push: I'll need to implement protocol(s) for sure: git, ssh protocols first as wiki-recommends - wisely, I think. What about support from jgit internals: do I need to add some git structures implementation to accomplish Fetch or Push: like object packing, needed objects tracking? Or is almost everything available, so I just need to use this structures and concentrate on upload/receive operation and protocol implementation? In case of Fetch, I guess that Create Branch (easy?) implementation is also needed. Is local Fetch or Push already supported in jgit? If not, I'd start from this. I've got also some doubts concerning SSH vs git access protocols. Are git-receive-pack and git-upload-pack used by both of these access protocols? If so, it make things easier:) For Merge: I'll need to implement 3-way merge algorithm. Wiki says that one can look at Eclipse, if it is already implemented there. IMHO it's better to implement it at jgit level, independently of egit, basing on original git implementation, don't you think (I've seen that there are some efforts to implement git plugin for NetMeans, basing on jgit library)? I wonder how laborious this task is, i.e. as for Fetch/Push: does translation of this algorithm written in C to Java requires significant changes or improvements to existing jgit code?

What do you think about importance of each task and what is your feeling about time needed to implement each?


At the end, few words about me, what you could expect:
I'm a BSc/MSc undergraduate of a Computer Science course at Poznan University of Technology (Poland). My main areas of interests are distributed systems and software engineering, especially quality of software. I'm quite experienced Java developer; and C is my "second" language, so I can analyze existing git implementation. I've finished Eclipse Summer School workshop some time ago - on Eclipse plugins development, so I've got some knowledge on Eclipse internals. I'm ready to implement protocol or algorithm when needed. I've got some experiences with JSch (bad experience...) and Trilead SSH (much more postive) - BSD-licensed SSH implementations for Java.

To this time I was working on many smaller projects, and one bigger (>1 year, BSc and grids related), mostly in small teams, sometimes distributed. It seems to be great experience if I can join git community:)

Thank you for your attention, I'd appreciate any comments, expectations or info (answers)! If you want I can move to private discussion.

PS BTW: I've wonder what "Checkpoint project" in Eclipse Team menu stands for?

--
Marek Zawirski [zawir]
marek.zawirski@xxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux