Attendees: bassdeal, clsk, j_k9, ttk
Note: All timestamps in UTC.
This meeting's agenda can be found here.
As sent to the Mira Development Mailing List on 28/02/2011 with the subject: “Summary of 20/02/2011 Meeting”:
Hi all,
The meeting on Sunday 20th February was attended by Alan, John, Tijoy and myself. You can find a transcript of the meeting here:
http://miragroupware.org/wiki/doku.php/development/communication/archives/110220_biweekly
This meeting's (brief) agenda can be found here:
http://miragroupware.org/wiki/doku.php/development/communication/agendas/110220_biweekly
Once again, I apologize for the delay in preparing and sending this summary. Please note that any reference to “this week” implies last week, and any reference to “this weekend” implies the weekend that has just passed: 26th to 27th February. I will address the topics in the order in which they were discussed.
Tijoy gave us a quick update on his task. He has got the Notes Utility up and running within Mira. He intends to push his work to a new branch on Launchpad this week.
Tijoy has been building the Notes Utility on Linux, but intends to test it on Windows for compatibility. He plans to have a fairly good version ready for the next meeting, so that we can all test it live. The collaboration framework is currently a work-in-progress, but Tijoy hopes to make some advances on it before the meeting.
I am going to have a second attempt at getting Mira to build on Mac OS X when I return home in a few weeks.
John is working on the SQLite module for the Database interface. He has already got most of it working (including adding, updating, and finding users and Workplaces). The prepared statements are written and fully functioning. He is currently working on adding and removing Workplace subscriptions.
John noticed that the plaintext backend, written several years ago, currently updates a user's Workplace subscriptions (i.e. the Workplaces of which a user is a Member) in both the user's data and the Workplace's data. He intends just to update a field among the Workplace's data, in the database, so as to prevent potential conflicts.
In his implementation, main.cpp reads the configuration file and then sets the Directory backend to either plaintext or database, as specified.
It was asked whether we should embed SQLite in our code, or require it to be installed separately on the server. Alan suggests that we let the user install it, and let CMake check whether the dependency is installed. John pointed out that, if we follow this suggestion, we then have to document which versions of SQLite we support. The alternative is to embed SQLite in our code; the upside is that we control which version of SQLite Mira uses, but the downside is that it is another burden on our code.
Once John has ensured that the Client works (and that the system works with multiple Clients without causing conflicts), and that nothing has been broken in the plaintext backend, he will push his code to a new branch on Launchpad. For the former, he might employ some kind of automated testing to bombard the Server with messages from multiple connections. He is also considering removing the DB object layer (the structure is currently: Directory → Plaintext, and Directory → DB → SQLite), but that will depend on whether any shared objects can be placed at the DB level.
All that Alan has left to implement on his login-system branch is a “Log Off” feature in the Client. Following this, the branch will be ready to be tested and then merged into trunk; that is, after the few bugs have been ironed out.
Finally, John asked about the references to the Resource class in the Mira Server code, which is currently not used for any purpose. Alan explained that it was made as a proof of concept a while ago, but it will be used in the future for the Roles system, as Alan documented in his blog post.
Well done on your excellent work! Please keep it up. Also, John, thank you for the update you sent earlier.
On a separate note, I am going to get back in touch with some of the developers who expressed an interest in joining us back in December, but who then fell out of contact. I am sure that we can all agree that it would be great to have a few more contributors to the project.
Regards,
Max Bossino
Project Manager
http://miragroupware.org
[23:09] ttk: Hi J_k9
[23:09] ttk: I just dropped to give a quick update
[23:10] j_k9: Please go ahead, if you're pressed for time.
[23:10] ttk: I have the notes utility up and running …
[23:11] ttk: I coudnt checkin the code last week since i was out of town…
[23:11] ttk: I will check in the changes this week……
[23:11] clsk: j_k9: everything is fine. Just a bit busy with school and all.
[23:12] clsk: hello bassdeal and ttk
[23:12] bassdeal: Hello!
[23:12] j_k9: ttk: Great! Would love to test it out. Did you build it on Windows?
[23:12] ttk: No ..
[23:12] ttk: Just on Linux
[23:12] j_k9: Ok, then there's much better chance of success for me. :)
[23:13] ttk: I will see if it builds on Windows , but i would be able to try Mac
[23:13] j_k9: Would you? I gave it a go a few months ago, and was able to build Mira Server but not the Client.
[23:13] j_k9: There was an error with CMakeLists.txt…
[23:13] j_k9: (On Mac)
[23:14] ttk: I plan to have fairly good version ready by next meeting so we all can play with it
[23:14] ttk: I dont have a Mac ,
[23:14] j_k9: Sorry ttk, so is the communication functionality also implemented, or the GUI?
[23:15] j_k9: Ah, ok. I can give the Mac another try when I return home in a few weeks.
[23:15] ttk: The collaboration framework is still in nascent stage…
[23:16] ttk: I have to make some progress with it in next week or so…
[23:16] j_k9: That's great, looking forward to testing it out! I should be able to set up another public Server for the next meeting, so we might be able to test it on that.
[23:17] ttk: Sound 's good…
[23:17] j_k9: Thanks for letting us know. :)
[23:17] j_k9: Do you have any questions or issues so far?
[23:18] ttk: OK guys . I gotta to run now…
[23:18] clsk: bye ttk. Thanks for the update
[23:18] bassdeal: Progress sounds great ttk.
[23:18] ttk: Wanted to update you all..
[23:18] j_k9: Thanks for joining, ttk.
[23:18] ttk: See u all later
[23:19] ttk left the chat room. (Quit: Page closed)
[23:19] j_k9: bassdeal, would you like to go next?
[23:19] bassdeal: Sure.
[23:20] bassdeal: Still working on SQLite implementation. Have most of it working. Adding, updating, finding users and workplaces. All prepared statements done and seem to work. Been using main.cpp as a test driver. Have not done testing with client in a while. Currently working on workplace subscriptions.
[23:21] clsk: bassdeal: Just out of curiosity, are you using the Directory class as an interface?
[23:22] bassdeal: A difference in my implementation from plaintext is I notice plain text updates subscriptions both in User and WorkPlaces. I want to just update it in WorkPlaces.
[23:22] bassdeal: Yes. I am inheirating Directory classes.
[23:22] clsk: what do you mean by update subscriptions?
[23:23] j_k9: i.e. if a user joins a Workplace?
[23:23] bassdeal: Adding users to workplaces. users subscribe to workplaces. Subscriptions seems to be the term used in the code.
[23:23] clsk: oh ok
[23:23] clsk: Sorry, just haven't looked at that code in a long time
[23:24] bassdeal: NP.
[23:24] j_k9: Sounds very good. So are Workplace subscriptions (and unsubscriptions) the only statements left to prepare?
[23:25] bassdeal: Main.cpp reads the configuration and sets the directory to plaintext or SQLite. After that nobody should see the difference.
[23:25] bassdeal: Except for performance
.
[23:25] clsk: cool
[23:25] clsk: have you had to make any additions to the Directory interface ?
[23:26] bassdeal: I plan on doing the same for MySQL after I get SQLite working completely.
[23:26] j_k9: Makes me eager to test it! The SQLite library is contained in a single file, right? So no dependencies?
[23:26] bassdeal: Not to Directory but to User and WorkPlace. Just a method to set invalid which just sets the ID to zero.
[23:27] bassdeal: That is something I should bring up. Users can install SQLite. We can also have it imbedded in our code. Currently I have it installed. With Sphirewall we had it embedded.
[23:28] clsk: nice. I though you were going to have to make some modifications
[23:28] clsk: I'd say let the user install it. And have it as an option if it is installed
[23:29] clsk: we can have CMake check if it's installed
[23:29] bassdeal: There are advantages and disadvantages to both approaches. If we embed it we can control what version we use but we have to carry the code.
[23:30] bassdeal: I can go either way. We will have to document the versions supported.
[23:30] bassdeal: If we have the user install it. SQLite is very stable.
[23:31] bassdeal: I have nothing else to report.
[23:33] j_k9: Great work so far. Have you considered pushing your branch to Launchpad, or do you prefer to finish the prepared statements first?
[23:35] bassdeal: Prepared statements are done. I want to make sure the client works OK and I have not broken anything with plaintext before checking it in. Also, it looks like I might remove the db object layer. Right now there is Directory then DB then SQLite with plaintext under Directory. I don't think I can put any shared objects at the db level and if so will remove it.
[23:37] j_k9: Ok, that's brilliant. If you would like to push it before the next meeting, please do - I would be very happy to test it out. :)
[23:38] bassdeal: OK. I may need some help with bzr since I am very inexperienced with it.
[23:39] j_k9: Sure. Feel free to email me if you have any questions. I presume you've been working on the code within another local branch?
[23:41] bassdeal: Whatever branch I initially setup. I will have to take a look. I am not on my development system.
[23:42] j_k9: Ok, no problem. If you need any help pushing that when you choose to do so, please let me know.
[23:42] bassdeal: Thanks.
[23:43] j_k9: Thanks, John.
[23:43] j_k9: clsk, how is your branch coming along?
[23:45] clsk: I haven't really made any progress. All I have left to do is to implement a feature to “log off” the server and release all resources when that happens
[23:46] clsk: after that my branch will be ready to be tested and merged with trunk
[23:46] clsk: and I think you guys found a few bugs as well
[23:46] clsk: those need to be ironed out
[23:47] bassdeal: Sorry for my ignorance but what do you mean by logging off the server?
[23:47] j_k9: Disconnecting from a Server.
[23:48] j_k9: To return to the Servers screen.
[23:48] clsk: and also logging off of an offline session
[23:48] j_k9: Ah, yes.
[23:48] bassdeal: This is a single client?
[23:49] clsk: yes
[23:49] bassdeal: OK.
[23:49] clsk: I'm working on the client atm
[23:50] bassdeal: OK.
[23:51] j_k9: Do you think you will have some time to work on the code before the next meeting?
[23:54] clsk: I'm not sure to be honest. But I'll try to get it done next weekend.
[23:54] clsk: or if I get time during the week
[23:55] j_k9: Ok, great. :)
[23:55] j_k9: Does anyone have any questions or issues they would like to raise?
[23:56] bassdeal: I have a question. I see in the server code references to a Resource class. I have not ran into anything that uses it yet. What is it for?
[23:57] bassdeal: At least I have not noticed how it is stored.
[23:58] bassdeal: Not a big deal. Just curious.
[23:58] j_k9: clsk, any clues?
[23:59] clsk: It's not being used at the moment
[23:59] bassdeal: OK
[23:59] clsk: it's something I made as a proof of concept a long time ago
[00:00] clsk: hm actually
[00:01] clsk: let me look at it real quick
[00:01] bassdeal: OK. I am not on my development system.
[00:02] clsk: yes, that's what it is.
[00:02] clsk: don't worry about it for now
[00:02] bassdeal: Sounds good to me
.
[00:02] clsk: It will probably be used in the future though
[00:02] bassdeal: OK
[00:03] clsk: http://aliencoder.blogspot.com/2009/10/security-in-directory-layer.html
[00:03] clsk: that explains what it is
[00:04] bassdeal: OK so it is a users permissions on a resource.
[00:05] clsk: yes
[00:05] j_k9: Oh, I see. That's definitely a few releases away. :) It's for the “Roles system”, right?
[00:06] j_k9: Pretty cool. Encompasses Server permissions, Workplace permissions, and permissions on Utilities within a Workplace. All three bases.
[00:07] clsk: ground work for it. Yes
[00:08] j_k9: Nice start!
[00:08] j_k9: Well, is there anything else?
[00:09] clsk: hm I don't have anything else
[00:09] bassdeal: Well in the agenda you mentioned schedule. I hope to have the SQLite running with a client by end of next weekend.
[00:10] bassdeal: There is a lot of testing. Must test with multiple cients and try to cause conflicts.
[00:11] bassdeal: Would like to figure out some kind of automated testing of the server. Pumping messages from multiple connections.
[00:11] j_k9: Great. Thanks, John - looking forward to testing it. If you have any issues with testing simultaneously, we can set up a public Server from your code and bombard it with messages. :)
[00:11] bassdeal: OK.
[00:11] j_k9: Can we not loop messages through a telnet connection?
[00:11] j_k9: (Not that I want to DOS it, of course…)
[00:13] bassdeal: I guess so. I could just echo errors to the console. ]
[00:13] bassdeal: It would have to be sftp
.
[00:13] bassdeal: But I am not there yet.
[00:14] j_k9: No problem! Keep up the great work :)
[00:14] bassdeal: Well you have not seen it yet.
[00:15] j_k9: True, but you're very convincing!
[00:15] j_k9: ;)
[00:15] j_k9: If there are no more queries, let's wrap this up. I'll send round a summary after the meeting (hopefully a little more promptly than last time…).
[00:15] j_k9: Thanks to both of you for joining. :)
[00:16] bassdeal: NP.
[00:16] bassdeal: Been fun.
[00:16] clsk: good night :)
[00:16] j_k9: Goodnight!
[00:17] bassdeal: You too.
Discussion