Base module definition for Abstractive
gems.
abstractive / ecell Goto Github PK
View Code? Open in Web Editor NEWLicense: Other
License: Other
Basic foundation for test-suite, focusing to start-with on base objects.
(checklist by benzrf)
Carrying on from #3, take the Admin
design to its logical conclusion, providing specialized "system administration" functionality:
Subject
Subject
Piece
required to have all Subject
instances present to comprise a fully capable mesh.Monitor
is the single-point of observation for an entire mesh, or mesh-partition.Right now, Designs list which Lines a Figure should initialize when it's started. It might be a good idea to replace that with plain calls to initialize_line
in a startup hook.
Not sure whether this is a good idea, but I think it's worth considering. It reduces complexity.
If follower_attach
is called with a piece that the leader thinks it's already attached to, it will refuse to try attaching again unless it can't ping the piece. At the same time, pieces that are noted as unresponsive aren't actually deleted from the list of attached pieces. Together, this means that when a service goes down and comes back up, its leader will think it's still attached, so it will refuse to attach again.
I'd like to eventually rework Designs to be declared using a method-based DSL instead of directly as data structures - this will make it both easier to document the options available in them, and make mistakes in their definitions result in errors instead of silently passing.
Should I put a license in the repo? If so, do you already have one in mind, or would LGPL 3 be OK?
I'm sorry I was unable to wait for explicit approval before posting the code @rjattrill, but I did not want to penalize @benzrf for my time constraints. The two areas I am drawing attention to are these:
But most of all this one file:
In fact on that last one, if not only we can have your clearance here in writing but also have the source code to that tester, that would be even better.
Please also note the citation format used:
https://github.com/celluloid/ecell#originators
And also the current License in effect:
Piece which behaves as Reel
http/s|ws/s server, solely:
Code to place in examples/multiple/*.rb
demonstrating a 3+
machine mesh, with 5+
pieces.
Complete GitHub Wiki or GitBook:
Right now it's just commented out. Is that because it's broken and I should fix it while migrating, or because it's abandoned and should be left out?
Should I split Coordinator
into Distribute
and Collect
, or should I keep those two pieces of functionality in one Face? Operative
has already been renamed to Process
; if I did the split, Distribute
would be the Face for pushing out tasks, and Collect
would be the face for collecting processed results.
I'm asking primarily about the split, not about the specific names for the split pieces.
In many cases, it's less than ideal to use ØMQ's synchronous sockets, but the communication being done is still in one-reply-to-one-request form. ECell's logic for handling these cases is spread out a bit through the code (mostly in Calling
, Management
, and line_handlers.rb
), and is the source of some failures to be DRY.
I think it'd be a good idea to write a new class (or maybe just add methods to Line) that abstract over this use case. Interface-wise, it'd provide a method which you call with the message to send that then synchronously returns the response, so that rep = line << req; rep = rep.wait
can be replaced with rep = something.the_method(req)
.
If done correctly, I think this rid of the need for the hardcoding in Constants::RETURNS
.
What should I do about the copyright notices?
They're in the following files:
lib/ecell/base/sketches/webstack/puma.rb
lib/ecell/base/sketches/webstack/web_server.rb
Is this something thats being developed?
Replace Stroke autoloading with something that works basically like Shape loading - you provide both a Line ID to supervise as, and a Stroke to instantiate.
Apart from reducing magic, this gets rid of the awkward necessity of having a bunch of identical Strokes with different names, and gets rid of the constraints on Line IDs.
Create a webstack-reel
Sketch alongside what we have now, which would become webstack-puma
or webstack-rack
or webstack-sinatra
or similar.
Designs should really be composable somehow.
Code to place in examples/single/*.rb
demonstrating a 1
machine mesh, with 5+
pieces.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.