Tag Archives: github

Rather to my surprise, I am currently spending more of my development time in Visual Studio Code than in Visual Studio. There are a few reasons:

– I am working on a Java project and chose to use VS Code in part as a learning exercise

– I have a PHP website and have worked out a nice debugging environment using VS Code and WSL (Windows Subsystem for Linux)

– I am finding VS Code handy as a general-purpose editor

How about source control though? I guess as you would expect from Microsoft (which now owns GitHub) the git support is built in. So this is how I moved my PHP website, which was not under source control, to a private GitHub repository:

1. In VS Code, open the workspace and press Ctrl-Shift-G or click the Source control icon. Click the repository icon for Initialize Repository:

Then select your workspace from the dropdown and the local repository is created.

Initially all your files are in an unstaged state. Staging in git is where you define which changes will be committed in your next commit. We want to commit everything to form the initial repo, so drop down the git menu (three dots to the right of the source control pane) and choose Commit all, click Yes.

Type a commit message and go.

Now go to GitHub and create a new repository.

This is a private repository as nobody else needs to see the code for my website.

The repository is created, and right there on the default help page is the command for pushing your existing repo to GitHub.

Just open a terminal and paste the command:

git remote add origin https://github.com/[your repo name]

git push -u origin master

After the second command you will be prompted to login to GitHub. This creates an access token.

Done! If you go back to the repo on GitHub you will find it populated with your files.

A similar workflow applies if you use Azure DevOps. The choice is yours; the features of the two services are different but if all you want is source code management GitHub seems the obvious choice.

When I was looking for an online code repository some years back, I picked Visual Studio Online (now called Azure DevOps) over GitHub. The main reason was the ability to host private repositories with a free account. The projects I work on typically only have one or two developers.

Microsoft acquired GitHub last year and has now announced free private repositories on GitHub – provided you have no more than three collaborators. You can see all the plans here.

There is still a bias towards open source, in that open source developers can use the Team plan for free. This is essential for GitHub to fulfil its role as the home of many widely used open source projects.

The addition of free private repositories is significant though. There are plenty of developers like myself who will now look again at hosting code on GitHub.

What is Microsoft’s strategy? There seem to me two important reasons why Microsoft acquired GitHub. One was as a defensive measure. Microsoft now has a ton of open source projects that are critical to its platform, things like .NET Core and now most of the .NET frameworks as well. It would have been uncomfortable if a rival like Google had acquired GitHub.

The second is to promote Azure. GitHub’s infrastructure will no doubt move to Azure, and all going well the service will promote Azure both as an example of a successful at-scale service, and by little ads and signposts that Microsoft can include. The developer audience is influential when it comes to platform choices.

Microsoft therefore does not need GitHub to be profitable, which is just as well having now removed one of the main incentives to get a paid account.

I will be interested to see how the company moves to further integrate GitHub and Azure DevOps. There is currently quite a lot of overlap and it would make sense to streamline the offerings to share the same back-end technology, or even to fold Azure DevOps services into GitHub.

There is no hurry. Microsoft’s priority will be to keep existing GitHub developers happy and to convince them that the acquisition will do no harm.

Microsoft has announced an agreement to acquire GitHub for $7.5 billion (in Microsoft stock). Nat Friedman, formerly CEO of Xamarin, will become GitHub’s CEO, and GitHub will continue to run somewhat independently. A few comments.

Background: GitHub is a cloud-based source code repository based on Git, a distributed version control system created by Linus Torvalds. It is free to use for public, open source projects but charges a fee (from 7$ to $21 per user per month) for private repositories.

First, why? This one is easy. Microsoft is a big customer of GitHub. Microsoft used to have its own hosting service for open source software called CodePlex but abandoned it in favour of GitHub, formally closing CodePlex in March 2017:

Over the years, we’ve seen a lot of amazing options come and go but at this point, GitHub is the de facto place for open source sharing and most open source projects have migrated there. We migrated too.

said Brian Harry.

Microsoft also uses GitHub for its documentation, and this has turned out to be a big improvement on its old documentation sites.

Note also that Microsoft has many important open source projects of its own, including much of its developer platform (.NET Core, ASP.NET Core and Entity Framework Core). Many of its projects are overseen by the .NET Foundation. Other notable open source, Github-hosted projects include Visual Studio Code, a programmer’s editor that has won many friends, and TypeScript, a typed superset of JavaScript that compiles to standard JavaScript code.

When big companies become highly dependent on the services of another company they may become anxious about it. What if the other company were taken over by a competitor? What if it were to run into trouble, or to change in ways that cause problems? Acquisition is an easy solution.

In the case of GitHub, there was reason to be anxious since it appears not to be profitable – unsurprising given the large number of free accounts.

Second, Microsoft is always pitching to developers, trying to attract them to its platform and especially Azure services. It has a difficult task because it is the Windows company and the Windows platform overall is in decline, versus Linux on servers and Android/iOS on mobile. Therefore it is striving to become a cross-platform company, and with considerable success. I discuss this at some length in this piece. Note that there is a huge amount of Linux on Azure, including “more than 40%” of the virtual machines. More than 50%? Maybe.

If Microsoft can keep GitHub working as well as before, or even improve it, it will do a lot to win the confidence of developers who are currently outside the Microsoft platform ecosystem.

Will GitHub get worse?

The tricky question: under Microsoft, will GitHub get worse? The company’s track record with acquisitions is spotty, ranging from utter disasters (Nokia, Danger) to doubtful (Skype), to moderately successful so far (LinkedIn, Xamarin).

Under the current leadership, I doubt anything bad will happen to GitHub. I’d guess it will migrate some infrastructure to Azure (GitHub runs mainly from its own datacentres as I understand it) but there is no need to re-engineer the platform to run on Windows.

Some businesses will be uncomfortable hosting their valuable source code with Microsoft. That is understandable, in the same way that I hear of retailers reluctant to use Amazon Web Services (since it is a platform owned by a competitor), but it is a low risk. Others have long-standing mistrust of Microsoft and will want to migrate away from GitHub because of this.

Personally I think it is right to be wary of any giant global corporation, and dislike the huge and weakly regulated influence they have on our lives. I doubt that Microsoft is any worse than its peers in terms of trustworthiness but of course this is open to debate.

Another point: with this acquisition, free GitHub hosting for open source projects will be likely to continue. The press release says:

GitHub will retain its developer-first ethos and will operate independently to provide an open platform for all developers in all industries. Developers will continue to be able to use the programming languages, tools and operating systems of their choice for their projects — and will still be able to deploy their code to any operating system, any cloud and any device.

It is of course in Microsoft’s interests to make this work and the success of Visual Studio Code and TypeScript (which also come from the developer side of the company) shows that it can make cross-platform projects work. So I am optimistic that GitHub will be OK.

Update: I’ve noticed Sam Newman and Martin Fowler taking this view, a good sign from a people I respect and who are by no means from the usual Microsoft crowd.

I’ve been at GitHub Universe in San Francisco for the last few days. Around 1500 developers (not sure if that figure includes staff and exhibitors) in a warehouse at Pier 70. The venue was beautifully converted into an interaction space. Here is the view from outside as we were leaving; Octocat seems to be waving goodbye:

The main stage done up like a spaceship:

There was a large area for mingling, overseen by Octocat:

Plenty of space outside too, with a high standard of food and drink on offer.

There was also a “send a postcard” area where you could write a card; with cards, pens, stamps and postbox supplied there was no excuse not to do so:

You are probably thinking, when do we get to the techie stuff; but in some ways it is better to look at the space GitHub created and ask what it tells you about the company.

Running an event like this is not cheap, and I think we can conclude that GitHub has a business model that works. Further, there was a generous and inclusive spirit to the event which was good to experience. Kimberly Bryant from Black Girls Code spoke at the opening keynote – the event concert was a Black Girls Code benefit – and while there is often an element of PR in the causes which businesses choose to sponsor, I don’t question the authenticity of GitHub’s efforts to promote both coding and diversity in our sadly imbalanced software industry.

In some ways then the actual technical content was not the most important thing about this event. That said, there was some excellent content on themes including how GitHub scales its own service, new project management and code review features in GitHub, and how the product is evolving its add-in or “integrations” platform.

I also learned a bit about Electron, a framework for “creating native Desktop applications with web technologies” based on Chromium and Node.js. Microsoft’s Visual Studio Code uses Electron, as does GitHub’s own Atom editor.

If you are developer, you will be familiar with GitHub; it is the obvious choice for hosting an open source project (free) and a popular option for private repositories. When Google Code closed in 2015, the announcement cited the migration of developers to GitHub as the key reason and acknowledge that it was among “a wide variety of better hosting services” than Google’s own. “To meet developers where they are, we ourselves migrated nearly a thousand of our own open source projects from Google Code to GitHub,” remarked Google’s Chris DiBona. That was a pivotal moment, showing how GitHub has become a core part of the open source ecosystem as well as a strong commercial product for private and enterprise repositories.

GitHub does seem to take its responsibilities seriously and the fact that is has found a successful balance between free and commercial services is something to be thankful for.

I attend numerous technical events, most of which are vendor-specific. There is nothing wrong with vendor-specific events. If you want to explore what is on offer from that vendor and quiz their people, they are ideal. You will be aware though that they are promotional events and give you a skewed view of the world, for which you need to make allowance.

Therefore I particularly value events which are not vendor-specific. They may still offer a skewed view of the world, but at least it is vendor-neutral. Redmonk’s Monki Gras is one such, managed by analyst company RedMonk, in particular by its co-founder James Governor.

The event is small, with around 200 attendees, with a bias towards software developers. Seeing the picture above you will observe that it is not entirely vendor-neutral, in that it is sponsored by companies including Amazon, Adobe, twilio, Red Hat, Citrix, SAP and Heroku. Multi-vendor then, rather than vendor-neutral? Arguable, but there was little patience for product pitches and the event was one which was able to hear Basho’sShanley Kane telling us to discard all our tools (a move unlikely to please vendors), so on a scale where zero is pure marketing fluff and ten searing honesty, I would award it at least an eight.

The Monki Gras is not just about technology. It is also about craft beer. This its second year, and there was even more beer content this time around. Possibly (said sotto voce) more than you might prefer if you have only a passing interest in the subject; but if so, perhaps this was not the right event for you.

Why the beer? Because developers like it. Because it is a craft that does not scale easily. Because it is characterful, flavoursome and distinctive, and individual examples aspire to excellence, all qualities that I suspect Redmonk value.

The combination of Redmonk values, generous sponsors and small size make this an event with exceptional catering. Not only craft beer, but also fresh fruit, Sushi, fresh ground coffee prepared by a skilled barista, and at the evening event, a breathtakingly good selection of cheeses of which I got to taste only a few slivers because my hotel arrangements required an early departure.

One of the ironies of the Monki Gras is that this kind of excellence does not scale well, with long queues for coffee and lunch, and on the Thursday evening one of the slowest meals I have attended. I left after three hours by which time it had reached the third course, but missed dessert and cheese. Good things take time and I guess this is all part of the Monki Gras experience.

What about the technical content? Technical may be the wrong word; and the published agenda is only an approximate guide. A Twitter search is one way to discover what was said; or you can check my tweets for those days; despite poor wifi there were enough smart gadgets that plenty of tweets got through. The focus was on the human aspect of software development, summed up for me by Cyndi Mitchell of Logspace and Thoughtworks, who said:

Here are some other highlights, not comprehensive, but some of the things which caught my attention.

Rafe Colburn from Etsy who observed that to improve the craft of software development, you need to make time available by automating whatever you can.

Craig Kersteins and Matt Thompson from Heroku talked about developer productivity, with the startling statistic (I have no idea how they get these figures) that 76% of the worst-performing engineers suffer frequent interruptions. Software development needs focus; they suggested 4 hours of continuous uninterrupted work each day. At Heroku they use headphones as a “do not disturb” sign and respect that.

That risks the opposite danger, lack of communication. Hence another Heroku strategy is to give staff free lunch with long tables, to promote communication, and slow coffee machines that make a jug at a time, to promote sharing and collaboration.

Mazz Mosley and Nick Stenning from the Government Digital Service – which is transforming UK government IT from the inside, with generous use of open source and common sense – spoke on not recruiting developer rock stars, who create a single point of failure in your team. Rather, they aim to nurture collective intelligence.

This talk went down well at the Monki Gras, but while the thought makes sense, it intrigues me. Could the same person who becomes a “rock star” in one team be part of “collective intelligence” in another? Is not this more about how you manage your team, than how you recruit? And could a key leader that creates such a team be a bit of a rock star for doing so?

Phil Gilbert from IBM spoke about transforming IBM’s software products with design and rationalisation. The slide that has stayed with me showed how 20+ products in the areas of business process management were consolidated into two or three.

Chris Thorpe from Boffin talked about steam engines and 3D printing. Using 3D printing, steam engines can be repaired, while in another context model railway enthusiasts can get models in whatever size they want.

Steve Citron-Pousty from Red Hat gave us a sideways look at technology by talking about ecosystems. How do you nurture a vibrant ecosystem as opposed to one in which just a few creatures dominate? The answer is about monitoring, measuring, and testing hypotheses.

Ted Nyman at GitHub gave a memorable talk on being happy at work. His answer: no managers.

He described how GitHub is managed: nobody reports to anyone else, decisions are made by consensus, teams form naturally, nobody is forced to do anything, but individuals are highly motivated because they have authenticity and autonomy. Employees are happy and nobody ever quits. “Developers are awkward people, accept awkwardness,” he added.

This was another thought-provoking talk. How much of GitHub’s management model would translate or scale to other businesses? Does it depend on having smart, highly motivated team members? Will it work for ever, or end in disaster? Is Nyman’s description accurate, or are there disguised channels of authority which he did not articulate?

Day two, Friday, opened strongly. I have already mentioned Shanley Kane’s talk. She addressed the problem of dishonesty in software development, explaining that software roadmaps which show features on a timeline are inherently dishonest and cause erosion of trust. Developers have a responsibility to explain to others in the business that development does not work like that. Her suggested alternative is some sort of interactive document covering “what we’re working on”.

Cyndi Mitchell, also mentioned above, talked about excellence in software development. This is not just about technically sound code, but is multi-faceted, including business value, customer value, user experience, delivery and operations as well. It was another take on a common theme in Agile: the team is everyone, not just the developers.

Chris Aniszczyk from Twitter spoke about open source software. Twitter always evaluates open source options before risking wheel reinvention by cutting new code. He also advocates always writing code on the assumption that it will one day be open source. This promotes high quality APIs, sensible naming conventions, and other good things. Twitter aims to give code that is not its “secret sauce” back to the community, he said. However, Twitter avoids code with viral open source licenses like the GPL; it causes too many problems, he said.

An intriguing aside; Aniszczyk says that Twitter acquires companies to get the people, since “you can’t hire engineers these days.” This may create an open source project, as the code that company was working on is given away/abandoned to the community. I am not sure what examples of this process there are.

After that, there was lunch, more beer, brewers spoke, and a wood carver competed with a 3D printer to make a spoon; I’ve written about this here.

Lee Bofkin from Global Street Art spoke about street art. Where we see a wall or an alley, he said, a street artist sees a place that can be transformed with art. His slides were wonderful; check the Global Street Art site for a flavour.

There is no event quite like the Monki Gras; it was not deeply technical but was rich in ideas. Plenty to reflect on.

I attended The Monki Gras in London yesterday, a distinctive developer event arranged by the analyst firm RedMonk.

This was not only a developer event, with the likes of Andre Charland and Dave Johnson from the PhoneGap team at Adobe, Mike Milinkovich the executive director of the Eclipse Foundation, and Jason Hoffman with Bryan Cantrill from cloud services (and Node.js sponsors) Joyent. It was also a serious beer event, complete with a range of craft beers, a beer tasting competition with nine brews to try, and a talk plus a free book from beer expert Melissa Cole. An unusual blend of flavours.

In charge of the proceedings was RedMonk co-founder and all round impressario James Governor. I am a big fan of RedMonk and its developer-focused approach; it has been a fresh and heady brew in the dry world of IT analysts.

The Monki Gras did seem like an attempt by a regular IT conference sufferer to fix problems often encountered. The Wi-Fi worked, the food was fresh, unusual and delicious, the coffee was superb; though brewing good coffee takes time so the queues were long. Not everything scales. Fortunately this was a small event, and a rare treat for the couple of hundred or so who attended.

That said, there were frustrations. The sessions were short, which in general is a good thing, but left me wanting more depth and more details in some cases; we did not learn much about PhoneGap other than a brief overview, for example.

Nevertheless there was serious content. Redmonk’s Stephen O’Grady made the point succinctly: IT decision makers are ignorant about what developers actually use and what they want to use, which is one reason why there is so much dysfunction in this industry. Part of the answer is to pay more attention, and several sessions covered different aspects of analytics: Matt LeMay from bitly on what users click on the Web; Matt Biddulph (ex BBC, Dopplr, Nokia) gave a mind-stretching talk on social network analysis which, contrary to what some think, was not invented by Facebook but predates the Internet; and O’Grady shared some insights from developer analytics at RedMonk.

I had not noticed before that github now gets nearly double the number of commits than does Google Code. That is partly because developers like git, but may also say something about Google’s loss of kudos in the open source developer community.

Kohsuke Kawaguchi, lead for Jenkins Continuous Integration and an architect at CloudBees, spoke on building a developer community. His context was how Jenkins attracted developers, but his main point has almost limitless application: “Make everything easy, relentlessly.”

Something I see frequently is how big companies (the bigger the worse) place obstacles in front of developers or users who have an interest in their products or services. Examples are enforced registration, multiple clicks through several complex pages to get to the download you want, complex installs, and confusing information. It all adds friction. If the target is sufficiently compelling, like apps on Apple’s app store, developers will get there anyway; but it all adds friction, and if you are not Apple that can be fatal.

The Joyent guys did not speak about Node.js, sadly, but rather on the distinction between a VP of engineering and a Chief Technology Officer. Sounds dry and abstruse? I thought so too, but the delivery was so energetic that they were soon forgiven. Hoffman and Cantrill moved on to talk about management antipatterns in the software industry, prompting many wry nods of recognition from the audience. “It is very hard for middle management to add value,” said Cantrill.

Milinkovich made the point that the most valued open source projects generally make their way to a software foundation; PhoneGap to Apache is a recent example. He then gave the talk he really wanted to give, noting that as new software stacks emerge they have a tendency to re-implement CORBA, a middleware specification from the Nineties that tackled problems including remote objects, language independence, and transactions across the Internet. CORBA is remembered for drowning in complexity, but Milinkovich’s point is that the creators of exciting new stacks like Node.js should at least research and learn from past experience.

Milinkovich also found time to proclaim that “Flash is dead, Silverlight is dead, browser plugins are dead.” Perhaps premature; but I did not hear many dissenting voices.

I tweeted the conference extensively yesterday (losing at least one follower but gaining several more). Look out also for a couple of follow-up posts on topics of particular importance.

I cloned a github repository today, and while browsing the site noticed the language stats:

Git was originally developed for the Linux kernel and is mainly for the open source community. I was interested to see JavaScript, the language of HTML 5, riding so high. PHP, C and C++ are lower than I would have guessed, Ruby and Python higher.

This comes with a health warning. I have taken the figures from the what you get if you browse the directory and drop down Programming Languages; but the total is only about 37,000, whereas Sourceforge hosts around 324,000 projects. I am not sure what accounts for the discrepancy; it could be that language is not specified for the other projects, or they are dormant, or some other reason. But I hope the proportions indicate something of value.

Github is madly trendy, and Sourceforge ancient, so this tells us something about how open source activity has shifted towards JavaScript, Ruby and Python, and away from Java, C/C++ and C#.

Of course the overall picture of programming language usage is quite different. For example, you can get some kind of clue about commercial activity from a job board like indeed.com, which currently has 77,457 US vacancies for Java, 22,413 for JavaScript, and only 5030 for Ruby.

Nevertheless, interesting to see what languages developers on Github are choosing to work with, and perhaps an indicator of what may be most in demand on the job boards a few years from now.

Finally, looking at these figures I cannot help thinking how short-sighted Microsoft was in abandoning IronPython and IronRuby back in 2010.