-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ideas for contributions #29
Comments
Thanks! Of course, I forgot to put the link. |
How about support for Rx style IObservables between grains? Seems like it would make a nice fit and possibly offer a richer feature set than observable grains as they are currently implemented. On a side note, am looking forward to seeing where this project goes in general. Thanks for making it available. |
Do you mean something beyond IAsyncObservable/IAsyncObserver? |
Can you give some code examples of what exactly do you mean by "Rx style IObservables between grains" in addition to what we already have here: |
I could start by moving samples from code plex and look at the pluggable storage system next. I could create DocumentDB and RavenDB providers as well and see how the event sourced state providers would fit into the story in some consistent way. Also, could you please update the wiki page with some general instructions on how the work should be carried out? For example, should we create a feature branch? Do you expect a PR once the whole work is done or at the beginning so you can follow the progress? |
I've been tinkering with using Doxygen to generate a reference manual. I'm of the opinion that an auto-generated reference manual would be a good way to keep detailed documentation up to date with the code with minimal effort. I was hoping to get a sense of the communities interest in such an effort prior to spending more time on it. |
+1 for automated tool. -1 for Doxygen website not working properly in Mobile Firefox. Hopefully generated documentation is better.... |
We are still learning the process, so you all might need to educate us a bit. A feature branch seems like a natural way to go to me. What's the alternative? I guess a PR in the beginning would make sense for medium and large size features. But ultimately it should probably be up to the person writing the code - when they want to share and get feedback from others. Maybe we should try a few things and formulate the instructions later? If you can point to a good example of such instructions, that would help. For RavenDB, are you planning to use https://github.com/OrleansContrib/orleans.storageprovider.ravendb from danielmarbach? It's a good question how event sourced state providers fit the model. If they don't, maybe we should consider changing or expanding the model? Same question about support for on-demand loaded state properties. We are very open to ideas and suggestions how to improve it. |
I would prefer to work on a feature branch and make a PR asap for any feedback. Let's see how it goes 😉 Yes, we have a bunch of storage providers in OrleansContrib which we could port to main repo. ES providers will probably require a new interface since the reading / writing semantics are a bit different - but it should fit in nicely. I don't know what are the requirements for loaded on-demand properties - let me create a separate issue to discuss it... |
@jkonecki I wasn't aware of the Doxygen + Mobile Firefox issue. Tertiary search generated results from 2013, is this still an issue? Given that google is using doxygen for documentation on it's projects, I suspect that there are few major issues with the tech. Is there another auto-doc tool you're recommend? It's been a while since I've worked with it, but doxygen still seems like the de facto standard. |
@jason-bragg I'm talking about their website, not the generated documentation 😄 There was a Sandcastle project http://sandcastle.codeplex.com/ but it's dead now... Don't get me wrong - I fully support your idea of generated documentation. I'm sure the doxygen will be fine. |
There are some useful guidelines on how to contribute to .NET projects on GitHub here: The main coding standards and “style guide” used for Orleans code is the .NET Framework Design Guide: Note in particular that going forward, a .NET Contribution License Agreement (CLA) will be required for any non-trivial contributions to this project. |
I had good experience with Sandcastle for documenting APIs with an MSDN style. |
Added "Support for dependency injection [Medium]" to the list. |
@jdom - yes, the providers that depend on third party libraries will be separate from core Orleans. |
BTW, I recommend that instead of having a list in a wiki, that you create a separate GitHub issue for each item, so it can be discussed in isolation, and also be assigned or update the status. |
@gabikliot Hadn't come across those yet, looks good. Thanks. |
@jdom - yes, that's what I suggested at the top: "Please create separate issues to discuss individual ideas/features." That's a great suggestion about "up for grabs"! |
Right now, I'm working on something that covers items 3, 9, 10 from this list https://github.com/dotnet/orleans/wiki/Ideas-for-Contributions and makes item 4 somewhat irrelevant. Thus, the solution is pretty unusual :) I'll post an update once PoC is done (2-3 days). |
I'll have a go at 1. Number 5 is partially addressed by SiloMon, although I would be the first to admit that it's lacking features. |
Great! I created issues for 1, 3, 4, 9 and 10 to discuss the details. |
One thing that I haven't seen described is how you write unit tests for a grain. How do you inject mocks for other referenced grains? Logically speaking, the testing point and natural junction between actors would be the messages they send/receive. However, since messages are not explicit concepts in Orleans, I assume it will be necessary to mock the grains (proxies) which are interacted with. |
Does this question fit into 10. Support for dependency injection? Or you think it goes beyond that? |
We have examples of unit test with grains here: Although you could definitely mock some grains while testing others, you don't have to. You can test your full application or its parts in a real silo (or multiple silos) environment running all in one process on your machine. |
@gabikliot That's an example of integration testing, not a unit test. It's impossible to test grains in isolation with this approach. @kspeakman Hi, Kasey! Nice to see you here (if that is the same Kasey Speakman from DDDD/CQRS mailing list). At the moment real unit testing (when you can test grain in isolation) is tough. The problems were already discussed here, here and there. The gist is, that there are no real seams provided by the framework. Even with DI some things will still be impossible to unit test. Yes, with DI you can inject interface implementations of your own stuff (eg, IRepository, IExternalService) but will get into troubles very quickly if your grain is using timers or reminders, or making deactivation requests, and even just accessing and identity of itself. I went to the great lengths with unit testing and abstracted all those pesky framework dependencies inside Orleans.Bus. Maybe, one day something similar will appear in Orleans. |
I completely agree with you. Taking into account that actors are single-threaded turn-based - they could be unit tested as a regular .NET object. Same techniques apply. Scenario based testing such as Given(Previous State) ->When (Message In) -> Then(Message Out / New State). With Event Sourcing it will be incredibly simple (and reliable). You know, the usual GWT with Past Events -> Command -> New Events. BTW, nothing is holding you from using message passing and do your own dispatch (using a higher-order functions). This is already supported by Orleans. |
I have done some 'editorial' work, and moved things around slightly. @gabikliot I have included a tree structure. @jthelin thanks - I'll send a PR when I'm done with the initial edits. Does anyone have any original artwork for the Orleans logo (hexagons) it would be nice to have a high res version, with the shadow applied to a transparent (as opposed to white) background... |
@richorama I'll check on the original artwork. We should have a vector version somewhere to produce a high-resolution image. |
Richard, I love how it looks like! I say lets do the following, in order:
|
Amazing work :D From: Richard Astbury [mailto:notifications@github.com] There's no styling, and there's probably loads of broken links, but I've had a go at porting the wiki to github pages. repo is here: http://richorama.github.io/orleans-docs/ web page is here: http://richorama.github.io/orleans-docs/ Does anyone have any creative talent (or know of a good template)? — |
@gabikliot #212 is ready to merge :¬) |
Merged! Thank you @richorama ! |
I deleted all wiki pages and all documentation is now located on http://dotnet.github.io/orleans/. |
@richorama I found and added the original icons - https://github.com/dotnet/orleans/tree/gh-pages/Icons. There are also .ai files if we need them. |
Hi, They got my attention while getting to learn Orleans.
Thanks |
@lnaie Are you interested in submitting a PR for this? That would be great. |
Is the migration to CoreFx started? I would love to participate |
@colombod As far as I know, it hasn't started in earnest. We only looked at the scope of the work with the compatibility tool, and assessed that it's pretty modest. Interested in starting the work? Quite a few people would appreciate progress in that direction. |
That would be my pleasure!
|
Hi @colombod. Any progress on this front would be highly appreciated! |
Great, I also have to catch up with cored state and will do exactly what you propose. Reassing the state and plan. Do you think that also the roslyn migration would impact this porting?
|
I think Roslyn is related to the part when we decide how to do the code gen so it can work in core clr. I am still not sure how much of the code gen APIs are different in corefx vs. full clr. Maybe it will be a small porting effort and we won't need to redo it all. Or maybe it is much more pervasive and perhaps using Roslyn for code gen will simplify the whole story. We already have an open issue #40 about Roslyn, which is very related. |
Did fork, is there an issue number for this item? Do you use GitFlow branching in the repo? |
Opened an issue here: #368 |
Great, so just branching, not Gitflow. right? |
Yes, we don't use Gitflow. Just branching. |
@sergeybykov Yes, I could give it a try. |
@lnaie Excellent! Let us know how we can help. |
…standingCommits in guard (dotnet#29)
We added a page with some initial ideas for contributions. Let's use this issue for discussing the list and adding to it. Please create separate issues to discuss individual ideas/features.
The text was updated successfully, but these errors were encountered: