Rationale:

cosmic-river aims distributed Event-Driven workflows as generic, composable tool

motivation

I want to gain more pragmatic knowledge on following for me unfamiliar concepts:

  • Message Brokers: https://en.wikipedia.org/wiki/Message_broker

  • I will build the project with Clojure, a Lisp dialect with code-as-data philosophy. (https://clojure.org/)

The project itself has already a design and a scope but I will update it step by step for allowing freedom to experiment.

https://en.wikipedia.org/wiki/Cosmic_ocean

This project is part of:

Hack Week 18

Activity

  • over 6 years ago: dmaiocchi liked this project.
  • over 6 years ago: dmaiocchi added keyword "clojurescript" to this project.
  • over 6 years ago: dmaiocchi added keyword "clojure" to this project.
  • over 6 years ago: dmaiocchi added keyword "jvm" to this project.
  • over 6 years ago: dmaiocchi added keyword "functionalprogramming" to this project.
  • over 6 years ago: dmaiocchi added keyword "lisp" to this project.
  • over 6 years ago: dmaiocchi added keyword "distributedsystems" to this project.
  • over 6 years ago: dmaiocchi added keyword "distribution" to this project.
  • over 6 years ago: dmaiocchi started this project.
  • over 6 years ago: dmaiocchi originated this project.

  • Comments

    • dmaiocchi
      over 6 years ago by dmaiocchi | Reply

      day 01:

      During the 1st day of my hackweek I achieved the core design and schema of cosmic-river. I have draw the most components and their responsibilities, in a lightweight way.

      It has already some functionality which however cannot be used already.

      In the next days I plan to spend time on the message-brokers parts and this is the unfamiliar part of my hackweek, so it can take some times but still an exciting part ;)

      Thanks to interactive programming I was able to debug, code in a revolutionary workflow. I was using emacs + CIDER.

      https://docs.cider.mx/cider/usage/interactive_programming.html

    • dmaiocchi
      over 6 years ago by dmaiocchi | Reply

      day 2

      During second day I have learned concept with rabbitmq and message broker. ( I had already some theory background).

      I will focus with rabbitmq but I choosed to make cosmic-river composable, so an user could choose Kafka instead of rabbitmq.

      I have also designed the first skeleton with rabbitmq and continue on this model producer/consumer (server/client).

      In the project itself I needed to refactor things and create two different applicaitication. THe scaffold is ready and i plan to continue to work with.

    • dmaiocchi
      over 6 years ago by dmaiocchi | Reply

      day 3

      All client/server rabbitmq part was improved.

    • dmaiocchi
      over 6 years ago by dmaiocchi | Reply

      day4:

      Today I will work on serialization part and implement filters

    • dmaiocchi
      over 6 years ago by dmaiocchi | Reply

      day 4:

      • Improved documentation and presentation ( allthough I need to document the specification to configuration).
      • Data serialization over network done
      • Refactoring of the various namespaces.

      • Continuing working on the filter for events to be generic and parameterizable

    Similar Projects

    concierge: a distributed object capabilities based secret management tool implemented with Spritely Goblins by gleidi

    Description

    The idea is to build a FOSS command line (for now) secrets management tool, you may have heard of SOPS or Hashicorp Vault, with Spritely Goblins.

    Goblins is a distributed object programming environment. It provides an intuitive security model, automatic local transactions for locally synchronous operations, and an easy to use and efficient asynchronous programming interface for encapsulated objects which can live anywhere on the network. Its networking model abstracts away these details so the programmer can focus on object programming rather than protocol architecture.

    Goblins also integrates powerful distributed debugging tools, and a process persistence and upgrade model which respects its security fundamentals.

    Goals

    • learn more about distributed object capabilities environments
    • create a Goblins application able to serialize encrypted secrets and allow only the read capability owner to read the serialized secrets.

    Resources

    • https://codeberg.org/fishinthecalculator/concierge
    • https://spritely.institute/goblins/
    • https://www.gnu.org/software/guile/manual/guile.html


    Testing and adding GNU/Linux distributions on Uyuni by juliogonzalezgil

    Join the Gitter channel! https://gitter.im/uyuni-project/hackweek

    Uyuni is a configuration and infrastructure management tool that saves you time and headaches when you have to manage and update tens, hundreds or even thousands of machines. It also manages configuration, can run audits, build image containers, monitor and much more!

    Currently there are a few distributions that are completely untested on Uyuni or SUSE Manager (AFAIK) or just not tested since a long time, and could be interesting knowing how hard would be working with them and, if possible, fix whatever is broken.

    For newcomers, the easiest distributions are those based on DEB or RPM packages. Distributions with other package formats are doable, but will require adapting the Python and Java code to be able to sync and analyze such packages (and if salt does not support those packages, it will need changes as well). So if you want a distribution with other packages, make sure you are comfortable handling such changes.

    No developer experience? No worries! We had non-developers contributors in the past, and we are ready to help as long as you are willing to learn. If you don't want to code at all, you can also help us preparing the documentation after someone else has the initial code ready, or you could also help with testing :-)

    The idea is testing Salt (including bootstrapping with bootstrap script) and Salt-ssh clients

    To consider that a distribution has basic support, we should cover at least (points 3-6 are to be tested for both salt minions and salt ssh minions):

    1. Reposync (this will require using spacewalk-common-channels and adding channels to the .ini file)
    2. Onboarding (salt minion from UI, salt minion from bootstrap scritp, and salt-ssh minion) (this will probably require adding OS to the bootstrap repository creator)
    3. Package management (install, remove, update...)
    4. Patching
    5. Applying any basic salt state (including a formula)
    6. Salt remote commands
    7. Bonus point: Java part for product identification, and monitoring enablement
    8. Bonus point: sumaform enablement (https://github.com/uyuni-project/sumaform)
    9. Bonus point: Documentation (https://github.com/uyuni-project/uyuni-docs)
    10. Bonus point: testsuite enablement (https://github.com/uyuni-project/uyuni/tree/master/testsuite)

    If something is breaking: we can try to fix it, but the main idea is research how supported it is right now. Beyond that it's up to each project member how much to hack :-)

    • If you don't have knowledge about some of the steps: ask the team
    • If you still don't know what to do: switch to another distribution and keep testing.

    This card is for EVERYONE, not just developers. Seriously! We had people from other teams helping that were not developers, and added support for Debian and new SUSE Linux Enterprise and openSUSE Leap versions :-)

    In progress/done for Hack Week 25

    Guide

    We started writin a Guide: Adding a new client GNU Linux distribution to Uyuni at https://github.com/uyuni-project/uyuni/wiki/Guide:-Adding-a-new-client-GNU-Linux-distribution-to-Uyuni, to make things easier for everyone, specially those not too familiar wht Uyuni or not technical.

    openSUSE Leap 16.0

    The distribution will all love!

    https://en.opensuse.org/openSUSE:Roadmap#DRAFTScheduleforLeap16.0

    Curent Status We started last year, it's complete now for Hack Week 25! :-D

    • [W] Reposync (this will require using spacewalk-common-channels and adding channels to the .ini file) NOTE: Done, client tools for SLMicro6 are using as those for SLE16.0/openSUSE Leap 16.0 are not available yet
    • [W] Onboarding (salt minion from UI, salt minion from bootstrap scritp, and salt-ssh minion) (this will probably require adding OS to the bootstrap repository creator)
    • [W] Package management (install, remove, update...). Works, even reboot requirement detection


    Switch software-o-o to store repomd in a database by hennevogel

    Description

    The openSUSE Software portal is a web app to explore binary packages of openSUSE distributions. Kind of like an package manager / app store.

    https://software.opensuse.org/

    This app has been around forever (August 2007) and it's architecture is a bit brittle. It acts as a frontend to the OBS distributions and published binary search APIs, calculates and caches a lot of stuff in memory and needs code changes nearly every openSUSE release to keep up.

    As you can imagine, it's a heavy user of the OBS API, especially when caches are cold.

    Goals

    I want to change the app to cache repomod data in a (postgres) database structure

    • Distributions have many Repositories
    • Repositories have many Packages
    • Packages have many Patches

    The UI workflows will be as following

    • As an admin I setup Distribution and it's repositories
    • As an admin I sync all repositories repomd files into to the database
    • As a user I browse a Distribution by category
    • As a user I search for Package of a Distribution in it's Repositories
    • As a user I extend the search to Package build on OBS for this Distribution

    This has a couple of pro's:

    • Less traffic on the OBS API as the usual Packages are inside the database
    • Easier base to add features to this page. Like comments, ratings, openSUSE specific screenshots etc.
    • Separating the Distribution package search from searching through OBS will hopefully make more clear for newbies that enabling extra repositories is kind of dangerous.

    And one con:

    • You can't search for packages build for foreign distributions with this app anymore (although we could consume their repomd etc. but I doubt we have the audience on an opensuse.org domain...)

    TODO

    • add-emoji Introduce a PG database
    • add-emoji Add clockworkd as scheduler and delayed_job as ActiveJob backend
    • add-emoji Introduce ActiveStorage
    • add-emoji Build initial data model
    • add-emoji Introduce repomd to database sync
      • add-emoji Adapt repomd sync to Leap 16.0 repomod layout changes (single arch, no update repo)
      • add-emoji Make repomd sync idempotent
    • add-emoji Introduce database search
    • add-emoji Setup foreman to run rails s and rake jobs:workoff
    • Adapt UI
      • add-emoji Build Category Browsing
      • add-emoji Build Admin Distribution CRUD interface