Skip to content

Commit 7123d0f

Browse files
[DocFx] custom Akka.NET theme (#5659)
* added updated Akka.NET DocFx theme * added "Show and Tell" page * added v1.5 notes
1 parent 2e1d4ea commit 7123d0f

19 files changed

+1971
-8
lines changed

docs/articles/clustering/cluster-overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ A cluster represents a fault-tolerant, elastic, decentralized peer-to-peer netwo
1111

1212
## What Does Akka.Cluster Do?
1313

14-
The best way to begin introducing Akka.Cluster is with brief overview of what it does. Akka.Cluster is the [package](https://www.nuget.org/packages/Akka.Cluster/1.0.3.11-beta) that brings clustering support to Akka.NET, and it accomplishes this by adding the following capabilities to Akka.NET:
14+
The best way to begin introducing Akka.Cluster is with brief overview of what it does. Akka.Cluster is the [package](https://www.nuget.org/packages/Akka.Cluster/) that brings clustering support to Akka.NET, and it accomplishes this by adding the following capabilities to Akka.NET:
1515

1616
* Makes it easy to create peer-to-peer networks of Akka.NET applications
1717
* Allows peers to automatically discover new nodes and removed dead ones automatically with no configuration changes
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
uid: community-standups
3+
title: Akka.NET Community Stand-Ups
4+
---
5+
6+
# Akka.NET Community Stand-Ups
7+
8+
Akka.NET Community Stand-ups are a once-a-month meeting that happens on the second Wednesday of each month and is live-streamed via [Petabridge’s YouTube channel](https://www.youtube.com/c/PetabridgeAcademy).
9+
10+
> [!TIP]
11+
> [Click here to subscribe for future Akka.NET Community Stand-up notifications on YouTube](https://www.youtube.com/c/PetabridgeAcademy?sub_confirmation=1)
12+
13+
## Structure of Each Stand-Up
14+
15+
1. **Recap of most recent Akka.NET releases (10 min)** - we should talk about the work that was performed since the last stand-up, its impact on end-users, and what we learned in the course of performing that work.
16+
2. **Plans for future work (10 min)** - what are we working on next, why, and why should users care?
17+
3. **Opportunities to contribute (5 min)** - what help would we like from the Akka.NET end-user community?
18+
4. **Show and Tell (20 min)** - give members of the Akka.NET team and community opportunities to showcase their work built on top of Akka.NET.
19+
5. **Q&A (10 min)** - show and tell presenters along with the Akka.NET team should take questions via YouTube Live from the audience.
20+
21+
### Current Schedule
22+
23+
**Stand-ups are second Wednesday of each month starting at 12pm CST.**
24+
25+
> [!TIP]
26+
> See our [schedule of upcoming 2022 Akka.NET Community Stand-ups here](https://github.com/akkadotnet/akka.net/discussions/5691).
27+
28+
## Show and Tell Presentations
29+
30+
The AKka.NET team features members of the Akka.NET community at each stand-up, where they their stories about how they use Akka.NET at work. e call these "Show and Tell" presentations and they are featured in our Community Stand-ups going forward.
31+
32+
> [!IMPORTANT]
33+
> Show and Tell is a great way to attract talented .NET developers in the Akka.NET community who love to work on the sorts of interesting and important problems that Akka.NET solves well. Use this as a platform to showcase your company and attract great talent to it!
34+
35+
You can participate in the Show and Tell process by filling out this form: [Akka.NET Community Stand-up Submission](https://forms.gle/zR1K2pygCFhdCG7v5) - someone from our team will respond, help you with your presentation, and get you scheduled for one of our upcoming 2022 Akka.NET Community Stand-ups.
36+
37+
### Show and Tell Structure
38+
39+
Show and tell is an important component of each set of community stand-ups as it gives members of the Akka.NET Community a chance to share their experiences and success with Akka.NET.
40+
41+
Here is what makes for a compelling show and tell presentation:
42+
43+
1. Presenter Background - who are you, who do you work for, and what do you do?
44+
2. Project Background - why is this project important to you and your company?
45+
3. Requirements - what requirements did this project have?
46+
4. Why Akka.NET - why did you choose Akka.NET? What was the criteria? What alternatives did you consider?
47+
5. Which parts of Akka.NET do you use and why?
48+
6. Was this a greenfield project or an update to a legacy system? What were the key implementation challenges with Akka.NET?
49+
7. How has the system been performing for you since?
50+
8. Visualization - do you have some diagrams that can help show how the system runs?
51+
9. Any future plans for Akka.NET on your project or at your company?
52+
53+
### Production
54+
55+
After you've submitted the form, a member of the Akka.NET team will contact you and help you put together a PowerPoint presentation or a live demo that helps "show" all of the answers to your questions above. This is a great opportunity for you and your company to showcase the interesting work that you do and attract potential Akka.NET talent to your company.
56+
57+
### Past Show and Tells
58+
59+
Examples of past show and tells:
60+
61+
* [Game Plumbing Framework on Akka.NET](https://youtu.be/6AoDlK8LtFU?t=958) - July 7th, 2021
62+
63+
### Submit a “Show and Tell”
64+
65+
Want to share your experience with Akka.NET? Fill out our Google Form here and someone from our team will contact you about participating in an upcoming Akka.NET Community Stand-up!
66+
67+
> [!TIP]
68+
> Click here to submit a "Show and Tell" proposal to the Akka.NET team: [Akka.NET Community Stand-up Submission](https://forms.gle/zR1K2pygCFhdCG7v5)

docs/community/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
href: whats-new/toc.yml
33
- name: Contributing to Akka.NET
44
href: contributing/toc.yml
5+
- name: Community Standups
6+
href: community-standups.md
57
- name: Getting Access to Nightly Akka.NET Builds
68
href: getting-access-to-nightly-builds.md
79
- name: Online Resources
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
---
2+
uid: akkadotnet-v15-whats-new
3+
title: What's new in Akka.NET v1.5.0?
4+
---
5+
6+
# Akka.NET v1.5 Plans and Goals
7+
8+
Beginning with our [March 9th, 2022 Akka.NET Community Standup](xref:community-standups) we've shared our plans for the roadmap of Akka.NET v1.5.
9+
10+
While not every technical detail is finalized yet, we do want to share the goals and some of the specific plans of what's included in this next minor version release of Akka.NET!
11+
12+
## Goals
13+
14+
<!-- markdownlint-disable MD033 -->
15+
<iframe width="560" height="315" src="https://www.youtube.com/embed/pZN1ugrJtJU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
16+
<!-- markdownlint-enable MD033 -->
17+
18+
Based on feedback from Akka.NET users, here are the top priorities:
19+
20+
1. **Better documentation and examples** - after simplifying the Akka.NET APIs around configuration and startup, modernizing all samples and deployment guidance is the biggest issue affecting end-users.
21+
2. **Improved Akka.Remote + Cluster.Sharding performance** - we want to go from ~350,000 msg/s to 1m+ msg/s in our `RemotePingPong` benchmark by changing the design of Akka.Remote's actors and optionally, replacing our transports.
22+
3. **Improved default serialization options** - Newtonsoft.Json sucks. Full stop.
23+
4. **Improved Akka.Cluster formation experience** - in layman's terms this means [releasing Akka.Management out of beta](https://github.com/akkadotnet/Akka.Management/discussions/417) and incorporating it into the Akka.Cluster literature and code samples.
24+
5. **Leveraging .NET 6+ primitives for improved performance** - thread execution, zero-allocation System.Memory data structures, and more.
25+
6. **Make CQRS a priority in Akka.Persistence** - tags are an especially weak area for Akka.Persistence right now, given that they require table scans.
26+
7. **Leverage Microsoft.Extensions more closely** - consume Microsoft.Extensions.Configuration from HOCON, allow Microsoft.Extensions.Logging interplay, and more.
27+
8. **Cleanup** - there are a lot of old constructs and that can be removed from Akka.NET.
28+
29+
## How to Contribute
30+
31+
Contributing to the v1.5 effort is somewhat different than our [normal maintenance contributions to Akka.NET](xref:contributing-to-akkadotnet),in the following ways:
32+
33+
1. **Breaking binary compatibility changes are allowed so long as they are cost-justified** - contributors must be able to explain both the benefits and trade-offs involved in making this change in order for it to be accepted;
34+
2. **Wire compatibility must include a viable upgrade path** - if we're to introduce changes to the wire format of Akka.NET, contributors must demonstrate and document a viable upgrade path for end-users; and
35+
3. **Bigger bets are encouraged** - now is a good time to take some risks on the code base. So long as contributors can offer sound arguments for taking those bets (and this includes acknowledging and being realistic about trade-offs) then they should feel free to propose new changes that align with the 1.5 goals.
36+
37+
### Good Areas for Contribution
38+
39+
1. .NET 6 dual-targeting - there will be lots of areas where we can take advantage of new .NET 6 APIs for improved performance;
40+
2. Performance optimization - performance optimization around Akka.Remote, Akka.Persistence, Akka.Cluster.Sharding, DData, and core Akka will be prioritized in this release and there are _many_ areas for improvement;
41+
3. Akka.Hosting - there are lots of extension points and possibilities for making the APIs as expressive + concise as possible - we will need input from contributors to help make this possible;
42+
4. API Cleanup - there are lots of utility classes or deprecated APIs that can be deleted from the code base with minimal impact. Less is more; and
43+
5. New ideas and possibilities - this is a _great_ time to consider adding new features to Akka.NET. Be bold.
44+
45+
> [!IMPORTANT]
46+
> Familiarize yourself with our [Akka.NET contribution guidelines](xref:contributing-to-akkadotnet) for best experience.
47+
48+
## Designs & Major Changes
49+
50+
### Akka.Hosting
51+
52+
We want to make Akka.NET something that can be instantiated more typically per the patterns often used with the Microsoft.Extensions.Hosting APIs that are common throughout .NET.
53+
54+
```csharp
55+
using Akka.Hosting;
56+
using Akka.Actor;
57+
using Akka.Actor.Dsl;
58+
using Akka.Cluster.Hosting;
59+
using Akka.Remote.Hosting;
60+
61+
var builder = WebApplication.CreateBuilder(args);
62+
63+
builder.Services.AddAkka("MyActorSystem", configurationBuilder =>
64+
{
65+
configurationBuilder
66+
.WithRemoting("localhost", 8110)
67+
.WithClustering(new ClusterOptions(){ Roles = new[]{ "myRole" },
68+
SeedNodes = new[]{ Address.Parse("akka.tcp://MyActorSystem@localhost:8110")}})
69+
.WithActors((system, registry) =>
70+
{
71+
var echo = system.ActorOf(act =>
72+
{
73+
act.ReceiveAny((o, context) =>
74+
{
75+
context.Sender.Tell($"{context.Self} rcv {o}");
76+
});
77+
}, "echo");
78+
registry.TryRegister<Echo>(echo); // register for DI
79+
});
80+
});
81+
82+
var app = builder.Build();
83+
84+
app.MapGet("/", async (context) =>
85+
{
86+
var echo = context.RequestServices.GetRequiredService<ActorRegistry>().Get<Echo>();
87+
var body = await echo.Ask<string>(context.TraceIdentifier, context.RequestAborted).ConfigureAwait(false);
88+
await context.Response.WriteAsync(body);
89+
});
90+
91+
app.Run();
92+
```
93+
94+
No HOCON. Automatically runs all Akka.NET application lifecycle best practices behind the scene. Automatically binds the `ActorSystem` and the `ActorRegistry`, another new 1.5 feature, to the `IServiceCollection` so they can be safely consumed via both actors and non-Akka.NET parts of users' .NET applications.
95+
96+
This should be open to extension in other child plugins, such as Akka.Persistence.SqlServer:
97+
98+
```csharp
99+
builder.Services.AddAkka("MyActorSystem", configurationBuilder =>
100+
{
101+
configurationBuilder
102+
.WithRemoting("localhost", 8110)
103+
.WithClustering(new ClusterOptions()
104+
{
105+
Roles = new[] { "myRole" },
106+
SeedNodes = new[] { Address.Parse("akka.tcp://MyActorSystem@localhost:8110") }
107+
})
108+
.WithSqlServerPersistence(builder.Configuration.GetConnectionString("sqlServerLocal"))
109+
.WithShardRegion<UserActionsEntity>("userActions", s => UserActionsEntity.Props(s),
110+
new UserMessageExtractor(),
111+
new ShardOptions(){ StateStoreMode = StateStoreMode.DData, Role = "myRole"})
112+
.WithActors((system, registry) =>
113+
{
114+
var userActionsShard = registry.Get<UserActionsEntity>();
115+
var indexer = system.ActorOf(Props.Create(() => new Indexer(userActionsShard)), "index");
116+
registry.TryRegister<Index>(indexer); // register for DI
117+
});
118+
})
119+
```
120+
121+
#### `ActorRegistry`
122+
123+
As part of Akka.Hosting, we need to provide a means of making it easy to pass around top-level `IActorRef`s via dependency injection both within the `ActorSystem` and outside of it.
124+
125+
The `ActorRegistry` will fulfill this role through a set of generic, typed methods that make storage and retrieval of long-lived `IActorRef`s easy and coherent:
126+
127+
```csharp
128+
var registry = ActorRegistry.For(myActorSystem); // fetch from ActorSystem
129+
registry.TryRegister<Index>(indexer); // register for DI
130+
registry.Get<Index>(); // use in DI
131+
```

docs/community/whats-new/toc.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
- name: New in Akka.NET v1.5
2+
href: akkadotnet-v1.5.md
13
- name: New in Akka.NET v1.4
24
href: akkadotnet-v1.4.md
35
- name: Upgrade Advisories (v1.4)

docs/docfx.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@
6767
"_appTitle": "Akka.NET Documentation",
6868
"_appLogoPath": "/images/akkalogo.png",
6969
"_appFaviconPath": "/images/favicon.ico",
70-
"_appFooter": "Copyright © 2013-2021 Akka.NET project<br>Generated by <strong>DocFX</strong>",
7170
"_enableSearch": "true"
7271
},
7372
"dest": "_site",

docs/images/footer.png

2.9 KB
Loading

docs/images/github.png

1.53 KB
Loading

docs/images/header.svg

Lines changed: 31 additions & 0 deletions
Loading
179 KB
Loading

0 commit comments

Comments
 (0)