First IRC meeting discussion snapshot

24 views
Skip to first unread message

Christophe Willemsen

unread,
Aug 29, 2012, 4:43:52 PM8/29/12
to neox...@googlegroups.com
Here the paste of the first IRC meeting:

[20:46] <MIAker> btw we have some difficulties to make a good Class Datagram with Neo4J annotation
[20:46] <MIAker> ikwattro: Are you using annotations to manage Neo4J with Symfony2?
[20:47] <ikwattro> MIAker: I tried to use Neo4j-PHP-OGM to do it with annotations (doctrine style)
[20:47] <ikwattro> but I intend to go Propel way for my projects
[20:47] <ikwattro> so generating classes from a yaml/xml schema file
[20:48] <ikwattro> there are some advantages using this compared to doctrine style
[20:48] <jadell> ikwattro: can't you do that with doctrine as well?
[20:48] <ikwattro> but we will wait 19.00GMT before to go deeper in discussion to let people join irc
[20:48] == zsquare [~m...@117.195.113.254] has quit [Remote host closed the connection]
[20:49] <ikwattro> jadell: yes you can
[20:49] <MIAker> no prob
[20:50] <ikwattro> jadell: i'll explain later why I don't go for doctrine and also why we should still support doctrine style though :) that's why @lphuberdeau repository is made for
[20:50] <MIAker> You seems to have so much skills :)
[20:53] == rsuniev123 [~rsun...@host86-149-206-193.range86-149.btcentralplus.com] has joined #neo4j
[20:57] == timas [ae8d9b6a@gateway/web/freenode/ip.174.141.155.106] has joined #neo4j
[21:02] <ikwattro> all: hello, so except MIAker, jadell and me, who is here for php discussion
[21:03] <ikwattro> ?
[21:04] <ikwattro> Ok then we are three
[21:04] <ikwattro> My first keypoint is about id handling
[21:04] <ikwattro> a good practice in neo4j is to not rely on db id's
[21:05] <ikwattro> as they are re-allocated in the time and having some clients with caching systems that asked from cache for a node with a db id, this can return non reliable sets of data
[21:06] <yacin> i'm trying to compile/install neo4j-embedded python so i can use 1.8 cypher syntax, but i'm having some trouble. anyone have experience with that?
[21:06] <ikwattro> while this is far in improbability I think we should have a robust id system for nodes/edges
[21:07] <ikwattro> yacin: no sorry
[21:07] <jadell> ikwattro: I agree with you. This is a feature of the object mapper, not the http client, right?
[21:07] <ikwattro> MIAker, jadell: why do you think about using UUIDv4 for id generation
[21:07] <ikwattro> jadell: right
[21:08] <jadell> Can we talk about the client first? The mapper is of less concern to me, though it is also important
[21:08] <ikwattro> jadell: but the http client should support getNodeById calls where the id is node parameter that is indexed
[21:08] <ikwattro> jadell: yes http client first
[21:09] <ikwattro> jadell: so I already talked about this, I would love to see separation of http client and mapping
[21:09] <ikwattro> jadell: what are your intentions in neo4jphp for the future ?
[21:09] <jadell> ikwattro: I agree
[21:10] <jadell> ikwattro: I would like to separate neo4jphp into 2 components, a low level http client that talks arrays/JSON in and out, and a higher level library that provides the current Node/Relationship objects that neo4jphp currently provides.
[21:11] <jadell> The idea would be to let anyone build any mapping layer on top of a pure JSON client
[21:11] <ikwattro> jadell: agree
[21:12] <jadell> So ig you want to use bluepill, or @lphuberdeau wants to use his OGM, or I want to use neo4jphp, we can all use the same http client and build libs on top of that.
[21:13] <jadell> I think there is room for different mapper types, all using the same underlying http lcient
[21:14] <ikwattro> jadell: absolutely
[21:14] <ikwattro> jadell: what do you think about using guzzle to build such http client ?
[21:14] <MIAker> Just I would like to come back about the model designing. What kind a software are you using to design your class diagram? (Neo4j-PHP-OGM)
[21:15] <jadell> I'm not familiar with guzzle, but it looks pretty interesting.
[21:15] <ikwattro> jadell: this is a strong and robust curl abstraction, so you just need to focus on commands pattern
[21:15] == toubtoub [ae8d9b6a@gateway/web/freenode/ip.174.141.155.106] has joined #neo4j
[21:15] <ikwattro> MIAker, for doctrine style yes
[21:15] <jadell> @miaker: I don't use an OGM, so I can't give an opinion
[21:15] == Canape [~Pier...@174.141.155.106] has quit [Remote host closed the connection]
[21:16] <jadell> @ikwattro: it looks interesting. neo4jphp is already built on a command pattern
[21:16] <ikwattro> jadell: here is what I tried with guzzle
[21:16] <jadell> I've seen it.
[21:16] <ikwattro> jadell: I can give more explanations, would you be happy to take the project over ?
[21:17] <ikwattro> MIAker: we will come to the mapping part later, if we don't have a strong http client, we cannot have a strong mapper
[21:17] <MIAker> okay no prob
[21:17] <jadell> I'd rather start with neo4jphp and begin refactoring the command/transport layer out. It's more fully-featured already, and people are already using it in production.
[21:17] <ikwattro> later in this discussion I will say
[21:18] <ikwattro> jadell: you're right
[21:18] <ikwattro> jadell: do you provide simple calls, so calls that do not return me an object ?
[21:19] <jadell> no, but that's where the refactoring would start. It would be easy to do so.
[21:19] <ikwattro> jadell: ok super !
[21:20] <jadell> basically, I want to turn neo4jphp into a layer that uses objects to represent nodes/rels and talks to an underlying http client that only talks JSON
[21:21] <jadell> this way, projects already using neo4jphp can keep using it with no API changes, and the http client becomes a standalone component for building other mappers
[21:21] <jadell> I do think it would be a good idea to unify things under a common organization
[21:22] <jadell> I don't know what the individual project names would be, but if we use neoxygen, there would be neoxygen/http-client, neoxygen/ogm, neoxygen/neo4jphp, etc...
[21:23] <ikwattro> jadell: yes, neoxygen is not mandatory, I'm open to all suggestions
[21:23] <jadell> I think it's fine
[21:24] <ikwattro> jadell: for the http-client, do you want that I go deeper with the guzzle implementation so you can use it in neo4jphp or do you prefer to extract the current work you did in neo4jphp ?
[21:24] <jadell> I prefer to start with neo4jphp, but I'm biased :-)
[21:25] <jadell> I'm going to investigate guzzle and see if I can make another transport plugin for it, like lphuberdeau did with native php streams
[21:26] <jadell> brb
[21:26] <ikwattro> jadell: well the transport part in guzzle is really advanced streams, curl, multi-curl , ...
[21:27] <ikwattro> jadell: but it's up to you to use it or not
[21:28] <ikwattro> jadell: it's just that you don't have to worry about the transport abstraction as it is already maintainted in another repository
[21:28] <ikwattro> jadell: but yeah
[21:28] <ikwattro> jadell: other keypoints about the http client ?
[21:29] <ikwattro> MIAker: do you have some questions about the http client ? or are you just focused on mapping side ?
[21:30] <jadell> ikwattro: yes, but give me a minute, I have to take care of something
[21:30] <ikwattro> jadell: no prob
[21:30] <toubtoub> our questions with MIAker are mostly on the mapping side
[21:30] <toubtoub> (we work together)
[21:31] <ikwattro> toubtoub: ok, we will discuss later in the discussion. I'm quite happy to see people to use Symfony and neo4j
[21:32] <toubtoub> ikwattro: ok no problem
[21:33] <jadell> bak
[21:34] <jadell> so I'd like to look into using guzzle for the client.
[21:35] <jadell> my vision is to have every possible command as a method on the client, and allow a developer to pass in a callback that would handle the output.
[21:35] <jadell> so that way, the client just worries about http and JSON, and it's up to the developer how the result of the http request is handled
[21:37] <ikwattro> jadell: that's why it's already done with the current implementation of the *updown* library, it just returns you the response body ( we can configure it to return you the raw response also )
[21:37] <ikwattro> jadell: I'll let you go with the http client as we are on the same line
[21:38] <ikwattro> jadell: if you need some questions about guzzle, don't hesitate
[21:38] <jadell> cool, I think this will turn out very well!
[21:38] <ikwattro> jadell: I added you as organization owner for neoxygen
[21:38] <jadell> I saw, thank you
[21:38] <ikwattro> jadell: anything else ?
[21:40] <jadell> I'm going to listen in on the mapper discussion
[21:40] <ikwattro> jadell: ok
[21:40] <jadell> but I'm not a big fan of ORMs in general, so I don't have much input
[21:40] <jadell> :-)
[21:40] <ikwattro> so @toubtoub, @MIAker: ready ?
[21:41] <toubtoub> ikwattro:yep
[21:41] <ikwattro> MIAker: ?
[21:41] <MIAker> uyes
[21:41] <ikwattro> ok
[21:42] <ikwattro> so, to give a background situation
[21:42] <MIAker> thanks for you time :)
[21:42] <ikwattro> jadell is the creator of neo4jphp
[21:42] <ikwattro> neo4jphp is used by the Neo4j-PHP-OGM lib
[21:42] <ikwattro> by @lphuberdeau
[21:43] <ikwattro> we intend to combine our efforts to provide some php tools to use with neo4j
[21:43] <ikwattro> problem:
[21:43] <ikwattro> it would be nice to have the http-client separated from the mapper
[21:44] <ikwattro> more maintanable and can be used for other purposes
[21:44] <ikwattro> second:
[21:45] <MIAker> we will try  that
[21:45] <ikwattro> neo4j-php-ogm
[21:45] <ikwattro> is a bit afterwards to the current evolution of doctrine
[21:45] <ikwattro> so it really needs push ups
[21:46] <ikwattro> I tried it, but I don't really like doctrine style, mainly for the following purposes
[21:46] <ikwattro> doctrine use cache proxies
[21:46] <ikwattro> for my POV, cache is for optimization, not for something to rely on
[21:46] <MIAker> In fact we are using neo4j to manage our suggestion engine with our symfony2 and mongoDB
[21:47] <ikwattro> what lib do you use ?
[21:48] <toubtoub>  jadell's neo4jphp
[21:49] <ikwattro> oh he will be honoured :)
[21:49] <ikwattro> fine
[21:49] <toubtoub> we use annotations to synchronize neo4j and MongoDB
[21:50] <ikwattro> a second argument why I don't like doctrine style, is that you can not optimize queries by model
[21:50] <ikwattro> so that's why I would like to go for Propel style
[21:50] <jadell> @toubtoub: are you looking for something similar to doctrine, where you can add annotations to neo4j models?
[21:51] <ikwattro> I would like to support annotations yes
[21:51] <ikwattro> but I don't yet know how :)
[21:51] <ikwattro> in fact, I know but it needs tests
[21:52] <toubtoub> I am currently developping a doctrine extension using special annotations to synchonize class attributes in Neo4j and MongoDB
[21:52] <ikwattro> and it's not in my priorities, so if you want you can focus on annotations
[21:52] <ikwattro> cool
[21:52] <ikwattro> but for doctrine ?
[21:53] <toubtoub> yes for doctrine
[21:53] <ikwattro> do you support schemaless features also ? so the possibility to add properties to nodes that are not in your mapping ?
[21:54] <ikwattro> could be nice to have
[21:54] <toubtoub> we support three kind of annotations for now
[21:54] <toubtoub> but I have to say those are very oriented to the project I am working for
[21:55] <ikwattro> did you take a look at the Neo4j-PHP-OGM lib already ?
[21:55] <toubtoub> no
[21:56] <toubtoub> it adds an object layer to jadell's lib right?
[21:57] == MIAker [~Bo...@174.141.155.106] has quit [Quit: Computer went to sleep]
[21:57] <ikwattro> it's doctrine implementation for graph db, it uses neo4jphp as client for the requests
[21:57] <ikwattro> I've used it already, it need some works so it could be nice if you can combine your efforts on this repository with lphuberdeau to make the lib grow
[21:58] <ikwattro> I made a simple symfony bundle that embed that lib
[21:58] <ikwattro> you can take the project over if you want
[21:59] <ikwattro> btw, as discussed with jadell, we intend to centralize all the php tools for neo4j into an organization repository, currently https://github.com/neoxygen , what do you think to build your work there ?
[22:00] <ikwattro> we have also some keypoints regarding the mapping part, was you already here when we talked about id handling ?
[22:01] <toubtoub> seem's to be cool. I'll check that
[22:03] <ikwattro> so for the ID, it's a good practice to not rely on the db id's, do you know why ?
[22:03] <toubtoub> why?
[22:03] <ikwattro> ok
[22:03] <ikwattro> so the id's generated by the db are reallocated over time, so if a node is deleted, his id can be given to a future node
[22:04] <ikwattro> if you have some cache system
[22:04] <ikwattro> and your cache ask for a node with an id
[22:04] <ikwattro> then you can come up with non reliable data
[22:04] <toubtoub> I am not using the id this way
[22:04] <ikwattro> so it's intended to set a generated id in the nodes properties and index the id's
[22:05] <ikwattro> we intend to use UUIDv4
[22:05] <toubtoub> I am not using Neo4j's id but only mongoDB's id which I write in the nodes I create with a Property id
[22:05] <ikwattro> well
[22:05] <toubtoub> because MongoDb's Id are not relocated over time
[22:05] <ikwattro> ok, so you have double mapping :)
[22:05] <toubtoub> yes
[22:06] <ikwattro> of course, so it is a nice use case to make the use of UUIDv4 configurable to use it or not
[22:06] <ikwattro> good point then
[22:06] <toubtoub> this is the quickest solution I came with
[22:07] <ikwattro> do you have some keypoints or questions ?
[22:07] <jadell> You could make it so that if an id is already assigned, use that id, otherwise, generate one using UUIDv4
[22:08] == MIAker [~Bo...@174.141.155.106] has joined #neo4j
[22:08] <MIAker> Hi again :)
[22:09] <ikwattro> jadell: well, I think it's better to use the identification in the application lifecycle
[22:09] <ikwattro> jadell: read the same identification system
[22:10] <ikwattro> jadell: but can be discussed with use cases
[22:10] <MIAker> In fact I'm trying to represent our classes in a class datagram to generate our class with Neo4J anotations
[22:10] <MIAker> I don t know if you have already facing this problem
[22:10] <jadell> so, has anyone given a look at the spring data annotations for neo4j? What does anyone think about using those same annotations in PHP?
[22:12] <ikwattro> do you mean @Indexed, @RelatedTo ... ?
[22:13] <jadell> yeah
[22:13] <ikwattro> it is already used by Neo4j-PHP-OGM
[22:14] <ikwattro> MIAker: do you want to generate your class methods with annotations like doctrine ?
[22:14] <jadell> I thought they were similar, but I didn't think they were the same
[22:14] <ikwattro> jadell: I didn't knwo all the Spring annotations, but it could be a nice thing to have a harmonization with Spring and PHP
[22:15] <ikwattro> MIAker: so having your class metadata and constraints in annotations and that these classes are proxied through doctrine, is that ?
[22:18] <ikwattro> toubtoub: there is also a php mapping library for another graphdb that is more advanced than neo4j-php-ogm, it can maybe give you some tips and examples on how to reach your goalhttps://github.com/congow/Orient
[22:19] <ikwattro> MIAker: did you look at Neo4j-PHP-OGM ?
[22:19] <MIAker> :ikwattro : not yet in fact
[22:20] <ikwattro> ok, it is the same as doctrine orm but for neo4j
[22:20] <MIAker> at this end we are using doctrine
[22:20] <ikwattro> but needs some work on
[22:20] <ikwattro> I made a basic symfony bundle that embed this lib https://github.com/kwattro/KwattroNeo4jOGMBundle
[22:22] <toubtoub> thanks ikwattro I will check this lib
[22:22] <ikwattro> you can take together with toubtoub the bundle over, as I said to toubtoub we intend to centralize all the php tools for neo4j into an organization repository, currentlyhttps://github.com/neoxygen
[22:22] <ikwattro> If you are interested to do so, I can create you a repository and mark you as repository collaborators
[22:22] <MIAker> oh yes I have to check that
[22:22] == timas [ae8d9b6a@gateway/web/freenode/ip.174.141.155.106] has quit [Ping timeout: 245 seconds]
[22:23] <ikwattro> btw, what are your github/twitter names to get in contact out of irc ?
[22:23] <MIAker> you can find my github at gker
[22:24] <ikwattro> Miami ?
[22:24] <MIAker> Yes man ;)
[22:25] <ikwattro> lucky man, you have the same sunny days that I have rainy days on the year :) :)
[22:25] <MIAker> lol
[22:25] <MIAker> almost
[22:25] <ikwattro> allright, ping me when you have some questions regarding the repositories
[22:25] <MIAker> but we have hurricane now
[22:26] <MIAker> I will, thanks for all your help
[22:26] <ikwattro> What do you think about having a Google Group to discuss keypoints without having TZ matters ?
[22:26] <ikwattro> jadell: ?
[22:26] <jadell> that would be useful
[22:26] <MIAker> do you have a googlegroup?
[22:27] <jadell> do we want to settle on a name for the org first? I'm fine with neoxygen
[22:27] <ikwattro> MIAker: are you fine with the neoxygen name ?
[22:28] <ikwattro> toubtoub: also ?
[22:28] <MIAker> yes
[22:28] == toubtoub [ae8d9b6a@gateway/web/freenode/ip.174.141.155.106] has quit [Quit: Page closed]
[22:28] <ikwattro> oh toubtoub just quit
[22:28] <MIAker> don t worries he is not too far :p
[22:28] <ikwattro> :)
[22:29] <jadell> Who wants to set up the google group? ikwattro?
[22:29] <MIAker> let s do it :)
[22:31] <jadell> nice
[22:32] <jadell> So some action items for me: investigate guzzle, make a new project under neoxygen for http-client, start making a JSON-only client using neo4jphp as a starting point
[22:32] <ikwattro> plz add your name in the presentation repo with contact informations so we can reach quickly like twitter or github infos
[22:33] <ikwattro> for my part, I'm starting a project right now with neo4j, I'm handwriting all the mapping part so it can gives at the end a nice vision of what needs have to be generated when we create the mapper engine
[22:34] <ikwattro> MIAker: do you intend to go doctrine style and improve the current neo4j-phpogm library ?
[22:34] <ikwattro> I will move the Symfony bundle to the Neoxygen organization and mark you as repo collab so you can push there ?
[22:35] <ikwattro> I go propel way rather than doctrine
[22:37] <jadell> I'll email @lphuberdeau and tell him about the mailing list.
[22:38] <ikwattro> yes, we should inform him about maybe two contributors to his repo, and see if he's happy to move to an organization repo
[22:38] <ikwattro> MIAker: do you have some other keypoints ?
[22:40] <MIAker> I think I good for today
[22:40] <MIAker> already a lot of thing to stud
[22:40] <ikwattro> if you have some questions, don't hesitate to post on the google group
[22:40] <ikwattro> I'm also available on twitter : https://twitter.com/ikwattro
[22:41] <ikwattro> I'm shutting down for today, hope to get your news soon guys, it was really a nice discussion. Cheers !
Reply all
Reply to author
Forward
0 new messages