Question: I have a question regarding generalization. I know when it is needed to be done, but is it worth having an extra class for 1 field?

e.g.:

`StatisticsCustomer` has fields: `Customer customer` and `int projectCount`
`StatisticsCountry` has fields: `Country country` and `int projectCount`

What is best in this situation? Creating an extra class just for projectCount or keeping it twice in the two classes?

Answer: 
As you mentioned in your question, people fork repositories when they want to make a change the code, because you
don't have write access to the original repository (unless you've been added as a collaborator by the owner of the repository).

In the forked repository they have write access and can push changes. They may even contribute
back to the original repository using *pull requests*.

I think there are multiple reasons why people fork repositories but don't change them:

* they might fork a repository which looks cool, simply fork it (because it's easy (only one click)) and want
to make a change later (and then probably forget it/didn't have time to do so)
* they fork a repository to make a change and then discover that the change is unnecessary and forget to delete
the own repository
* they might fork a repository because one of the projects depends on an other repository (maybe via submodules) and
they want total control over the repository used as a dependency (the owners of the original repository might decide to move from github to google code etc.)
* they might simply forget to push the commits
I fork a lot of repos that I might want to use the code, or if it's a project I'm interested in. When I want to come back and have another look at the code later, it's easier to find if it's listed under my repositories. I don't have to google, or bumble around trying to remember what the name was exactly or thinking "where did I see that repo about foo again?" If it's among my repos it's easier to be reminded of these things.