Coder Social home page Coder Social logo

leonardo's Introduction

Welcome to the Jolie open source project!

What's Jolie?

Jolie is a service-oriented programming language, designed to offer native abstractions for the development of microservices. See our website for more information and installation instructions.

Have you made something in or for Jolie? Please submit it to our awesome Jolie list!

Documentation ๐Ÿ“”

See https://docs.jolie-lang.org/ for documentation on how to program with Jolie.

For documentation on the interpreter, see https://github.com/jolie/jolie/wiki/Interpreter-documentation.

Roadmap ๐Ÿ“ˆ

You can check our roadmap to see what's staged for the next release.

Contributing ๐Ÿ’ป

Jolie is an open source project based on community effort. Contributions and constructive discussions are always welcome, and we encourage you to join us! There are many ways in which you can contribute, including coding, improving our documentation, helping out with newcomers, or even event organisation.

Interested in contributing? Please check our contribution and organisation guide.

All interactions regarding the Jolie open source project are expected to follow the code of conduct.

Our contributors ๐Ÿ‘

Thank you to all our contributors!

Code status ๐Ÿง

Language grade: Java Java CI

Get in touch ๐Ÿ‘‹

Discussions can take place over different media.

Discord

Join our Discord server

Join our Discord server.

leonardo's People

Contributors

fmontesi avatar mwallnoefer avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

leonardo's Issues

Connection close behaviour

I have tried to get the jo-demo-chuck example (https://github.com/fmontesi/jo-demo-chuck) running on Heroku. So far so good I nearly managed to get it working, but one showstopper remains to fix.

Heroku requires the port to be forwarded to Leonardo, which I managed on behalf of the CMD line in the Dockerfile:

CMD jolie -C DebugHttp=true -C Location_Leonardo=\"socket://localhost:$PORT/\" main.ol

Then Leonardo is listening correctly but it gets stuck on the first request. It was not that easy to figure out where the problem lied, finally I got around to it by exploiting nc:

CMD while true; do nc -v -l -p $PORT; done

So Heroku's HTTP dispatcher opens and closes client socket connections without sending ANY http content, and this happens even before the first ordinary request (leonardo.log). Exactly this constitutes a corner case where Jolie's Leonardo does not know how to deal with it, so it simply hangs around... ๐Ÿ˜ž

2020-09-27T18:42:00.366200+00:00 app[web.1]: listening on [::]:5015 ...
2020-09-27T18:42:00.534676+00:00 app[web.1]: connect to [::ffff:172.18.183.98]:5015 from 37dc1bf3-2e9a-4504-a08c-0ddd927b8098.int.dyno.rt.heroku.com:27766 ([::ffff:10.38.173.79]:27766)
^^^^^^^^^^^^
^^^^^^^^^^^^^^^^
2020-09-27T18:42:00.535432+00:00 app[web.1]: listening on [::]:5015 ...
2020-09-27T18:42:00.542188+00:00 app[web.1]: connect to [::ffff:172.18.183.98]:5015 from ip-172-18-183-97.eu-west-1.compute.internal:30545 ([::ffff:172.18.183.97]:30545)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

How could we fix that?

Standardisation of Leonardo

As it stands, right now every developer who wants to set up a website needs to fork Leonardo and hack the code to add her own services to it. Granted, this is very easy and that's why we could live with it until now. However, it generates a lot of code duplication: if we make an improvement to Leonardo, sometimes it has to be replicated manually to existing installations.

I would like Leonardo to be installable through JPM and call it a day, with the possibility of getting updates automatically. This means that we have to refactor all configuration outside of the main file leonardo.ol.

Ideally, the code of leonardo should be able to start and be left untouched by the custom configuration of each user. When we reach this, I would feel confident in releasing a "Leonardo v1.0".

I would start by making a list of what we think should be configurable in Leonardo. For example:

  • Virtual servers
  • Adding services through aggregation and redirection
  • Configuring cache policies
  • .. ?

The big question is how do we make all of this configurable without touching the main Jolie code in leonardo.ol. :-) Suggestions are welcome.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.