title: Akka.net message immutabilty
body: <p>I've been working through the <a href="https://github.com/petabridge/akka-bootcamp" rel="nofollow noreferrer">Akka.net bootcamp</a> and ran across something that's been puzzling me based on things I've read about messages.</p>
  
  <p>In the <a href="http://getakka.net/docs/working-with-actors/sending-messages" rel="nofollow noreferrer">messaging documentation</a> it states that messages should be immutable.</p>
  
  <p>In unit 2 of the bootcamp, the <a href="https://github.com/petabridge/akka-bootcamp/blob/master/src/Unit-2/lesson5/Completed/Actors/ChartingActor.cs#L28" rel="nofollow noreferrer">Initialize Chart</a> message appears to be mutable on a couple levels. </p>
  
  <pre><code>public class InitializeChart
  {
      public InitializeChart(Dictionary&lt;string, Series&gt; initialSeries)
      {
          InitialSeries = initialSeries;
      }
  
      public Dictionary&lt;string, Series&gt; InitialSeries { get; private set; }
  }
  </code></pre>
  
  <p>First off, the dictionary contents can be modified (add, remove, etc).  Secondly the dictionary items, <a href="https://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.series(v=vs.110).aspx" rel="nofollow noreferrer">Series</a>,
   are mutable.</p>
  
  <p>I have 2 questions:</p>
  
  <p>1) Am I in error with my interpretation of how an Akka.net message should be built?  (this example is actually correct.)</p>
  
  <p>2) Should Akka.net messages be immutable all the way down?  For example, if this message was changed to:</p>
  
  <pre><code>public class InitializeChart
  {
      public InitializeChart(Dictionary&lt;string, Series&gt; initialSeries)
      {
          InitialSeries = new ReadOnlyDictionary&lt;string, Series&gt;(initialSeries);
      }
  
      public IReadOnlyDictionary&lt;string, Series&gt; InitialSeries { get; private set; }
  }
  </code></pre>
  
  <p>Would that satisfy the requirements of an Akka.net message, or should the Series elements also be immutable?</p>