Re: [freenet-dev] Github and code review

2015-03-22 Thread Matthew Toseland
On 22/03/15 21:39, Ian Clarke wrote:
 On Sun, Mar 22, 2015 at 4:20 PM, Matthew Toseland mj...@cam.ac.uk wrote:
 But regardless, nothing in the process I've outlined would inhibit
 correcting problems like this.  Ideally they'd be corrected at the code
 review stage, but if they make it past that then they can be corrected
 with
 a new branch, just like any other bugfix.
 No, they can't.

 Removing binaries (or worse, copyright-infringing files) requires
 rewriting the history.
 Why would removing a binary require rewriting the history, 
Because we don't want those files in the repository at all. We don't
want everyone to have to download jars which are many years out of date
and aren't used anyway when they clone the repository.
 and why would
 anyone commit a copyright-infringing file?
Can happen with installers. Can happen with people taking short-cuts,
although that's less likely as Freenet is fairly specialised. Can happen
as a deliberate attempt to disrupt. Can even happen by accident.
 In my years of using Github I have never ever been in a situation that
 necessitated rewriting history.

 The possibility that someone might do something really dumb and easily
 avoidable should not dictate our code review policy.
Everyone does this when they first use Git. For example, most of the
members of my group project this year included multiple copies of huge
third party javascript libraries, and even jars. Some of our
contributors will be on that level - they won't initially know any
better. This is simply because of lack of experience. If we have
volunteers, many of them will have limited experience. This may also be
true of paid developers, and certainly of most GSoC interns.
 2. Disruptive changes to APIs.
 This has also happened. Especially if the description is incomplete,
 there is a significant risk of refactoring breaking other code (e.g.
 plugins; this was part of the problem with Xor's changes), introducing
 new APIs that don't make sense etc.
 Both code review and a decent continuous integration system should address
 this.  This is a good continuous integration service that is free for OSS
 projects: https://travis-ci.org/  You can see how I use it on this other
 OSS project of mine: http://quickml.org/
 Not all problems can be detected by automated tools.

 Sometimes it is necessary to change classes that are used by plugins,
 and some of those plugins are unofficial, i.e. third party.
 Yes, just like any other software project.  What would make us any
 different, and why would that necessitate deviating from the process I've
 proposed (which is pretty-much standard practice among well-run dev teams
 already)?  
Your point was that continuous integration can detect all problems, so
advance code review is unnecessary. This is not true. CI is worth a lot,
but it doesn't solve all the problems being addressed here.

And it is certainly not true that all well-run development teams accept
unreviewed code! Wine doesn't, Linux doesn't, Steve's company doesn't,
and I'd be pretty amazed if Google did.

As for the rest, I will not be drawn into personal attacks. I care about
Freenet and would like it to succeed, regardless of whether I am paid to
work for it. Some of its goals may be naive in the modern world, but
there is much potential here. Sadly I don't have time to volunteer at
the moment; I'm only involved now because a major crisis has erupted and
I had hoped I could contribute something.



signature.asc
Description: OpenPGP digital signature
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] Github and code review

2015-03-22 Thread Ian Clarke
On Sun, Mar 22, 2015 at 4:20 PM, Matthew Toseland mj...@cam.ac.uk wrote:

  But regardless, nothing in the process I've outlined would inhibit
  correcting problems like this.  Ideally they'd be corrected at the code
  review stage, but if they make it past that then they can be corrected
 with
  a new branch, just like any other bugfix.
 No, they can't.

 Removing binaries (or worse, copyright-infringing files) requires
 rewriting the history.


Why would removing a binary require rewriting the history, and why would
anyone commit a copyright-infringing file?

In my years of using Github I have never ever been in a situation that
necessitated rewriting history.

The possibility that someone might do something really dumb and easily
avoidable should not dictate our code review policy.

 2. Disruptive changes to APIs.
  This has also happened. Especially if the description is incomplete,
  there is a significant risk of refactoring breaking other code (e.g.
  plugins; this was part of the problem with Xor's changes), introducing
  new APIs that don't make sense etc.
  Both code review and a decent continuous integration system should
 address
  this.  This is a good continuous integration service that is free for OSS
  projects: https://travis-ci.org/  You can see how I use it on this other
  OSS project of mine: http://quickml.org/
 Not all problems can be detected by automated tools.

 Sometimes it is necessary to change classes that are used by plugins,
 and some of those plugins are unofficial, i.e. third party.


Yes, just like any other software project.  What would make us any
different, and why would that necessitate deviating from the process I've
proposed (which is pretty-much standard practice among well-run dev teams
already)?  I'm not sure I understand your point.


  That seems very unlikely to happen, we barely have budget for actual
  developers, let alone dedicated QA people.  And really, who'd want that
 job
  anyway?
 
  Even setting aside budget and finding suitable people, coders should have
  primary responsibility for ensuring that their code is good.  It's
  unhealthy to have a situation where coders think that ensuring their code
  is clean and robust is someone else's problem.
 That is precisely how every mature project works. Just because neither
 your business ventures nor your involvement in open source are mature
 doesn't mean there aren't projects out there - both open source (Linux,
 Wine) and businesses (Steve's employer, presumably Google, etc) - which
 care about code quality.


Wow.  Why would you say something so stupid in a forum where future
employers could potentially see it?

You forget that I've seen your code, it wouldn't come anywhere close to
passing a code review by even the least experienced developer on my
company's engineering team, so please don't presume to lecture me about
code quality, or how mature software projects work.

I really hope they teach you how to be less of an asshole during your
computer science course, or you'll have a very hard time getting or keeping
a job, either commercial or in academia.  Your previous paragraph would be
a firing offense at most companies.  Professional engineering teams simply
don't tolerate asshole behavior any more.

Ian.


-- 
Ian Clarke
Founder, The Freenet Project
Email: i...@freenetproject.org
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] Github and code review

2015-03-22 Thread Ian
On Sat, Mar 21, 2015 at 7:42 PM, Matthew Toseland matt...@toselandcs.co.uk
wrote:

 On 21/03/15 20:49, Ian Clarke wrote:
  That's part of it, but also that a branch should be created for each
  bugfix/feature, which ideally should be as small a unit of work as
 possible
  (that can be merged without breaking stuff).
 Absolutely. See e.g.:
 http://nvie.com/posts/a-successful-git-branching-model/

 We try to stick to this ... or at least, that was the plan/consensus!


Hmm, it doesn't sound like we do in practice, given that I believe there
were pull requests with hundreds of commits which sounded like it was for
much more than a single feature or bugfix.  Anyway, the point isn't to
complain about what happened in the past, just to agree on our process
going forward.


 The problem is then we spend a lot of time undoing stuff. This can and
 does happen, and has happened, even relatively recently. It's part of
 the reason why most projects use a branch-and-merge model, rather than
 giving all the devs push rights.

 Ian.
 Why we might need to revert or reject changes:
 0. Stupid stuff. E.g. committing jars to repositories.


Committing jars to repositories is kind of careless, don't people have
sensible .gitignore files?  Can a .gitignore be committed to the repo?

But regardless, nothing in the process I've outlined would inhibit
correcting problems like this.  Ideally they'd be corrected at the code
review stage, but if they make it past that then they can be corrected with
a new branch, just like any other bugfix.


  2. Disruptive changes to APIs.
 This has also happened. Especially if the description is incomplete,
 there is a significant risk of refactoring breaking other code (e.g.
 plugins; this was part of the problem with Xor's changes), introducing
 new APIs that don't make sense etc.


Both code review and a decent continuous integration system should address
this.  This is a good continuous integration service that is free for OSS
projects: https://travis-ci.org/  You can see how I use it on this other
OSS project of mine: http://quickml.org/


 I agree that review capacity is potentially a bottleneck. There are
 different ways to solve this:
 - Have paid staff who review and merge stuff.


That seems very unlikely to happen, we barely have budget for actual
developers, let alone dedicated QA people.  And really, who'd want that job
anyway?

Even setting aside budget and finding suitable people, coders should have
primary responsibility for ensuring that their code is good.  It's
unhealthy to have a situation where coders think that ensuring their code
is clean and robust is someone else's problem.


 - Don't accept pull requests if nobody can review them right now.


This will absolutely cause a severe bottleneck, causing development to
grind to a halt, and probably destroying morale in the process.  Who wants
to work their ass of on some code only for it to sit in a branch
indefinitely?


 - Allow the reviewers to make reasonable demands for clear code. A pull
 request is a negotiation between the contributor and the maintainer.


Of course, reviewers can point out unclean code, and a conscientious
developer will want to commit good code so they'll fix it.  If a coder is
ignoring reasonable code review feedback then that might be grounds for
removing commit access.

Ian.
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] Github and code review

2015-03-22 Thread Ian Clarke
On Sun, Mar 22, 2015 at 6:44 AM, Arne Babenhauserheide arne_...@web.de
wrote:

 Am Samstag, 21. März 2015, 12:45:39 schrieb Ian Clarke:
  It sounds like people are trying to use commits for code review, whereas
  they should be using Github pull requests.

 For huge changes we are using commits as a second level hierarchy:
 When the diff is too big to understand on its own, then the commits
 have to form an easy to follow story which allows understanding the
 change step by step.


I think you've misidentified the problem and therefore the solution.  The
problem is that diffs would ever be too big to understand on their own,
therefore the solution is that the diff should never be too big to
understand on it's own.  A branch/pull-request should rarely represent more
than a few days of work, and thus should rarely take more than a few
minutes to review.


 As such they unpaid devs cannot just sit down for 6 hours and read
 through a huge diff to understand it in its entirety. They need the
 diff more structured.


A 6 hour code review is insane, and should never be necessary.


 - For any isolatable feature or bugfix, create a new branch just for
 that feature or bug request (perhaps put the bug id # in the name of
 the
 branch).  *Do not combine multiple features or bugfixes into a single
 branch.*  If it can be merged independently, it should have it's own
 branch.

 We get into a problem with this, when the changes get too extensive
 without being ready for merging into a release.


It should never be necessary for changes to be that extensive.  In my
day-job we're working on a far more complex codebase than Freenet, and yet
a branch/pull-request almost *never* represents more than 4 days of work,
and therefore code reviews rarely require more than 10-20 minutes.


 Your scheme provides fast development of individual features, but does
 not provide information spread within the group: Only one person has
 seen the current version of the code.


I don't understand that, anyone that wants to is free to look at the
code/pull-requests.


 Longterm this needs to a situation where no one can understand the
 whole code well enough to change it efficiently, which in turn leads
 to pseudo-ownership over certain sub-sections of the code.


If we're producing code that isn't comprehensible without external
explanation, then we're not producing good code.  Well written code
shouldn't require an explanation, it should be self-explanatory.  This book
lays out some excellent guidelines for this kind of code, every programmer
should read it: http://amzn.com/0132350882

Ian.

-- 
Ian Clarke
Founder, The Freenet Project
Email: i...@freenetproject.org
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] Github and code review

2015-03-22 Thread Ian Clarke
Sure, but let's not get bogged down with complaining about the past, we all
know it's been dysfunctional, let's focus on what we're going to do from
now on.

Ian.

On Sun, Mar 22, 2015 at 2:06 AM, Florent Daigniere 
nextg...@freenetproject.org wrote:

 On Sun, 2015-03-22 at 07:36 +0100, Florent Daigniere wrote:
  On Sun, 2015-03-22 at 00:42 +, Matthew Toseland wrote:
   On 21/03/15 20:49, Ian Clarke wrote:
On Sat, Mar 21, 2015 at 1:58 PM, Matthew Toseland 
 matt...@toselandcs.co.uk
wrote:
Most of the above boils down to review the diff, not the history.
 That
is probably sensible.
That's part of it, but also that a branch should be created for each
bugfix/feature, which ideally should be as small a unit of work as
 possible
(that can be merged without breaking stuff).
 
  It only is if the diff is of reasonable size... which it is most of the
  time, *except* when it comes from paid devs.
 
  They code in their cave for months, drop a 100kloc diff doing way more
  than a single feature/bugfix onto the maintainer and expect it to be
  merged; I'm sure that refactoring is good but not when it's forked off
  for 6month... This is the problem we had recently with both toad's and
  xor's code. We're talking about dozens of features and bugfixes AND
  refactoring.
 
  What blocks development is that the refactoring isn't merged until their
  work is ready... and there's usually a good reason for it; they code
  first and think later (to be fair it's a common trait amongst devs
  working alone) which means that as long as they haven't tried it out
  they're not quite sure of what they want in terms of API... so it's only
  in a mergeable state when it works.
 
  Whether there's a single change per commit/branch/pull request doesn't
  matter as long as one of them is enforced. Until now the base unit was
  supposed to be one change per commit; I'm all for changing it to
  something else but that won't solve the problem unless it's enforced
  strictly.
 
  Florent

 Just to put some perspective on what I've written above:

 Here's toad's diff:
 https://github.com/freenet/fred/pull/287/files

 Here's xor's diff:
 https://github.com/freenet/fred/pull/319/files

 in both cases github gives up rendering it:
 Sorry, we could not display the changes to this file because there were
 too many other changes to display.

 and doesn't even display the commit count:
  This pull request is big! We're only showing the most recent 250
 commits. 

 As for the individual commits, there's plenty which are doing more than
 a bugfix/feature/single semantic change.

 Florent




-- 
Ian Clarke
Founder, The Freenet Project
Email: i...@freenetproject.org
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] Github and code review

2015-03-22 Thread Matthew Toseland
On 22/03/15 19:22, Ian Clarke wrote:
 I think you've misidentified the problem and therefore the solution.  The
 problem is that diffs would ever be too big to understand on their own,
 therefore the solution is that the diff should never be too big to
 understand on it's own.  A branch/pull-request should rarely represent more
 than a few days of work, and thus should rarely take more than a few
 minutes to review.
...
 It should never be necessary for changes to be that extensive.  In my
 day-job we're working on a far more complex codebase than Freenet, and yet
 a branch/pull-request almost *never* represents more than 4 days of work,
 and therefore code reviews rarely require more than 10-20 minutes.
Unfortunately, sometimes it is necessary to make big changes.

For example, my work last summer: We can't keep on using Db4o because
it's been discontinued. We can't easily move to another object database
because they are not standardised. In any case we need to rewrite it to
a simpler structure for stability and performance reasons. But this
meant rewriting a lot of core code, adding necessary infrastructure, and
then implementing backward compatibility. Since this will break APIs, we
may as well fix some of the other problems at the same time.

Now, if I'd had time, I would have broken this up into a series of pull
requests (or big commits) to be reviewed separately. However, most of
them cannot be merged independantly - either they introduce new
functionality that isn't used (so why should it be in the codebase?), or
they break backwards compatibility (which is a largish chunk of work
itself). It appears that time was a factor in Xor's case too - he was
worried about starting his thesis soon.

I believe Ian's answer will be that time is always a factor and the
correct solution is to cut corners and hope for the best - we will clean
up the code some day. Some day never comes, because there's always
another deadline (for employees)... IMHO this is a management style
which does not work with the kind of code that Freenet is, that modern
OSS is, that Google's infrastructure is. It works well enough with code
that doesn't need to be maintained, and it just about works if you can
rewrite it completely every year, or ship it once and forget it.

Re volunteers, if they know what the rules are and if maintainers
respond quickly there's a good chance that they will help to solve the
problems, and the code will get merged.
 Longterm this needs to a situation where no one can understand the
 whole code well enough to change it efficiently, which in turn leads
 to pseudo-ownership over certain sub-sections of the code.
 If we're producing code that isn't comprehensible without external
 explanation, then we're not producing good code.  Well written code
 shouldn't require an explanation, it should be self-explanatory.  This book
 lays out some excellent guidelines for this kind of code, every programmer
 should read it: http://amzn.com/0132350882
Yes, and allowing everyone to commit with no supervision is a perfect
recipe for the sort of spaghetti code that we would like to avoid.



signature.asc
Description: OpenPGP digital signature
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] Github and code review

2015-03-22 Thread Ian
On Sun, Mar 22, 2015 at 1:36 AM, Florent Daigniere 
nextg...@freenetproject.org wrote:

 On Sun, 2015-03-22 at 00:42 +, Matthew Toseland wrote:
  On 21/03/15 20:49, Ian Clarke wrote:
   On Sat, Mar 21, 2015 at 1:58 PM, Matthew Toseland 
 matt...@toselandcs.co.uk
   wrote:
   Most of the above boils down to review the diff, not the history.
 That
   is probably sensible.
   That's part of it, but also that a branch should be created for each
   bugfix/feature, which ideally should be as small a unit of work as
 possible
   (that can be merged without breaking stuff).

 It only is if the diff is of reasonable size... which it is most of the
 time, *except* when it comes from paid devs.


Then that needs to change.  With a feature/bugfix-per-branch approach the
diffs should be reviewable in just a few minutes.  If they aren't, then the
coder is probably stuffing multiple features/bugfixes into a single branch
and that's contrary to the guidelines I've outlined.  Whatever happened in
the past, what matters is what we do going forward.


 They code in their cave for months, drop a 100kloc diff doing way more
 than a single feature/bugfix onto the maintainer and expect it to be
 merged; I'm sure that refactoring is good but not when it's forked off
 for 6month... This is the problem we had recently with both toad's and
 xor's code. We're talking about dozens of features and bugfixes AND
 refactoring.


Then that needs to change going forward.


 Whether there's a single change per commit/branch/pull request doesn't
 matter as long as one of them is enforced.


The way Github's code review tools are designed, you definitely want it to
be per branch (which will have a 1-1 relationship with a pull request), not
per commit.


 Until now the base unit was
 supposed to be one change per commit; I'm all for changing it to
 something else but that won't solve the problem unless it's enforced
 strictly.


You can't impose processes on people, they need to agree to them or it
won't work.  That being said, I don't know why any reasonable person
wouldn't agree to what I've outlined.  It's a tried and tested approach.

Ian.
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] Github and code review

2015-03-22 Thread Matthew Toseland
On 22/03/15 19:07, Ian wrote:
 On Sat, Mar 21, 2015 at 7:42 PM, Matthew Toseland matt...@toselandcs.co.uk
 wrote:


 0. Stupid stuff. E.g. committing jars to repositories.
 Committing jars to repositories is kind of careless, don't people have
 sensible .gitignore files?  Can a .gitignore be committed to the repo?

 But regardless, nothing in the process I've outlined would inhibit
 correcting problems like this.  Ideally they'd be corrected at the code
 review stage, but if they make it past that then they can be corrected with
 a new branch, just like any other bugfix.
No, they can't.

Removing binaries (or worse, copyright-infringing files) requires
rewriting the history.

Rewriting the history is *BAD*. It makes it impossible for a third party
to follow what is going on. It makes life extremely difficult/messy for
our own developers, breaking their unfinished work when they pull from
master.
 2. Disruptive changes to APIs.
 This has also happened. Especially if the description is incomplete,
 there is a significant risk of refactoring breaking other code (e.g.
 plugins; this was part of the problem with Xor's changes), introducing
 new APIs that don't make sense etc.
 Both code review and a decent continuous integration system should address
 this.  This is a good continuous integration service that is free for OSS
 projects: https://travis-ci.org/  You can see how I use it on this other
 OSS project of mine: http://quickml.org/
Not all problems can be detected by automated tools.

Sometimes it is necessary to change classes that are used by plugins,
and some of those plugins are unofficial, i.e. third party.
 I agree that review capacity is potentially a bottleneck. There are
 different ways to solve this:
 - Have paid staff who review and merge stuff.
 That seems very unlikely to happen, we barely have budget for actual
 developers, let alone dedicated QA people.  And really, who'd want that job
 anyway?

 Even setting aside budget and finding suitable people, coders should have
 primary responsibility for ensuring that their code is good.  It's
 unhealthy to have a situation where coders think that ensuring their code
 is clean and robust is someone else's problem.
That is precisely how every mature project works. Just because neither
your business ventures nor your involvement in open source are mature
doesn't mean there aren't projects out there - both open source (Linux,
Wine) and businesses (Steve's employer, presumably Google, etc) - which
care about code quality.

I repeat my earlier point: If we allow everyone to commit without
review, we will spend a lot of our time (and commit history) undoing
stuff. This is one of the reasons behind the rise of distributed version
control in the first place. Git, and Github, are specifically designed
to support pull requests. The implication is that the person merging the
changes is not the same as the person posting them, and that they should
be signed-off, i.e. reviewed.
 - Don't accept pull requests if nobody can review them right now.
 This will absolutely cause a severe bottleneck, causing development to
 grind to a halt, and probably destroying morale in the process.  Who wants
 to work their ass of on some code only for it to sit in a branch
 indefinitely?
 - Allow the reviewers to make reasonable demands for clear code. A pull
 request is a negotiation between the contributor and the maintainer.
 Of course, reviewers can point out unclean code, and a conscientious
 developer will want to commit good code so they'll fix it.  If a coder is
 ignoring reasonable code review feedback then that might be grounds for
 removing commit access.
We are not using SVN. We are not using CVS. NOBODY uses Git and then
gives everyone push access. It just doesn't make sense. The correct,
standard workflow used by just about everyone is to fork and post a pull
request, which may or may not be merged.

I will reply to your points about big changes separately.



signature.asc
Description: OpenPGP digital signature
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] Github and code review

2015-03-22 Thread Matthew Toseland
On 22/03/15 22:21, Roland Haeder wrote:
 On Sun, 22 Mar 2015 21:40:41 +
 Matthew Toseland mj...@cam.ac.uk wrote:

 On 22/03/15 19:22, Ian Clarke wrote:
 Unfortunately, sometimes it is necessary to make big changes.
 One good example is the initial import of all files for a new project.
 There you commit a huge chunk of files and directories.

 As I'm (different project) a newcomer to a project's development, I
 had started cloning the original repository (creating a personal
 clone) and started developing. I did this by committing carefully and
 I tried to avoid huge changes (not always possible, more below) to let
 them easily review them.

 Then I stepped towards them and my commits got rejected because I
 didn't make a feature branch or fix branch ... :-( That is kind of
 frustrating because my commits won't make it in.

 What I mean here is that the maintainer should not be so bureaucratic
 to newcomers as this could turn them away and they may never come back.

 The maintainer can then still review commits relatively easily by
 setting up a merge branch

 git checkout master # or wherever your development branch is
 git remote add rolands_code git://git.bla.example/some/foo.git --track
 master
 git checkout -b code_reviewed_okay/master
 git checkout master
 git checkout -b rolands_master
 git pull rolands_code

 This way you can check your code with changes from developer
 roland (yes, my name) without mixing it so quickly with your own
 code. Then start the review process by looking at each commit and
 cherry-pick it into code_reviewed_okay/master branch:

 git checkout code_reviewed_okay/master
 git cherry-pick xx
 git checkout rolands_master

 Then you can check them again (on functionality) in the review branch
 (as not all commits from rolands_master are in) and continue with next
 one.

 Maybe there is a better way. :-) But this way may work. After that
 merge all reviewed commits into master:

 git checkout master
 git merge -S code_reviewed_okay/master

 That seems to be a fine way to me.

 My 2 cents. :-)
Your code should not be rejected because it is on master on your own
repository IMHO. However, if you are going to make multiple pull
requests you really need to use separate branches. If you have several
different changes on the same branch then you definitely need to
separate them out before making a pull request.

However, this is pretty easy using git branch, git reset and git
cherry-pick.



signature.asc
Description: OpenPGP digital signature
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] Github and code review

2015-03-22 Thread Roland Haeder
On Sun, 22 Mar 2015 22:27:24 +
Matthew Toseland mj...@cam.ac.uk wrote:

 Your code should not be rejected because it is on master on your own
 repository IMHO. However, if you are going to make multiple pull
 requests you really need to use separate branches. If you have several
 different changes on the same branch then you definitely need to
 separate them out before making a pull request.
 
 However, this is pretty easy using git branch, git reset and git
 cherry-pick.
 

Okay, I will try it then later. Thank you. :-)


signature.asc
Description: PGP signature
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] Github and code review

2015-03-22 Thread Roland Haeder
On Sun, 22 Mar 2015 21:40:41 +
Matthew Toseland mj...@cam.ac.uk wrote:

 On 22/03/15 19:22, Ian Clarke wrote:
 Unfortunately, sometimes it is necessary to make big changes.

One good example is the initial import of all files for a new project.
There you commit a huge chunk of files and directories.

As I'm (different project) a newcomer to a project's development, I
had started cloning the original repository (creating a personal
clone) and started developing. I did this by committing carefully and
I tried to avoid huge changes (not always possible, more below) to let
them easily review them.

Then I stepped towards them and my commits got rejected because I
didn't make a feature branch or fix branch ... :-( That is kind of
frustrating because my commits won't make it in.

What I mean here is that the maintainer should not be so bureaucratic
to newcomers as this could turn them away and they may never come back.

The maintainer can then still review commits relatively easily by
setting up a merge branch

git checkout master # or wherever your development branch is
git remote add rolands_code git://git.bla.example/some/foo.git --track
master
git checkout -b code_reviewed_okay/master
git checkout master
git checkout -b rolands_master
git pull rolands_code

This way you can check your code with changes from developer
roland (yes, my name) without mixing it so quickly with your own
code. Then start the review process by looking at each commit and
cherry-pick it into code_reviewed_okay/master branch:

git checkout code_reviewed_okay/master
git cherry-pick xx
git checkout rolands_master

Then you can check them again (on functionality) in the review branch
(as not all commits from rolands_master are in) and continue with next
one.

Maybe there is a better way. :-) But this way may work. After that
merge all reviewed commits into master:

git checkout master
git merge -S code_reviewed_okay/master

That seems to be a fine way to me.

My 2 cents. :-)


signature.asc
Description: PGP signature
___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Re: [freenet-dev] C# Tray App (Probably) Feature-Complete

2015-03-22 Thread Crypto Nation
I tried the new tray icon in Windows 7 x64, Windows 8.1 x64, and the
Windows 10 x64 Technical Preview build 9926. Tested: Open Freenet, Start
Freenet, Stop Freenet, View log file, Preferences, Hide icon and Exit.
Everything worked.

My only complaint is that Open Freenet launched IE instead of FF, which was
set as the default. The Preferences  Browser dropdown choices are Auto and
Internet Explorer with no information on how to add other options.

Should there be a one time prompt when clicking Hide icon that informs the
user that Freenet is still running in the background, and explains how to
restore the icon or start/stop Freenet?

On Thu, Jan 1, 2015 at 1:49 PM, Steve Dougherty st...@asksteved.com wrote:

 The C# Windows tray application is now more-or-less feature-complete.
 Feedback and suggestions would be appreciated! In the coming days I plan
 to document this more and do a more thorough writeup of its capabilities.

 Signed binary:
 https://downloads.freenetproject.org/FreenetTray-testing-3b30923.exe
 Source:
 https://github.com/freenet/wininstaller-innosetup/tree/csharp/FreenetTray

 To test it put it in the directory Freenet is installed in. It will add
 a tray icon which controls the node, similar to the existing tray
 application, but shinier.

 For instance, this one distinguishes between a clean shutdown and a
 crash, and has a more informative response to crashes. It supports
 launching Chrome, Firefox, Opera, and IE in privacy mode. It's around
 800 LOC. (Not counting those the resources and Windows Forms designer
 generate.)

 Currently if Freenet takes more than 3 seconds between being started and
 FProxy listening on its port a balloon tip will pop up to show that
 Freenet is starting. 3 seconds might be a bit short, but my hope was to
 maintain a sense of interactivity. (On my machine FProxy takes ~1.6
 seconds after starting to listen on its port.) On that note the refresh
 rate of the startup page should be increased - it seems like it's
 currently around 10 seconds, which is a long time to stare at it.

 - Steve


 ___
 Devl mailing list
 Devl@freenetproject.org
 https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

___
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl