sdCloud project blog

Thoughts, stories and ideas on sdCloud and System Dynamics

Release 17.12.3.0 is out and couple words about traditions

Today calendar told me that it is eleventh of December and it means that time has come for the new release. Someone may ask why we took this day for our releases? It appears, that two previous releases in October and November were pushed out on eleventh of October and November respectively. This was a pure fortuity that we noticed after publishing a blog post about November release.

I think that traditions are very important aspect of open source development teams. Traditions are important piece of our joint history as a team and not as a group of independent developers who are working on a shared codebase. While working on your own product and not doing outsource, we can spend as much efforts and time on its quality as we want and nobody can come to us and say that we need to release new feature in three days. Such approach allows us to achieve good quality and set high standards for everything we are doing. But there is always another side. Since nobody tells us what and when should be released, we need to have common and widely accepted across all team release rules and traditions. In most cases, traditions are not coming from outside the team, but appearing inside it, like our tradition to make major feature releases on eleventh of each month. Rules and traditions, developed and grown by a team is a key part of unique culture of each team and frequently for culture level of a team leads to its big success.

Jumping back from philosophy to our newborn release, I want to say couple words about our new features. Besides number of internal improvements that we made during past month, key user-visible feature of this release are artifacts. Currently, under the hood of sdCloud we have to models execution engines: PySD and SDEverywhere. Both of them generates executable modules from model definitions, in Python and C respectively. After that they are executed to compute the model. Before this release, the only outcome of the model execution - were execution results, time-series. Now, after model execution, intermediate artifacts like Python scripts generated by PySD and C code with compiled binary from SDEverywhere are also available for downloading.

На календаре одиннадцатое число, а это значит, что пришло время для нового релиза. А почему именно одиннадцатое? Так получилось, что предыдущие релизы, которые вышли в октябре и ноябре также пришлось на одиннадцатые числа своих месяцев. Это была случайность, которую мы заметили после опубликования ноябрьского поста про новый релиз.

Мне кажется, что традиции - это очень важный аспект в жизни свободных и открытых команд. Традиции - это часть нашей совместной истории, нас как команды, а не группы отдельных инженеров, которые просто вместе работают над кодом. Работая над собственным продуктом, а не разрабатывая его на заказ, мы можем уделять столько времени и сил его качеству и соответствию нашим ожиданиям, сколько сочтём нужным, так как ни кто не может прийти и сказать что эта функциональность должна быть готова завтра или нас всех разгонят. Такое положение дел позволяет нам добиваться высокого качества и устанавливать высокие стандарты для нас самих в том, что мы делаем. Однако, у такой ситуации есть и обратная сторона. Так как никто не указывает нам когда и что выпускать, необходимо иметь согласованные и всем понятные правила или традиции. Такие традиции обычно появляются сами собой, как, например, выпускать главные релизы по одиннадцатым числам месяца. Традиции и правила, вырабатываемые командой, собираются в её культуру и, во многом, именно от культуры команды зависит успешность и качество выпускаемого ей решения.

Теперь пару слов о том, что нового увидят пользователи в новой версии. Помимо разнообразных внутренних улучшений, более важных для нас, чем для пользователей, главной заметной фичей стали артефакты. На данный момент, под капотом sdCloud есть два механизма исполнения моделей: PySD и SDEverywhere. Оба инструмента конвертируют модели сначала в исполняемый код на Python и С, соответственно, а затем его исполняют. Раньше, после исполнения модели, пользователю были доступны только результаты моделирования. Теперь же, можно загрузить и сгенерированные исполняемые модели на Python и С.