Comments (34)
Can you describe how you started the application? Which method and command line/configuration options if any?
from cakeshop.
Downloaded windows version to my Windows 10 home machine. Started for the first time waited a little then exited the app. Started the app again. Still no issues.
@rfikki Can you please provide full log as well the command you've started cakeshop with? Also, could you provide your version of java?
My steps were pretty simple
Downloaded war into directory where my user can execute files.
Ran java -jar cakeshop-0.9.0-x86_64-windows.war
from cakeshop.
Please paste the full console output as a gist and paste the link here. I think the root cause may lie elsewhere
from cakeshop.
So, steps to reproduce are I have a running completely synced latest version of geth 1.5.6 develop branch that I attach with.
I first run "java -jar cakeshop.war example" command to create the initial files as stated in your wiki. After the directory has been created I open the application.property file per your wiki and change the rpc port to 8545 and make all the stated needed changes per the wiki. The application starts up and I can visit the application at the localhost location in the browser. However browser application does not display any of the data except for the incoming block numbers. Looking at the terminal the error provided in the original post above repeats itself over and over again.
from cakeshop.
So by 'completely synced' do you mean against the public Ethereum chain? This isn't really a use case we've tested in a while as we primarily target the local development of smart contracts (i.e., develop the contract locally and then take it and deploy it on some other chain). That said, I'll give it a try and see if I can reproduce that error.
from cakeshop.
It is a running testnet ropsten geth that performs well with other smart contracts. Nothing wrong and it is fully synced when latest block is compared to etherscan.io, I run other smart contracts on it using truffle and know it is not a problem with my chain. Again as I have stated I am running your "java -jar cakeshop.war example" command. I then run "java --jar cakeshop which seems to find the running geth but outputs the error message as stated above. Java version is 8.
from cakeshop.
This is the command I use to start geth:
"C:\projects\ethereum_develop_ropsten\geth.exe" --testnet --networkid 3 --identity "GETH DEVELOP ROPSTEN" --datadir C:\projects\ethereum_develop_ropsten\testnet_data --fast --jspath "c:\projects\ethereum_develop_ropsten\javascript" --unlock "0, 1" --shh --rpc --rpcaddr=127.0.0.1 --rpcapi "eth,net,web3,shh" --ipcapi "admin,debug,eth,miner,net,personal,shh,txpool,web3" --rpcport=8545 --verbosity=3 --minerthreads "2" --rpccorsdomain="*" --solc "C:\projects\solc\solc.exe" console 2>> C:\projects\ethereum_develop_ropsten\GETH_DEVELOP_ROPSTEN_CONSOLE.log 2^&1
from cakeshop.
I'm concerned about this --rpcport=8545. Shouldn't it be --rpcport 8545? Can you verify that rpc is actually up and listening on port 8545. Also, please use all rpc api endpoints points, which are in application.properties. For instance I do not see admin endpoint in your geth startup command.
from cakeshop.
@rfikki I think changing your startup command to the following should fix it:
"C:\projects\ethereum_develop_ropsten\geth.exe" --testnet --networkid 3 --identity "GETH DEVELOP ROPSTEN" --datadir C:\projects\ethereum_develop_ropsten\testnet_data --fast --jspath "c:\projects\ethereum_develop_ropsten\javascript" --unlock "0, 1" --shh --rpc --rpcaddr=127.0.0.1 --rpcapi "admin,debug,eth,miner,net,personal,shh,txpool,web3" --ipcapi "admin,debug,eth,miner,net,personal,shh,txpool,web3" --rpcport=8545 --verbosity=3 --minerthreads "2" --rpccorsdomain="*" --solc "C:\projects\solc\solc.exe" console 2>> C:\projects\ethereum_develop_ropsten\GETH_DEVELOP_ROPSTEN_CONSOLE.log 2^&1
Note the updated list passed to --rpcapi
. I'll be updating the docs soon to clarify the settings we need enabled in geth for this scenario.
from cakeshop.
Thanks @chetan, will give that a shot.
from cakeshop.
I changed the --rpciapi flags as you have suggested to --rpcapi "admin,debug,eth,miner,net,personal,shh,txpool,web3" and got the following error, note I included a copy of application.properties at the end of the gist: https://gist.github.com/rfikki/b7f067b59d105a315ebb9efb5540c30b
from cakeshop.
In addition to the above gist I want to let you know that running java -jar cakeshop.war spawns a running node.js server that does not get terminated when you exit the cakeshop inside the terminal. I have to manually go to the running applications in windows and terminate it before I can restart cakeshop. Just wanted to let you know this.
from cakeshop.
Ok, looks like geth is returning that 403 Forbidden
when trying to call eth_sendTransaction
for some reason. Are you still trying to connect to the public testnet? Was there any error output in the window where you ran geth?
In general, I would suggest running on an offline/private chain instead. I'll have to try connecting to testnet and see if I can reproduce myself (@mikkazan also reported having some issues with testnet).
from cakeshop.
re: node process -could be an issue cleaning it up on Windows. I'll open a separate issue to track that. Thanks!
from cakeshop.
I am running the ropsten public ethereum testnet. and have no problem connecting to my running geth node with other applications.
from cakeshop.
I see no errors at all in the terminal for my running geth ropsten node. My geth node runs like a charm. The issue is with cakeshop.
from cakeshop.
I am a bit confused because when running geth --help these are the flags, they seem more limited then the flags you are using for --rpcapi.
API AND CONSOLE OPTIONS:
--rpc Enable the HTTP-RPC server
--rpcaddr value HTTP-RPC server listening interface (default: "localhost")
--rpcport value HTTP-RPC server listening port (default: 8545)
--rpcapi value API's offered over the HTTP-RPC interface (default: "eth,net,web3")
--ws Enable the WS-RPC server
--wsaddr value WS-RPC server listening interface (default: "localhost")
--wsport value WS-RPC server listening port (default: 8546)
--wsapi value API's offered over the WS-RPC interface (default: "eth,net,web3")
--wsorigins value Origins from which to accept websockets requests
--ipcdisable Disable the IPC-RPC server
--ipcapi value APIs offered over the IPC-RPC interface (default: "admin,debug,eth,miner,net,personal,shh,txpool,web3")
--ipcpath "geth.ipc" Filename for IPC socket/pipe within the datadir (explicit paths escape it)
--rpccorsdomain value Comma separated list of domains from which to accept cross origin requests (browser enforced)
--jspath loadScript JavaScript root path for loadScript (default: ".")
--exec value Execute JavaScript statement (only in combination with console/attach)
--preload value Comma separated list of JavaScript files to preload into the console
from cakeshop.
I guess you will update your docs to reflect that you cannot run --rpcapi with the default flags.
I do have one more question when I attach to my local running testnet with cakeshop, do I need to change the datadir flag to the location of my running geth's datadir inside the application.properties file?
from cakeshop.
I had this error, for me went away with
geth --datadir datadir --networkid 3 --rpc --rpcapi admin,db,eth,debug,miner,net,shh,txpool,personal,web3 --rpccorsdomain "*"
for connecting to Ropsten
from cakeshop.
Hey @ice09 what changes did you make to your applications.properties file? Can you share the settings?
from cakeshop.
Sure, but as I understand, these settings have no effect due to geth.auto.start=false
and the geth.url? This is quite confusing, because in the webapp, eg. the network-id is shown from the settings, but it is 3 for Ropsten in fact.
#Sun Dec 18 21:28:02 CET 2016
cakeshop.database.vendor=hsqldb
cakeshop.hibernate.hbm2ddl.auto=update
cakeshop.hibernate.jdbc.batch_size=20
cakeshop.jdbc.pass=sdk
cakeshop.jdbc.user=sdk
cakeshop.mvc.async.pool.queue.max=2000
cakeshop.mvc.async.pool.threads.core=250
cakeshop.mvc.async.pool.threads.max=1000
contract.poll.delay.millis=5000
contract.registry.addr=0x410b933e62e43e994030a776e49e06d74faded1f
endpoints.actuator.enabled=true
geth.auto.start=false
geth.auto.stop=false
geth.cors.enabled=true
geth.cors.url=
geth.datadir=/home/radgon/.ethereum
geth.db.enabled=true
geth.identity=radgon
geth.log=/logs
geth.mining=true
geth.networkid=1006
geth.node.port=30303
geth.params.extra=
geth.rpcapi.list=admin,db,eth,debug,miner,net,shh,txpool,personal,web3
geth.url=http://localhost:8545
geth.verbosity=
management.context-path=/manage
server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain
spring.main.banner-mode=off
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
from cakeshop.
You are on ubuntu? I am pretty sure this might be an issue with running on windows.
from cakeshop.
yes, Ubuntu 16.04 LTS
from cakeshop.
Ok, will give it a try in my 16.04 virtual machine when I get a chance.
from cakeshop.
ok, but as I said, I don't have this error anymore, with the settings I git rid of it, I am sure that it was due to some missing rpcapi params, that's why I posted it here.
from cakeshop.
sorry, now I get it, you wanted to reproduce without the error :)
I have a different error (#4), but not this one anymore. I am pretty sure that it was about the rpcapi params.
from cakeshop.
Okay, was able to get a bit further along by making a few adjustments. Cakeshop is now connecting to the local geth, but after a few seconds still crashes. At least I can see it creating the contracts and connecting to my local node running ropsten testnet now. Now to figure out what is causing it to crash here is the latest error:
c:\projects\cakeshop>java -jar cakeshop.war
Defaulting to spring profile: local
Extracting geth to C:\projects\cakeshop\data\geth
INFO 2016-12-19 15:17:37,390 [main] (StartupInfoLogger.java:48 ) Starting SpringBootApplication on ASUS with PID 16248 (started by Rocky in c:\projects\cakeshop)
INFO 2016-12-19 15:17:37,393 [main] (SpringApplication.java:670) The following profiles are active: container,spring-boot,local
WARN 2016-12-19 15:17:40,328 [main] (ConfigurationClassEnhancer.java:347) @bean method AppConfig.propertySourcesPlaceholderConfigurer is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @resource and @PostConstruct within the method's declaring @configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues; see @bean javadoc for complete details.
INFO 2016-12-19 15:22:21,748 [main] (AppConfig.java:144) eth.environment=StandardServletEnvironment {activeProfiles=[container, spring-boot, local], defaultProfiles=[default], propertySources=[servletConfigInitParams,servletContextInitParams,jndiProperties,systemProperties,systemEnvironment,random,applicationConfig: [classpath:/config/application-local.properties],applicationConfig: [classpath:/config/application.properties]]}
INFO 2016-12-19 15:22:21,749 [main] (AppConfig.java:145) eth.config.dir=C:\projects\cakeshop\data\local
Running pre-flight checks...
Testing ethereum data dir path
C:\projects\cakeshop\data\local\ethereum
OK
Testing db path
C:\projects\cakeshop\data\local\db
OK
Testing geth server binary
OK
Testing solc compiler binary
OK
ALL TESTS PASSED!
INFO 2016-12-19 15:22:32,568 [main] (BlockchainInitializerTask.java:144) Initializing empty blockchain
INFO 2016-12-19 15:22:32,569 [main] (BlockchainInitializerTask.java:148) Deploying ContractRegistry to chain
INFO 2016-12-19 15:23:20,157 [main] (BlockchainInitializerTask.java:156) Deploying sample contract (SimpleStorage) to chain
INFO 2016-12-19 15:23:24,135 [cake-1] (ContractRegistrationTask.java:69 ) Registering newly mined contract at address 0x54d8dde01c725eb72fe253dd0bf65c42b1cf67dd
INFO 2016-12-19 15:26:45,856 [main] (BlockchainInitializerTask.java:92 ) Storing existing wallet accounts
INFO 2016-12-19 15:26:47,532 [cake-2] (ContractRegistrationTask.java:69 ) Registering newly mined contract at address 0x5832317e28f6f28b9685ef09c0192366d6f427d2
,%%%%%%%%,
,%%/\%%%%/\%%
,%%%\c "" J/%%% ,,,,,,,
%. %%%%/ 6 6 \%%% |||||||
`%%. %%%% _ |%%% @@@@@@@@@@@
`%% `%%%%(__Y__)%%' {~*~*~*~*~}
// ;%%%%`\-/%%%' @@@@@@@@@@@@@@@@
(( / `%%%%%%%' {~* CAKESHOP *~}
\\ .' | { OPEN }
\\ / \ | | {~~*~~*~~*~~*~~}
\\/ ) | | @@@@@@@@@@@@@@@
\ /_ | |__ __) (__
(___________))))))) /_______\
CAKESHOP
version: 0.9.0
build id: 7e4942a7ba0b32c63e147031675d92434952ff5d
build date: 2016-12-13T15:11:21.169-0500
url: http://192.168.1.8:8080/cakeshop/
INFO 2016-12-19 15:26:58,048 [main] (StartupInfoLogger.java:57 ) Started SpringBootApplication in 561.402 seconds (JVM running for 566.089)
ERROR 2016-12-19 15:27:54,284 [BlockSaver-43] (SavingBlockListener.java:53 ) BlockSaverThread died
org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.cache.spi.RegionFactory]
at org.springframework.orm.hibernate5.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:541)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:427)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:276)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at com.jpmorgan.cakeshop.dao.BlockDAO$$EnhancerBySpringCGLIB$$480d1e3f.save()
at com.jpmorgan.cakeshop.db.SavingBlockListener.saveBlock(SavingBlockListener.java:109)
at com.jpmorgan.cakeshop.db.SavingBlockListener$BlockSaverThread.run(SavingBlockListener.java:48)
Caused by: org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.cache.spi.RegionFactory]
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:184)
at org.hibernate.cfg.Settings.getRegionFactory(Settings.java:300)
at org.hibernate.internal.SessionFactoryImpl$SessionBuilderImpl.openSession(SessionFactoryImpl.java:1322)
at org.hibernate.internal.SessionFactoryImpl.openSession(SessionFactoryImpl.java:672)
at org.springframework.orm.hibernate5.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:433)
... 9 more
from cakeshop.
@ice09 wrote:
Sure, but as I understand, these settings have no effect due to geth.auto.start=false and the geth.url? This is quite confusing, because in the webapp, eg. the network-id is shown from the settings, but it is 3 for Ropsten in fact.
It is indeed a bit confusing at present. Cakeshop was originally developed under the premise of using an internally bundled version of geth to make it easier for first-time developers to bootstrap the environment. The geth.auto.start/stop
settings were added as a sort of escape hatch for working with an "unmanaged" version of geth and thus the UI isn't entirely consistent when in this mode.
from cakeshop.
Ok, I have it running on Windows, but it is throwing a bunch of warnings in the terminal. At least I can check it out in the browser:
These are the warnings that keep repeating:
WARN 2016-12-19 15:38:15,274 [BlockSaver-42] (SavingBlockListener.java:118) Failed to load transaction details for tx
com.jpmorgan.cakeshop.error.APIException: Contract does not exist at 0xc47aa6c1987ec4737b40a327620c31fd1995602f
at com.jpmorgan.cakeshop.service.impl.ContractServiceImpl.get(ContractServiceImpl.java:228)
at sun.reflect.GeneratedMethodAccessor77.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.cache.interceptor.CacheInterceptor$1.invoke(CacheInterceptor.java:52)
at org.springframework.cache.interceptor.CacheAspectSupport.invokeOperation(CacheAspectSupport.java:320)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:353)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:302)
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:61)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
at com.sun.proxy.$Proxy98.get(Unknown Source)
at com.jpmorgan.cakeshop.service.impl.EventServiceImpl.processEvents(EventServiceImpl.java:86)
at com.jpmorgan.cakeshop.service.impl.TransactionServiceImpl.processTx(TransactionServiceImpl.java:137)
at com.jpmorgan.cakeshop.service.impl.TransactionServiceImpl.get(TransactionServiceImpl.java:202)
at com.jpmorgan.cakeshop.db.SavingBlockListener.saveBlock(SavingBlockListener.java:115)
at com.jpmorgan.cakeshop.db.SavingBlockListener$BlockSaverThread.run(SavingBlockListener.java:48)
from cakeshop.
I also see this error in the browser API documentation window inside cakeshop:
{"schemaValidationMessages":[{"level":"error","message":"Can't read from file http://192.168.1.8:8080/cakeshop/api/swagger.json"}]}
from cakeshop.
I also see this error in the browser API documentation window inside cakeshop:
{"schemaValidationMessages":[{"level":"error","message":"Can't read from file http://192.168.1.8:8080/cakeshop/api/swagger.json"}]}
This was fixed in #3
from cakeshop.
These are generated in the terminal window, is this normal output?
DEBUG 2016-12-19 16:00:10,595 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:00:20,597 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:00:40,609 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:01:15,628 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:01:25,636 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:01:40,642 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:02:30,671 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:02:40,676 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:03:05,693 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:03:55,722 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:04:10,727 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:04:30,736 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:04:40,745 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:04:45,746 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:05:25,771 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:06:00,803 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:06:05,789 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:06:35,811 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:06:40,810 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:06:50,814 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:07:04,505 /cakeshop/api/node/peers
DEBUG 2016-12-19 16:07:19,544 /cakeshop/api/node/peers
DEBUG 2016-12-19 16:07:24,558 /cakeshop/api/node/peers
DEBUG 2016-12-19 16:07:46,443 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:07:46,504 /cakeshop/ws/info
DEBUG 2016-12-19 16:07:46,512 /cakeshop/ws/543/rfnxdgpu/websocket
DEBUG 2016-12-19 16:07:46,678 /cakeshop/api/wallet/list
DEBUG 2016-12-19 16:07:47,265 /cakeshop/api/contract/compile
DEBUG 2016-12-19 16:07:50,848 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:07:58,912 /cakeshop/api/block/get
DEBUG 2016-12-19 16:07:59,650 /cakeshop/api/node/peers
DEBUG 2016-12-19 16:08:01,476 /cakeshop/api/block/get
DEBUG 2016-12-19 16:08:03,876 /cakeshop/api/block/get
DEBUG 2016-12-19 16:08:10,857 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:08:35,875 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:08:40,873 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:08:55,882 /cakeshop/api/contract/list
from cakeshop.
These are generated in the terminal window, is this normal output?
DEBUG 2016-12-19 16:00:10,595 /cakeshop/api/contract/list
DEBUG 2016-12-19 16:00:20,597 /cakeshop/api/contract/list
Yes, those are just 'access log' messages from the web server
from cakeshop.
@rfikki FYI, I just cut 0.9.1. Please give it a try and let me know how it goes. I also updated the configuration documentation at https://github.com/jpmorganchase/cakeshop/blob/master/docs/configuration.md
from cakeshop.
Related Issues (20)
- Create New Chain and Node Settings in multi-node environments
- Improve error dialogs everywhere
- Can cakeshop create a network like quorum maker? HOT 3
- Unable to load transaction HOT 11
- Customize cakeshop HOT 2
- Geth failed to start when using Docker image HOT 1
- Update default tessera partyinfo url and 7nodes.json file HOT 1
- Add support for adding raft learners HOT 1
- Cakeshop build - package javax.xml.bind does not exist HOT 4
- Unrecognized field "internal" (class com.jpmorgan.cakeshop.model.SolcResponse$GasEstimates)
- Cannot stop node in cakeshop-Manage Node module HOT 2
- Setting up Cakeshop for pre-existing Quorum network with Istanbul consensus HOT 12
- Feature Request: allow to send ETH to any ethereum address in Wallet window HOT 1
- webpack.js -p'
- webpack.js
- Cannot unlock account nor deploy contract registry; Getting no meaningful error message. HOT 2
- Sandbox attach to address only works with contracts deployed through cakeshop
- Pagination for listing permissioned accounts
- Cakeshop canβt connect node after node restart
- about Node Manager
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.
from cakeshop.