Hi Nadeeshaan,

congrats! I hope you like our interface :) If you have any feedback on
the installation process, including the website and/or have any ideas
to make it better, just let us know.

I have talked to you via chat already, so some of the things I write
may be redundant, but I already started writing that mail when we
started chatting and it probably makes sense to let the ML follow in
the public.

Under the hood Fauxton uses the CouchDB HTTP API, that means if you
would have named your database `baseball` you would have typed:

```
$ curl -X PUT http://127.0.0.1:5984/baseball
$ curl -X POST http://127.0.0.1:5984/baseball -d '{"involved_person":
"player"}' -H "Content-Type: application/json"
```

After the POST CouchDB returns an id and rev to you:

```
{"ok":true,"id":"9ab658d4978b6440b739c2d479000b5f","rev":"1-30447915fbb1fe23e994d0c7a4563abe"}
```

You will also see those if you open the new document in Fauxton. You
can then open a doc using a GET request and the id:

```
$ curl -X GET http://127.0.0.1:5984/baseball/9ab658d4978b6440b739c2d479000b5f
```

But why do we need revisions?

The first primer is http://guide.couchdb.org/draft/consistency.html to
get some background knowledge how CouchDB is updating data, it will
make it easier for you why we need revisions in CouchDB compared to a
classical SQL database. It does not lock, but to make sure that no
other client overwrites accidentally other data, you will need to
provide a revision to update a document:

```
curl -X PUT 
http://127.0.0.1:5984/baseball2/9e0a5c077bed1acf61ca1bae2e000578?rev=1-30447915fbb1fe23e994d0c7a4563abe
-d '{"involved_person": "referee"}' -H "Content-Type:
application/json"
```

```
{"ok":true,"id":"9e0a5c077bed1acf61ca1bae2e000578","rev":"2-61193c79a05bd0fa4fc823ec5a131645"}
```

After the update the document gets a new revision. If the revision
does not match on an update (e.g. another client updated already) you
will get an error:

```
curl -X PUT http://127.0.0.1:5984/baseball2/9e0a5c077bed1acf61ca1bae2e000578
-d '{"involved_person": "referee"}' -H "Content-Type:
application/json"
```

results in:

```
{"error":"conflict","reason":"Document update conflict."}
```

The docs provide very good in-depth background information regarding
revisions and conflicts:

http://docs.couchdb.org/en/1.6.1/replication/conflicts.html#conflict-avoidance
http://docs.couchdb.org/en/1.6.1/replication/conflicts.html#revision-tree

The revision tree will be the one that will get visualized by the gsoc
project :)

The project mentioned in the ticket
(https://github.com/neojski/visualizeRevTree) has an MIT license and
is compatible to the Apache 2 license. It might make sense to use that
one and just style it to our needs. Things I would like you to find
out:

 - is the project maintained?
 - how we could style it to our needs
 - what are the pros/cons to write something like that on our own

It is OK if you don't find answers for all these questions, but it
would be nice if you would spend max 2hrs until Wednesday to try to
find that out.

The old interface mentioned in the Jira ticket is available at
http://localhost:5984/_utils/ and you were able to navigate between
revisions of a document:

https://cldup.com/ahArpJsBTH.png

To try on your own, just modify an existing document.

One idea could be to integrate the visualization of the tree and the
navigation into the current document-editor screen. Feel free to ping
Alex, nickname "Kxepal" in #couchdb-dev in freenode for feedback where
and how he would use the feature as he created the ticket.

Flux & React primers:
As mentioned in the ticket we are using React for our application. It
probably makes sense to learn some basics how React & Flux works if
you never worked with it:

I just recently done those on my own, and I would suggest you to
follow the tutorial by creating code on your machine for the lessons
from Ryan. The other article gives you an overview how the Flux
pattern works which will be part of your work.

https://github.com/ryanflorence/react-training/tree/gh-pages/lessons
https://medium.com/brigade-engineering/what-is-the-flux-application-architecture-b57ebca85b9e

Btw: Some of you mentioned that you have important exams in the next
days. Please don't feel pressured and take care of them, having a good
exam is important! :)

As we have to find a way together how fast we are proceeding don't be
discouraged if you don't get everything done until Wednesday. I know
it is a lot of input but I also don't want you to get stuck and wait
for new topics / tasks for your preparation.


Meeting Wednesday:
Feel free to join us on our weekly couchdb meeting:
http://mail-archives.apache.org/mod_mbox/couchdb-dev/201503.mbox/%3CCAJ1bcfEKOh4nvoxUqvcAcUFgg96w-JqHEefpi%2BWzazKFUPXNCg%40mail.gmail.com%3E

I will be around at least one hour before so we can chat. Contact me
if you would like to chat earlier/later. I am also around the other
days on IRC / the mailinglist and feel free to contact me in
#couchdb-dev at any time. If I am not around I will answer you once I
got online again, as I read the backlog.

Checklist for Wednesday:
 - read the primers on revisions, conflicts and versioning
 - do the react.js tutorial and read the flux article
 - think how we could integrate that feature into Fauxton, Kxepal
might have some nice ideas how he would use the feature, he hangs out
in #couchdb-dev like me
 - try to answer the questions regarding pros/cons of using the
existing revision tree visualizer vs creating one on our own
 - try out the old feature in futon
 - if time left: take a look at the Fauxton code, this commit shows
how we refactored an old backbone component to a React one using the
Flux pattern (Stores, Actions, Components)


Again, this is a lot of input - but I tried to provide you enough to
do until Wednesday. If you don't have time to follow that all (e.g.
because of exams) don't feel discouraged. If it is not enough content,
just contact me if you are at the last two steps, so I can prepare new
content.

Best,
Robert

On Sat, Mar 14, 2015 at 9:07 PM, Nadeeshaan Gunasinghe
<nadeeshaangunasin...@gmail.com> wrote:
> Hi Robert,
> I followed your guide line and  I could Successfully install coucheDB and
> fauxton. So as the next step I created a document and tested if everything
> works. At the moment every works fine. I think I am ready for the next step
> *" explaining revisions of documents"*. If you can provide some guidance
> and resources to follow it would be great. :)
> Cheers
>
> On Sat, Mar 14, 2015 at 2:34 PM, Nadeeshaan Gunasinghe <
> nadeeshaangunasin...@gmail.com> wrote:
>
>> Hi,
>> Thank you  very mush for the guidelines Robert. I am going to get started
>> the guidelines as you suggested and Surely I will ping on dev in any
>> imergency
>> Cheers
>>
>> On Sat, Mar 14, 2015 at 12:59 PM, Robert Kowalski <r...@kowalski.gd> wrote:
>>
>>> Hi Nadeeshaan and welcome to the CouchDB mailing list :)
>>>
>>> CouchDB is a database written in Erlang with an HTTP API. We have an
>>> Admin-Interface (think of PHP MyAdmin) which is a
>>> Single-Page-JavaScript MVC App. It started as a Backbone.js project,
>>> but we are currently migrating to React.js for performance reasons.
>>>
>>> The CouchDB community is a very nice and inclusive community - I
>>> really enjoy being a part of it!
>>>
>>> I tried to write a short tutorial how you can get Fauxton running on
>>> your machine. Don't worry if you are stuck or have questions, we are
>>> happy to help!
>>>
>>> Getting started:
>>>
>>> It would be nice if you have Linux/Unix running on your machine (or
>>> something like "git bash" in place, but I a no expert in development
>>> on windows) so we can exchange code snippets for the console.
>>>
>>> Pre-requirements:
>>> For this project you will need to install at least CouchDB 1.x, an
>>> Ubuntu package (with installation instructions) is at
>>> https://launchpad.net/~couchdb/+archive/ubuntu/stable
>>>
>>> Additionally you need to install Node.js 0.10 or 0.12 (install from
>>> https://nodejs.org)
>>>
>>> Booting Fauxton and first steps (type without the $):
>>>
>>> after you have couchdb installed you start it with:
>>> $  couchdb
>>>
>>> if you have a permissions problem try:
>>> $ sudo couchdb
>>>
>>> in another terminal, clone the admin interface:
>>> $ git clone https://github.com/apache/couchdb-fauxton
>>>
>>> go to Fauxton
>>> $ cd couchdb-fauxton
>>>
>>> install dependencies:
>>> $ npm install
>>> $ npm install -g grunt grunt-cli
>>>
>>> boot the app:
>>> $ grunt dev
>>>
>>> Then open your browser and go to http://localhost:8000 - you should
>>> see a red/gray/black interface
>>>
>>> That was a lot of input, you have a lot archived now!
>>>
>>> As first step, try to create a database and a document now using the
>>> web interface. :)
>>>
>>> If everything worked, we are ready for the second part, explaining
>>> revisions of documents. I am currently travelling but in general I am
>>> also on freenode in #couchdb-dev and can give you ad-hoc help and help
>>> troubleshooting. My nick is robertkowalski/rkowalski - I am also happy
>>> to share my screen if the problem is more complex.
>>>
>>>
>>> What's next:
>>> If everything works we will take a look at Fauxtons code structure and
>>> how it works. Additionally we will take a look at document revisions.
>>>
>>> Looking forward to work with you,
>>> Robert
>>>
>>>
>>> On Fri, Mar 13, 2015 at 1:51 PM, Nadeeshaan Gunasinghe
>>> <nadeeshaangunasin...@gmail.com> wrote:
>>> > Hi
>>> > I am Nadeeshaan and currently I am a final year Undergraduate at
>>> Department
>>> > of Computer Science and Engineering at University of Moratuwa, Sri
>>> Lanka. I
>>> > did my Internship at WSO2 Lanka last year which is an open source
>>> products
>>> > related Company. I am so much passionate about involving in Open source
>>> > contribution and also I completed my GSOC 2014 Project Successfully (
>>> >
>>> http://magazine.joomla.org/issues/issue-sept-2014/item/2282-reaching-the..
>>> .)
>>> > . I have a sound knowledge on Java,Javascript,CSS,HTML, MySQL, Database
>>> > Administration, Machine Learning, Data Minng and web Development
>>> specially.
>>> >
>>> > I am so much interested in aforementioned project and I would like to
>>> > involve with this project idea. Therefore I would like to have bit more
>>> > information about the project and to have some guidance about getting
>>> > started with the project
>>> >
>>> > Cheers....
>>> >
>>> > --
>>> > Nadeeshaan Gunasinghe
>>> > Department of Computer Science and Engineering
>>> > University of Moratuwa
>>> > Sri Lanka
>>>
>>
>>
>>
>> --
>> Nadeeshaan Gunasinghe
>> Department of Computer Science and Engineering
>> University of Moratuwa
>> Sri Lanka
>>
>
>
>
> --
> Nadeeshaan Gunasinghe
> Department of Computer Science and Engineering
> University of Moratuwa
> Sri Lanka

Reply via email to