gem-cms-fm's People
gem-cms-fm's Issues
Need to know the version of the FM that is running
Brief summary of issue
Currently, it's not possible to easily see the version of the jar file that is being used as the FM, which makes debugging difficult in the case that people upload different versions.
Types of issue
- Feature request (request for change which adds functionality)
Possible Solution
- Probably the simplest would be to add the git hash to the webpage, as I think HCAL have done in some way
Run keys
Brief summary of issue
Having run keys to select between different types of operational modes
Types of issue
- Feature request (request for change which adds functionality)
Current Behavior
Currently, a change in the configuration is necessary to change the run type, or TCDS key
Possible Solution (for bugs)
Nice to have this both in miniDAQ mode and standalone FM mode (or we just build our own miniDAQ like interface for the standalone FM to be used on teststands
- Dropdown menu for run type
- Scan mode (latency, threshold, s-curve...?)
- Normal mode
- Option for selecting between local+
lpm
and parasitic+cpm
- Option to select adding in
ferol
and readout resources
Always catch crashed applications
Brief summary of issue
FM was not able to reconfigure because xDAQ resources had crashed
Types of issue
- Bug report (report an issue with the code)
Expected Behavior
If a managed resource dies, the FM should know about it, and either put the resource into ERROR, and/or put itself into ERROR
Certain FM errors do *not* trigger the FM to error
Brief summary of issue
In certain cases (failure to send run number to GEMSupervisor
or tcds
applications) the FM will continue to Running
while the application it was trying to start will be in Running
without a valid run number (GEMSupervisor) or
Configured (
tcds` applications)
Types of issue
- Bug report (report an issue with the code)
Expected Behavior
- If an error occurs in the FM the FM should go to
Error
state - Child resources may be happy to continue as they may have defined default behaviour, but might also consider forcing the children back to the previous stable state
Current Behavior
This also indicates that the composite state vector in the FM is not actually working as it should
Screenshots
- In this case several things happened:
- The FM failed to send the
RunNumber
to theGEMSupervisor
, but theGEMSupervisor
is happy to utilize the default run number --- whether this is an acceptable behaviour or not can be discussed elsewhere - The commands to
tcds
failed due to a missing required parameter, i.e.,runNumber
, so they stayed inConfigured
- The result is that the FM went into
Running
- Issues:
- The FM state should be
Configured
orStarting
based on the composite states - The FM state should really be
Error
orFailed
because of the aforementioned failures
- The FM failed to send the
Parameters for Configure
Brief summary of issue
Summary of parameters needed by different applications during the Configure
command
GEM applications
- None
TCDS applications
ICIController
xsd:string xdaq:hardwareConfigurationString
xsd:string fedEnableMask
(optional)
PIController
xsd:string xdaq:hardwareConfigurationString
xsd:boolean xdaq:usePrimaryTCDS
xsd:string fedEnableMask
(optional)
LPMController
xsd:string xdaq:hardwareConfigurationString
xsd:string fedEnableMask
uFEDKIT applications
EVM
- None
BU
- None
FerolController
- None
Parameters for Stop/Disable
Brief summary of issue
Summary of parameters needed by different applications during the Stop
/Disable
(/Pause
) command
GEM applications
- None
TCDS applications
ICIController
- None
PIController
- None
LPMController
- None
uFEDKIT applications
EVM
- None
BU
- None
FerolController
- None
Send necessary parameters for any state transition
Brief summary of issue
Certain commands require that some parameters be sent
The way to do this in the rcms
world is through the usage of CommandParameter
objects
Types of issue
- Feature request (request for change which adds functionality)
Expected Behavior
Sending any command will result in the transition being interpreted.
Current Behavior
Sending, e.g., Configure
results in the following error message:
2017-08-18 12:02:11 and 288 ms : rcms.gem904.daq.rcms.fm.app.gemfm.GEMEventHandler
INFO Executing configureAction
2017-08-18 12:02:11 and 289 ms : rcms.gem904.daq.rcms.fm.app.gemfm.GEMEventHandler
ERROR configureAction: error reading command parameters of Configure command.
2017-08-18 12:02:11 and 331 ms : rcms.gem904.daq.rcms.fm.app.gemfm.GEMEventHandler
WARN class rcms.fm.app.gemfm.GEMFunctionManager: Failed to send error mesage configureAction: error reading command parameters of Configure command.
Your Environment
- Java version used:
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
TCDS applications left in "Enabled" after destroy
Brief summary of issue
Seems that the TCDS applications (iCI and PI controllers) can be left in enabled
state following GEM being taken out of global. Not sure what the sequence upstream was, but this should not be the case, as this will result in triggers continuing to flow and very likely result in TTS errors
Parameters for Start/Enable
Brief summary of issue
Summary of parameters needed by different applications during the Start
/Enable
(/Resume
) command
GEM applications
- None
TCDS applications
ICIController
xsd:unsignedInt runNumber
(not for resume)
PIController
xsd:unsignedInt runNumber
(not for resume)
LPMController
xsd:unsignedInt runNumber
(not for resume)
uFEDKIT applications
EVM
- None
BU
- None
FerolController
- None
Order of operations for state transitions
Brief summary of issue (work in progress...)
Certain applications require a proper sequence of operations
- GEM applications (
GEMSupervisor
/hardware managers/etc.) - TCDS applications (
LPMController
/ICIController
/PIController
) - uFEDKIT applications (
EVM
/BU/
FerolController`)
Initialize
Only GEM applications are currently set up to expect this, and at the moment the order doesn't matter, though a future could be envisioned where
GEMSupervisor
is firstAMC13Manager
is next (or)- in conjunction with the
AMCManager
OptoHybridManager
is next
Halt
/Stop
/Pause
These all can share a similar ordering, as when running, we want to stop the thing furthest from our system first, e.g., TCDS, then move closer
- TCDS should be
Halted
when GEM applications areInitialized
Configure
Need to configure TCDS first, to ensure that clocks are coming
Start
/Resume
/Enable
Start applications closest to our system first, and then move away, e.g., TCDS should be last to start
- For uFEDKIT operations, the
EVM
must be enabled before theBU
(but after anRU
andTA
, if present)
Reset
Probably quite similar to Halt
would be sufficient
Use the offical RCMS GitLab project and the supported gradle build system
Brief summary of issue
The newer version of RCMS
and the function managers are now being developed in the official RCMS GitLab project. Moreover, the build system moved from ant
(?) to gradle
with possibilities of continuous integration.
We should follow the changes to get full support and compatibility. The changes required for porting from ant
to gradle
are really small. We need to ask to get our own repository under cms-rcms/funcionmanagers
though. Who should we contact?
Types of issue
- Bug report (report an issue with the code)
- Feature request (request for change which adds functionality)
Expected Behavior
Be hosted on the central RCMS project and use a supported build system.
Current Behavior
Hosted on GitHub and use an unsupported build system.
Context (for feature requests)
Moving to the future (or the present :-)
[New feature] Implement special running state handling
Brief summary of issue
Need to implement RunningDegraded
and RunningSoftErrorDetected
states and actions associated (FixingSoftErrorDetected
)
Types of issue
- Feature request (request for change which adds functionality)
Expected Behavior
Trigger special run modes and forward actions back to the xdaq code.
Related to cms-gem-daq-project/cmsgemos#193
Masking resources
Brief summary of issue
When the GEMSupervisor
application is managing the GEM resources, the FM should not send any state transition messages to them.
Types of issue
- Bug report (report an issue with the code)
Expected Behavior
When sending any state transition command, the GEMSupervisor
should be the one sending the command to the managed applications.
Current Behavior
Managed applications are receiving state transition commands twice, resulting in errors
Possible Solution (for bugs)
Utilize the application masking features of rcms
to mask and ignore these applications
- Can do this only when we find a
GEMSupervisor
in the config - Can have a list of such applications that will be ignored/masked
Problem starting GEM FM
cDAQ had a problem starting the GEM FM
It looks like something crashed during the standard process:
WARN [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): Received an unexpected StateNotification while taskSequence is nullStateUpdate
Destination = null
Identifier = http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=254
fromState = null
reason = GEM global state changed: (gem::hw::glib::GLIBManager:0) : GEMFSMApplication::halt Firing 'IsHalted' into the FSM (gem::hw::optohybrid::OptoHybridManager:0) : GEMFSMApplication::halt Firing 'IsHalted' into the FSM (gem::hw::amc13::AMC13Manager:3) : GEMFSMApplication::halt Firing 'IsHalted' into the FSM (tcds::ici::ICIController:0) : (tcds::pi::PIController:0) :
toState = Halted
2018-05-20 07:58:07 and 919 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM] GEMFunctionManager::getConfSequence(): got fedMask 1467&3% from the supervisor
2018-05-20 07:58:07 and 920 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM] GEMFunctionManager::getConfSequence(): sending FEDEnableMask to the supervisor
2018-05-20 07:58:07 and 966 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM] GEMFunctionManager::getConfSequence(): sent FEDEnableMask to the supervisor
2018-05-20 07:58:07 and 966 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM] GEMFunctionManager::getConfSequence(): returning confTaskSeq
2018-05-20 07:58:07 and 966 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::executeTaskSequence(): Starting execution of TaskSequence: 1.0
2018-05-20 07:58:08 and 14 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::executeTaskSequence(): After m_taskSequence.startExecution(): 0.0
2018-05-20 07:58:08 and 14 ms : cms.gempro.rcms.fm.app.gemfm.GEMEventHandler
INFO configureAction Executed
2018-05-20 07:58:31 and 883 ms : cms.gempro.rcms.fm.app.gemfm.GEMEventHandler
INFO [GEM FM::GEMFM_global_cc7] GEMEventHandler::configureAction(): Received Configure state notification
2018-05-20 07:58:31 and 884 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): current state is: Configuring, processing state notification: rcms.stateFormat.StateNotification@465d9a39, taskSequence: rcms.utilities.fm.task.TaskSequence@2fb25e4f, activeTask: null
2018-05-20 07:58:31 and 884 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): rcms.stateFormat.StateNotification@465d9a39
2018-05-20 07:58:31 and 884 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): Unknown signal 139
2018-05-20 07:58:31 and 884 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): Unknown signal 139
2018-05-20 07:58:31 and 885 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
WARN [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): TaskSequence is empty, tasks may have completed
2018-05-20 07:58:31 and 885 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::completeTransition(): Fire TaskSequence::getCompletionEvent SetConfigured
2018-05-20 07:58:31 and 885 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): current state is: Configuring, processing state notification: rcms.stateFormat.StateNotification@465d9a39, taskSequence: null, activeTask: null
2018-05-20 07:58:31 and 885 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): rcms.stateFormat.StateNotification@465d9a39
2018-05-20 07:58:31 and 885 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): Unknown signal 139
2018-05-20 07:58:31 and 885 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): Unknown signal 139
2018-05-20 07:58:31 and 885 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
WARN [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::processNotice(): Received an unexpected StateNotification while taskSequence is nullStateUpdate
Destination = null
Identifier = http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=0
fromState = null
reason = Unknown signal 139
toState = Crashed
2018-05-20 08:06:45 and 569 ms : cms.gempro.rcms.fm.app.gemfm.GEMEventHandler
INFO Executing startAction
2018-05-20 08:06:45 and 570 ms : cms.gempro.rcms.fm.app.gemfm.GEMEventHandler
INFO [GEM FM::GEMFM_global_cc7] GEMEventHandler::startAction(): getting the run number
2018-05-20 08:06:45 and 570 ms : cms.gempro.rcms.fm.app.gemfm.GEMEventHandler
INFO [GEM FM::GEMFM_global_cc7] GEMEventHandler::startAction(): updating the the started-with run number
2018-05-20 08:06:45 and 570 ms : cms.gempro.rcms.fm.app.gemfm.GEMEventHandler
INFO [GEM FM::GEMFM_global_cc7] GEMEventHandler::startAction(): updating the run number
2018-05-20 08:06:45 and 570 ms : cms.gempro.rcms.fm.app.gemfm.GEMEventHandler
INFO [GEM FM::GEMFM_global_cc7] GEMEventHandler::startAction(): runNumber is 316610
2018-05-20 08:06:45 and 588 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
ERROR [GEM FM] GEMFunctionManager::getStartSequence(): Error! XDAQException when trying to send the FEDEnableMask to the GEM supervisor
2018-05-20 08:06:45 and 619 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM] GEMFunctionManager::getStartSequence(): returning startTaskSeq
2018-05-20 08:06:45 and 619 ms : cms.gempro.rcms.fm.app.gemfm.GEMStateNotificationHandler
INFO [GEM FM::GEMFM_global_cc7] GEMStateNotificationHandler::executeTaskSequence(): Starting execution of TaskSequence: 1.0
2018-05-20 08:06:45 and 628 ms : cms.gempro.rcms.fm.resource.QualifiedResourceContainer
ERROR Start failed for URL = http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=254Caught: Error sending command Start to http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=254
2018-05-20 08:06:45 and 644 ms : cms.gempro.rcms.utilities.fm.task.SimpleTask
ERROR Task: Startsend to rcms.fm.resource.qualifiedresource.XdaqApplicationContainer failed.
2018-05-20 08:11:25 and 889 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM::GEMFM_global_cc7] GEMFunctionManager::destroyXDAQ(): destroyXDAQ called
2018-05-20 08:11:25 and 889 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM::GEMFM_global_cc7] GEMFunctionManager::destroyXDAQ(): killing all other executives(1) in the QualifiedGroup
2018-05-20 08:11:25 and 890 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM::GEMFM_global_cc7] GEMFunctionManager::destroyXDAQ(): killing executive Executive_0
2018-05-20 08:11:25 and 890 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM::GEMFM_global_cc7] GEMFunctionManager::destroyXDAQ(): , executive URIhttp://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=0, executive initialized: true
2018-05-20 08:11:25 and 890 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM::GEMFM_global_cc7] GEMFunctionManager::destroyXDAQ(): killing executive Executive_0
2018-05-20 08:11:25 and 942 ms : cms.gempro.rcms.fm.resource.qualifiedresource.JobControl
INFO Time for calling killJID method on http://gemvm-daqcc7.cms:39999/urn:xdaq-application:lid=10 JID=http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=0: 50 ms.
2018-05-20 08:11:25 and 942 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM::GEMFM_global_cc7] GEMFunctionManager::destroyXDAQ(): done killing executives
2018-05-20 08:11:25 and 942 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM::GEMFM_global_cc7] GEMFunctionManager::destroyXDAQ(): resetting the QualifiedGroup
2018-05-20 08:11:25 and 942 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM::GEMFM_global_cc7] GEMFunctionManager::destroyXDAQ(): done!
2018-05-20 08:11:25 and 942 ms : cms.gempro.rcms.fm.app.gemfm.GEMFunctionManager
INFO [GEM FM::GEMFM_global_cc7] GEMFunctionManager::destroyAction(): destroying the Qualified Group
2018-05-20 08:11:25 and 942 ms : cms.gempro.rcms.fm.resource.QualifiedGroup
INFO http://cmsrc-gem.cms:20000/urn:rcms-fm:fullpath=/gempro/PrivateGlobal/GEM/GEMFM_global_cc7,group=GEMFM_global_cc7,owner=gempro REPORT Destroy level: 3
Time passed: 0ms
Running : http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=30
Running : http://tcds-control-csc-pri.cms:2104/urn:xdaq-application:lid=503
Running : http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=255
Running : http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=254
Running : http://tcds-control-csc-pri.cms:2104/urn:xdaq-application:lid=303
Running : http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=50
Summary: running=6, done=0
2018-05-20 08:11:25 and 943 ms : cms.gempro.rcms.fm.resource.qualifiedresource.XdaqApplication
INFO renewalTimer=null
2018-05-20 08:11:25 and 943 ms : cms.gempro.rcms.fm.resource.qualifiedresource.XdaqApplication
INFO renewalTimer=null
2018-05-20 08:11:25 and 943 ms : cms.gempro.rcms.fm.resource.qualifiedresource.XdaqApplication
INFO XdaqServiceApp http://tcds-control-csc-pri.cms:2104/urn:xdaq-application:lid=303 is being destroyed. Going to send it a Halt with empty rcmsURL (regardless of its state).
2018-05-20 08:11:25 and 943 ms : cms.gempro.rcms.fm.resource.qualifiedresource.XdaqApplication
INFO XdaqServiceApp http://tcds-control-csc-pri.cms:2104/urn:xdaq-application:lid=503 is being destroyed. Going to send it a Halt with empty rcmsURL (regardless of its state).
2018-05-20 08:11:25 and 964 ms : cms.gempro.rcms.fm.resource.qualifiedresource.XdaqApplication
WARN Failed to remove routing table entry for service application http://tcds-control-csc-pri.cms:2104/urn:xdaq-application:lid=503: No entry found.
2018-05-20 08:11:25 and 972 ms : cms.gempro.rcms.fm.resource.qualifiedresource.XdaqApplication
WARN Failed to remove routing table entry for service application http://tcds-control-csc-pri.cms:2104/urn:xdaq-application:lid=303: No entry found.
2018-05-20 08:11:25 and 973 ms : cms.gempro.rcms.fm.resource.QualifiedGroup
INFO http://cmsrc-gem.cms:20000/urn:rcms-fm:fullpath=/gempro/PrivateGlobal/GEM/GEMFM_global_cc7,group=GEMFM_global_cc7,owner=gempro REPORT Destroy level: 3
Time passed: 31ms
Done : http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=30
Done : http://tcds-control-csc-pri.cms:2104/urn:xdaq-application:lid=503
Done : http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=255
Done : http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=254
Done : http://tcds-control-csc-pri.cms:2104/urn:xdaq-application:lid=303
Done : http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=50
Summary: running=0, done=6
2018-05-20 08:11:25 and 973 ms : cms.gempro.rcms.fm.resource.QualifiedGroup
INFO http://cmsrc-gem.cms:20000/urn:rcms-fm:fullpath=/gempro/PrivateGlobal/GEM/GEMFM_global_cc7,group=GEMFM_global_cc7,owner=gempro REPORT Destroy level: 2
Time passed: 0ms
Running : http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=0
Summary: running=1, done=0
2018-05-20 08:11:25 and 973 ms : cms.gempro.rcms.fm.resource.QualifiedGroup
INFO http://cmsrc-gem.cms:20000/urn:rcms-fm:fullpath=/gempro/PrivateGlobal/GEM/GEMFM_global_cc7,group=GEMFM_global_cc7,owner=gempro REPORT Destroy level: 2
Time passed: 0ms
Done : http://gemvm-daqcc7.cms:40100/urn:xdaq-application:lid=0
Summary: running=0, done=1
2018-05-20 08:11:25 and 973 ms : cms.gempro.rcms.fm.resource.QualifiedGroup
INFO http://cmsrc-gem.cms:20000/urn:rcms-fm:fullpath=/gempro/PrivateGlobal/GEM/GEMFM_global_cc7,group=GEMFM_global_cc7,owner=gempro REPORT Destroy level: 0
Time passed: 0ms
Running : http://gemvm-daqcc7.cms:39999/urn:xdaq-application:lid=10
Summary: running=1, done=0
2018-05-20 08:11:25 and 973 ms : cms.gempro.rcms.fm.resource.QualifiedGroup
INFO http://cmsrc-gem.cms
Need to understand:
- What happened
- How to alarm on it
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.