Hi Fitz,
Welcome to the community!
Hope you will have a great time :)
Thanks,
Caty
On Sat, Apr 23, 2016 at 5:44 AM, Fitz Lee <leefits(a)gmail.com> wrote:
Hi Dear devs,
2016-04-23 5:10 GMT+08:00 Eduard Moraru <enygma2002(a)gmail.com
<javascript:_e(%7B%7D,'cvml','enygma2002@gmail.com');>>:
Hello community, Hello Google Summer of Code
students and applicants,
First of all, we would like to thank all of this year's GSoC student
applicants for their interest in XWiki. Even if this year we have been
assigned and selected only 1 slot for the program, we would still help
and
encourage any student interested to do a project
without Google's
implication and enjoy all the benefits of the program, except for the
Google sponsored money of course. If you would like to do that, please
let
us know by replying to this mail. You are always
welcomed to our
community.
Having said that, we would like to acknowledge and welcome Fitz as this
year's Google Summer of Code student inside the XWiki development team!
This is too good to be true. I’m really delighted. Thank you so much for
giving
me this opportunity and helping me to improve myself and grow up. Hope to
contribute to our community as much as I can.
We know you have already started looking into the details of your project
(which is gear!). Here are some general getting started hints for the
next
steps of the program:
= Community bonding period =
According to the program timeline [2], the next month (until - May 22nd)
is
to be used for community bonding.
You have already introduced yourself to the community, but keep
communicating and exploring.
Also, you should continue getting acquainted with the project, the code,
the practices and the developers. Please make sure you all read and
understand the following - very useful - documents:
- [3]
http://purl.org/xwiki/community/
- [4]
http://purl.org/xwiki/dev/
- [5]
http://platform.xwiki.org/xwiki/bin/view/Features/
= Mentorship =
We prefer open mentorship. While your assigned mentor is the one
officially
in charge with your guidance, almost all
interaction should be done 'in
the
open' as much as possible, on the IRC channel
or on the mailing list. You
should choose the communication medium according to the importance of the
matters to be discussed: naturally, the less important issues are to be
discussed on IRC, while the design decisions, important progress
announcements and testing/feedback requests go on the list. This way, the
community is informed on the evolution of your project, and other
developers can come up any time with useful ideas and suggestions.
Moreover, if your mentor is "hit by a bus" (the bus factor [6]), another
developer can take his place with little effort.
= Communication =
Sitting alone in your room, working secretly on your project is
definitely
a bad approach. However, please keep in mind that
too much communication
can also be harmful, as it distracts the others from their own work. You
need to be able to communicate just right:
- provide meaningful information about your progress,
- ask the community's opinion on non-trivial design or implementation
decisions
- avoid wasting a lot of time on a problem, when a more experienced
developer (or a student that fought the same problem) could quickly
provide
you an answer; however, do try to find the answer
yourself at first.
Wrong: "Where do I start? What do I do now? And how do I do that? Is this
good? It doesn't work, help me!"
Right: "Since a couple of hours ago I get a strange exception when
building
my project, and googling for a solution
doesn't seem to help. Looking at
the error, I think that there's a wrong setting for the assembly plugin,
but nothing I tried works. Can someone please take a look?"
Start monitoring the devs mailing list discussions. It is also
recommended
to subscribe to the users list, but not
mandatory. The notifications list
is a little too high volume and technical for the moment, but it is a
great
knowledge source.
Yes, to keep communicating is very important, which can help me to quickly
locate
and solve the problem. When I have a problem, I will first find the
solution by myself.
If there is any doubt and confusion after googling and trying, I will ask
for help
on the IRC channel or on the mailing list according to the importance of
the matters.
Thank you for your reminder. I will keep in mind.
= Development process =
The project's lifecycle is NOT design -> implementation -> testing ->
documentation.
We invite you to adopt a test driven development [8][9][10] approach and
to
experience agile development [11]. After the
first coding week, you must
have some code that works. It won't do much, of course, but it will be
the
seed of your project. Every functionality will be
validated by tests. The
code must be properly tested and commented at the time of the writing
(don't think you'll do that afterwards, because in most cases you won't).
Since our code is now hosted on GitHub [12], you should register an
account
there and fork some xwiki repositories, so that
you can try to build
XWiki
from sources, and be able to contribute bugfixes.
We'll add you to the
xwiki-contrib organization [13], and we'll create dedicated repositories
for each project. We encourage you to do __at least__ weekly commits
(ideally, if you are well organized, you should be able to commit code
that
works daily, so try to aim at daily commits).
This way, the code can be
properly reviewed, and any problems can be detected before they grow into
something too difficult to fix. One big code blob committed at the end,
no
matter how good it may seem, is a failure at
several levels.
It will be a great help to me for developing the project. And I will follow
the above rules,
adopting a test driven development and agile development, making clear
comments and
documents and tring to commit code daily as much as I can. I think this
will play a very
good role in the development of my career.
A simple way of having something functional in the first week is to
prepare
the maven build for your modules, which will give
you the first unit test
for the first class.
= Next steps, in a nutshell =
- Get more familiar with the code and development process and try to
master
Maven, JUnit, Selenium, component driven
development, ...
- Continue fixing a few small issues, chosen so that they are __related
to
your project__. You can ask on IRC for help
selecting good issues, or you
can pick from the (non-comprehensive) list of easy issues [14]
-- This will help you get more familiar with the code your project needs
to
interact with.
- Refine and organize the ideas concerning your project (you can use the
Drafts space [15]), and write several use case scenarios.
- Start writing the first piece of code for your project.
At the end of the community bonding period, you should have a clear
vision
of the project, well documented on the
xwiki.org
wiki, you should have
the
build infrastructure ready, and you should be
pretty familiar with the
existing code you will need to interact with. And, of course, you should
be
http://jira.xwiki.org/jira/secure/IssueNavigator.jspa?mode=hide&request…
[15]
http://dev.xwiki.org/xwiki/bin/view/Drafts/
_______________________________________________
devs mailing list
devs(a)xwiki.org <javascript:_e(%7B%7D,'cvml','devs@xwiki.org');>
http://lists.xwiki.org/mailman/listinfo/devs
I really appreciate that you give me so many useful tips I can learn. I
will be familiar
with these rules as soon as possible, and start developing my project in a
good manner.
Thank you once again. Expect to make a greater contribution.
Best Regards,
Fitz Lee
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs