On Thursday, May 5, 2011 at 4:23 PM, Robert Campbell wrote:
A question to the diaspora devs.How is diaspora developed?That's a vague question so let me dissolve it.How do you decide which features to implement?
I am asking if you have a well designed & documented system architecture that allows for simple extendability of the core product. For example there is a status/photo publisher. Is the system designed in a way so that people who decide to implement the software can easily integrate other publishers e.g: a video publisher, event publisher, poll publisher etc. I've checked the schema file in the source and the database does not seem to be modeled in a way that allows this kind of easy integration. So back to the question: Is there a framework that you use for development or do you just add things as you go and rewrite/modify the code base to support it?
This product is intended to be distributed. Is the system designed in such a way that other people can easily customize the view layer or is it "themable"?
The selling point of diaspora is "privacy" but so far the only layer of privacy I have seen so far is the "aspect". Is this meant to be the only layer of privacy for diaspora or are there plans to provide a more granular method for preserving privacy?Is there a documented protocol for communicating with diaspora nodes/pods from other systems?
Are you satisfied with the current pace of development? There was so much hype about diaspora last year that I decided to learn ruby so I could be a part of it, but after the initial release and some negative feedback from certain "reporting houses", the flames just died.I have taken a look(not thorough) at source and I must say that I am not impressed with the progress so far. From what I understand, you guys are so students (as am I); I understand you may have been busy with school so that may be the cause.
Keep in mind that Facebook has been around for 7 years, and Diaspora's alpha release was...what, last year? It definitely needs some time to mature. Open-source software that's not in common use tends to stagnate a little longer than software people are being paid to develop, for obvious reasons. No one's getting paid to write Diaspora, and anybody who contributes probably gets paid to develop something else. There are very few coders who can program all day and then come home and do it all night. I know I'm certainly not one of those people, songs don't write themselves!
On Thursday, May 5, 2011 at 4:23 PM, Robert Campbell wrote:
A question to the diaspora devs.How is diaspora developed?That's a vague question so let me dissolve it.How do you decide which features to implement?Well, if you feel like writing a feature and it works well with the software, it can be integrated into the main codebase on request. Basically, if you fork the project and then write your feature (and it works), you can submit a "Pull Request" which will subject your fork for review by the maintainers, and if they like the feature and it works properly, it will be integrated.I am asking if you have a well designed & documented system architecture that allows for simple extendability of the core product. For example there is a status/photo publisher. Is the system designed in a way so that people who decide to implement the software can easily integrate other publishers e.g: a video publisher, event publisher, poll publisher etc. I've checked the schema file in the source and the database does not seem to be modeled in a way that allows this kind of easy integration. So back to the question: Is there a framework that you use for development or do you just add things as you go and rewrite/modify the code base to support it?Are you looking at the same schema? :) Photos are extensions of the Post class, which has a database. What's stopping you from creating a Video or Poll class which extends Post? The idea is that anything you post to your feed is a Post and should be treated equally. Obviously, to the server these different media types are handled differently, but regardless of what is contained in the post it's still a post and should be treated as such. This also makes it easier to sort through and display one's activity feed, which is definitely a central part of any social networking site.
Diaspora was built using behavior-driven development (BDD). It's a concept that's an offshoot of test-driven development (TDD), wherein you write tests for your application first, watch them fail, and then write just enough code to make them pass. By attacking each problem separately, and before it becomes a "bug", you end up writing more bulletproof software which can be easily maintained. The best part about BDD is when you want to add new features. By writing test-first, you can quickly see how your new code is affecting the rest of the application because you're only writing enough code to make your new feature's tests pass.
This product is intended to be distributed. Is the system designed in such a way that other people can easily customize the view layer or is it "themable"?I wouldn't say it's "easy" to change Diaspora's look & feel, but I feel like theming is something that's can be implemented pretty quickly, considering projects like Typo have already mastered it. Although I think we have some more pressing matters to deal with right now than the UI. Of course, you should feel free to contribute such a feature... :)
The selling point of diaspora is "privacy" but so far the only layer of privacy I have seen so far is the "aspect". Is this meant to be the only layer of privacy for diaspora or are there plans to provide a more granular method for preserving privacy?Is there a documented protocol for communicating with diaspora nodes/pods from other systems?
It's already implemented! If the Diaspora pod you're trying to connect to doesn't require an invite, you can easily sign in to that pod with your original Diaspora account details. This works like Twitter/Facebook connect, wherein you register using your existing account and the pod simply migrates the information into its own database. So technically, you're creating another account but since it's all "in the family" we can safely transfer lots of account details to get you immediately started on the new pod. This method was chosen because it's secure, fast and easy to understand. In addition, your pod is self-sufficient and doesn't ever need to "phone home" to some centralized user database. The point is decentralization, after all. e you satisfied with the current pace of development? There was so much hype about diaspora last year that I decided to learn ruby so I could be a part of it, but after the initial release and some negative feedback from certain "reporting houses", the flames just died.
I have taken a look(not thorough) at source and I must say that I am not impressed with the progress so far. From what I understand, you guys are so students (as am I); I understand you may have been busy with school so that may be the cause.It sounds like you need to learn a little more about Rails, Ruby and behavior-driven development.
But we'd like to do better, and we'd like to move more people from
one-time contributor to regular committer. Sadly we have very limited
bandwidth at the moment, and we're unlikely to focus on documenting an
architecture that is still in constant flux.
That said, all our best documentation to date is community-generated,
so please - take a stab at writing some of the things you say are
missing! :)
Sarah
--
------------------
Sarah Mei
sarahmei.com/blog